[PATCH] net/virtio: fix incorrect slots number when indirect feature on
Maxime Coquelin
maxime.coquelin at redhat.com
Tue Feb 1 09:53:45 CET 2022
On 1/20/22 13:22, Marvin Liu wrote:
> 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 at dpdk.org
>
> Signed-off-by: Marvin Liu <yong.liu at intel.com>
>
> diff --git a/drivers/net/virtio/virtio_rxtx_packed.h b/drivers/net/virtio/virtio_rxtx_packed.h
> index d5c259a1f6..536112983c 100644
> --- a/drivers/net/virtio/virtio_rxtx_packed.h
> +++ b/drivers/net/virtio/virtio_rxtx_packed.h
> @@ -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 */
Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
Thanks,
Maxime
More information about the stable
mailing list