e5f456a98d
IN_ORDER Rx function depends on merge-able feature. Descriptors allocation and free will be done in bulk. Virtio dequeue logic: dequeue_burst_rx(burst mbufs) for (each mbuf b) { if (b need merge) { merge remained mbufs add merged mbuf to return mbufs list } else { add mbuf to return mbufs list } } if (last mbuf c need merge) { dequeue_burst_rx(required mbufs) merge last mbuf c } refill_avail_ring_bulk() update_avail_ring() return mbufs list IN_ORDER Tx function can support offloading features. Packets which matched "can_push" option will be handled by simple xmit function. Those packets can't match "can_push" will be handled by original xmit function with in-order flag. Virtio enqueue logic: xmit_cleanup(used descs) for (each xmit mbuf b) { if (b can inorder xmit) { add mbuf b to inorder burst list continue } else { xmit inorder burst list xmit mbuf b by original function } } if (inorder burst list not empty) { xmit inorder burst list } update_avail_ring() Signed-off-by: Marvin Liu <yong.liu@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
||
---|---|---|
.. | ||
virtio_user | ||
Makefile | ||
meson.build | ||
rte_pmd_virtio_version.map | ||
virtio_ethdev.c | ||
virtio_ethdev.h | ||
virtio_logs.h | ||
virtio_pci.c | ||
virtio_pci.h | ||
virtio_ring.h | ||
virtio_rxtx_simple_neon.c | ||
virtio_rxtx_simple_sse.c | ||
virtio_rxtx_simple.c | ||
virtio_rxtx_simple.h | ||
virtio_rxtx.c | ||
virtio_rxtx.h | ||
virtio_user_ethdev.c | ||
virtqueue.c | ||
virtqueue.h |