[PATCH] net/virtio: fix Tx queue 0 override by queue 128
Maxime Coquelin
maxime.coquelin at redhat.com
Wed Jan 26 14:21:31 CET 2022
On 12/2/21 14:50, Xueming Li wrote:
> Both Rx queue and Tx queue are VirtQ in virtio, VQ index is 256 for Tx
> queue 128. Uint8 type of TxQ VQ index overflows and overrides Tx queue 0
> data.
>
> This patch fixes VQ index type with uint16 type.
>
> Fixes: c1f86306a026 ("virtio: add new driver")
> Cc: stable at dpdk.org
>
> Signed-off-by: Xueming Li <xuemingl at nvidia.com>
> ---
> drivers/net/virtio/virtio_rxtx.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
> index 2e115ded023..f0eafd29dc1 100644
> --- a/drivers/net/virtio/virtio_rxtx.c
> +++ b/drivers/net/virtio/virtio_rxtx.c
> @@ -814,7 +814,7 @@ virtio_dev_tx_queue_setup(struct rte_eth_dev *dev,
> unsigned int socket_id __rte_unused,
> const struct rte_eth_txconf *tx_conf)
> {
> - uint8_t vq_idx = 2 * queue_idx + VTNET_SQ_TQ_QUEUE_IDX;
> + uint16_t vq_idx = 2 * queue_idx + VTNET_SQ_TQ_QUEUE_IDX;
> struct virtio_hw *hw = dev->data->dev_private;
> struct virtqueue *vq = hw->vqs[vq_idx];
> struct virtnet_tx *txvq;
> @@ -858,7 +858,7 @@ int
> virtio_dev_tx_queue_setup_finish(struct rte_eth_dev *dev,
> uint16_t queue_idx)
> {
> - uint8_t vq_idx = 2 * queue_idx + VTNET_SQ_TQ_QUEUE_IDX;
> + uint16_t vq_idx = 2 * queue_idx + VTNET_SQ_TQ_QUEUE_IDX;
> struct virtio_hw *hw = dev->data->dev_private;
> struct virtqueue *vq = hw->vqs[vq_idx];
>
Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
Thanks for the fix!
Maxime
More information about the stable
mailing list