numam-dpdk/drivers/net/virtio
Marvin Liu e5f456a98d net/virtio: support in-order Rx and Tx
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>
2018-07-03 01:35:58 +02:00
..
virtio_user net/virtio-user: add mrg-rxbuf and in-order vdev parameters 2018-07-03 01:35:58 +02:00
Makefile mk: add experimental tag check 2018-01-29 23:35:29 +01:00
meson.build net/virtio: add to meson build 2018-03-12 16:29:27 +01:00
rte_pmd_virtio_version.map virtio: move to drivers/net/ 2015-05-22 16:06:23 +02:00
virtio_ethdev.c ethdev: add new offload flag to keep CRC 2018-07-03 01:35:58 +02:00
virtio_ethdev.h net/virtio: support in-order Rx and Tx 2018-07-03 01:35:58 +02:00
virtio_logs.h net/virtio: implement dynamic logging 2018-01-16 18:47:49 +01:00
virtio_pci.c drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
virtio_pci.h net/virtio: add in-order feature bit definition 2018-07-03 01:35:58 +02:00
virtio_ring.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
virtio_rxtx_simple_neon.c ethdev: separate driver APIs 2018-01-22 01:26:49 +01:00
virtio_rxtx_simple_sse.c ethdev: separate driver APIs 2018-01-22 01:26:49 +01:00
virtio_rxtx_simple.c net/virtio: fix resuming port with Rx vector path 2018-02-13 18:57:59 +01:00
virtio_rxtx_simple.h net/virtio: fix resuming port with Rx vector path 2018-02-13 18:57:59 +01:00
virtio_rxtx.c net/virtio: support in-order Rx and Tx 2018-07-03 01:35:58 +02:00
virtio_rxtx.h net/virtio: fix resuming port with Rx vector path 2018-02-13 18:57:59 +01:00
virtio_user_ethdev.c net/virtio-user: add mrg-rxbuf and in-order vdev parameters 2018-07-03 01:35:58 +02:00
virtqueue.c net/virtio: free in-order descriptors before device start 2018-07-03 01:35:58 +02:00
virtqueue.h net/virtio: free in-order descriptors before device start 2018-07-03 01:35:58 +02:00