[PATCH] net/mlx5: fix VLAN stripping on hairpin queues
Bing Zhao
bingz at nvidia.com
Tue May 27 18:09:13 CEST 2025
Hi,
> -----Original Message-----
> From: Dariusz Sosnowski <dsosnowski at nvidia.com>
> Sent: Saturday, April 26, 2025 3:49 AM
> To: Slava Ovsiienko <viacheslavo at nvidia.com>; Bing Zhao
> <bingz at nvidia.com>; Ori Kam <orika at nvidia.com>; Suanming Mou
> <suanmingm at nvidia.com>; Matan Azrad <matan at nvidia.com>
> Cc: dev at dpdk.org; stable at dpdk.org
> Subject: [PATCH] net/mlx5: fix VLAN stripping on hairpin queues
>
> Rx hairpin queues support VLAN stripping, but if port was started and
> application attempted to configure stripping on hairpin queue, segfault
> was triggered because of NULL dereference.
> Underlying function, which was updating the RQ was passing wrong object
> handle for hairpin queues.
> This patch fixes that.
>
> Fixes: e79c9be91515 ("net/mlx5: support Rx hairpin queues")
> Cc: stable at dpdk.org
>
> Signed-off-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
> ---
> drivers/net/mlx5/mlx5_devx.c | 2 ++
> drivers/net/mlx5/mlx5_vlan.c | 2 +-
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
> index a12891a983..ed1826a612 100644
> --- a/drivers/net/mlx5/mlx5_devx.c
> +++ b/drivers/net/mlx5/mlx5_devx.c
> @@ -88,6 +88,8 @@ mlx5_rxq_obj_modify_rq_vlan_strip(struct mlx5_rxq_priv
> *rxq, int on)
> rq_attr.state = MLX5_RQC_STATE_RDY;
> rq_attr.vsd = (on ? 0 : 1);
> rq_attr.modify_bitmask = MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_VSD;
> + if (rxq->ctrl->is_hairpin)
> + return mlx5_devx_cmd_modify_rq(rxq->ctrl->obj->rq, &rq_attr);
> return mlx5_devx_cmd_modify_rq(rxq->devx_rq.rq, &rq_attr); }
>
> diff --git a/drivers/net/mlx5/mlx5_vlan.c b/drivers/net/mlx5/mlx5_vlan.c
> index 43a314a679..7c7ac78dfe 100644
> --- a/drivers/net/mlx5/mlx5_vlan.c
> +++ b/drivers/net/mlx5/mlx5_vlan.c
> @@ -107,7 +107,7 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev,
> uint16_t queue, int on)
> dev->data->port_id, queue);
> return;
> }
> - DRV_LOG(DEBUG, "port %u set VLAN stripping offloads %d for
> port %uqueue %d",
> + DRV_LOG(DEBUG, "port %u set VLAN stripping offloads %d for port %u
> +queue %d",
> dev->data->port_id, on, rxq_data->port_id, queue);
> if (rxq->ctrl->obj == NULL) {
> /* Update related bits in RX queue. */
> --
> 2.39.5
Acked-by: Bing Zhao <bingz at nvidia.com>
Thanks
More information about the dev
mailing list