[dpdk-stable] [PATCH] net/virtio: fix indirect descriptors reconnection
Maxime Coquelin
maxime.coquelin at redhat.com
Thu Sep 23 10:15:54 CEST 2021
Hi Xuan,
On 8/19/21 07:35, Xuan Ding wrote:
> Since packed indirect descriptors are added and initialized when
> initializing vring, the reconnection path also needs to be considered.
>
> Fixes: 381f39ebb78a ("net/virtio: fix packed ring indirect descricptors setup")
> Cc: stable at dpdk.org
> Cc: yong.liu at intel.com
>
> Signed-off-by: Xuan Ding <xuan.ding at intel.com>
> ---
> drivers/net/virtio/virtqueue.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/drivers/net/virtio/virtqueue.c b/drivers/net/virtio/virtqueue.c
> index 1f9af3c31b..47229f35c4 100644
> --- a/drivers/net/virtio/virtqueue.c
> +++ b/drivers/net/virtio/virtqueue.c
> @@ -208,6 +208,20 @@ virtqueue_txvq_reset_packed(struct virtqueue *vq)
> rte_pktmbuf_free(dxp->cookie);
> dxp->cookie = NULL;
> }
It makes me think we might save quite some bytes by not allocating
indirect descriptors when feature is not negotiated, but it might have
a cost in term of performance.
> +
> + struct virtio_tx_region *txr;
Don't mix declarations within code.
> + txr = txvq->virtio_net_hdr_mz->addr;
> + /* first indirect descriptor is always the tx header */
> + struct vring_packed_desc *start_dp =
> + txr[desc_idx].tx_packed_indir;
Ditto.
> + vring_desc_init_indirect_packed(start_dp,
> + RTE_DIM(txr[desc_idx].tx_packed_indir));
> + start_dp->addr = txvq->virtio_net_hdr_mem
> + + desc_idx * sizeof(*txr)
> + + offsetof(struct virtio_tx_region,
> + tx_hdr);
> + start_dp->len = vq->hw->vtnet_hdr_size;
> +
> }
>
> vring_desc_init_packed(vq, size);
>
Thanks,
Maxime
More information about the stable
mailing list