[dpdk-dev] [PATCH v3 07/11] net/virtio: support in-order Rx and Tx
Maxime Coquelin
maxime.coquelin at redhat.com
Thu Jun 28 17:08:31 CEST 2018
On 06/28/2018 11:52 PM, Marvin Liu wrote:
> 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 at intel.com>
>
Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
Thanks,
Maxime
More information about the dev
mailing list