| 1040 | } |
| 1041 | |
| 1042 | static __rte_always_inline void |
| 1043 | sync_virtio_xmit(struct vhost_dev *dst_vdev, struct vhost_dev *src_vdev, |
| 1044 | struct rte_mbuf *m) |
| 1045 | { |
| 1046 | uint16_t ret; |
| 1047 | |
| 1048 | if (builtin_net_driver) { |
| 1049 | ret = vs_enqueue_pkts(dst_vdev, VIRTIO_RXQ, &m, 1); |
| 1050 | } else { |
| 1051 | ret = rte_vhost_enqueue_burst(dst_vdev->vid, VIRTIO_RXQ, &m, 1); |
| 1052 | } |
| 1053 | |
| 1054 | if (enable_stats) { |
| 1055 | __atomic_fetch_add(&dst_vdev->stats.rx_total_atomic, 1, |
| 1056 | __ATOMIC_SEQ_CST); |
| 1057 | __atomic_fetch_add(&dst_vdev->stats.rx_atomic, ret, |
| 1058 | __ATOMIC_SEQ_CST); |
| 1059 | src_vdev->stats.tx_total++; |
| 1060 | src_vdev->stats.tx += ret; |
| 1061 | } |
| 1062 | } |
| 1063 | |
| 1064 | static __rte_always_inline void |
| 1065 | drain_vhost(struct vhost_dev *vdev) |
no test coverage detected