]> git.droids-corp.org - dpdk.git/commitdiff
net/virtio: fix slots number when indirect feature on
authorMarvin Liu <yong.liu@intel.com>
Thu, 20 Jan 2022 12:22:18 +0000 (20:22 +0800)
committerMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 8 Feb 2022 11:13:22 +0000 (12:13 +0100)
Virtio driver only occupies one slot for enqueuing chained mbufs when
indirect feature is on. Required slots calculation should depend on
indirect feature status at the end.

Fixes: 0eaf7fc2fe8e ("net/virtio: separate AVX Rx/Tx")
Cc: stable@dpdk.org
Signed-off-by: Marvin Liu <yong.liu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
drivers/net/virtio/virtio_rxtx_packed.h

index d5c259a1f632597ab281bea06ea8382644c30bf9..536112983c1f1ff22af9d803d0a999faa4622fde 100644 (file)
@@ -125,13 +125,12 @@ virtqueue_enqueue_single_packed_vec(struct virtnet_tx *txvq,
         * any_layout => number of segments
         * default    => number of segments + 1
         */
-       slots = use_indirect ? 1 : (txm->nb_segs + !can_push);
        can_push = rte_mbuf_refcnt_read(txm) == 1 &&
                   RTE_MBUF_DIRECT(txm) &&
                   txm->nb_segs == 1 &&
                   rte_pktmbuf_headroom(txm) >= hdr_size;
 
-       slots = txm->nb_segs + !can_push;
+       slots = use_indirect ? 1 : (txm->nb_segs + !can_push);
        need = slots - vq->vq_free_cnt;
 
        /* Positive value indicates it need free vring descriptors */