Hi,

> -----Original Message-----
> From: Dariusz Sosnowski <dsosnow...@nvidia.com>
> Sent: Saturday, April 26, 2025 3:49 AM
> To: Slava Ovsiienko <viachesl...@nvidia.com>; Bing Zhao
> <bi...@nvidia.com>; Ori Kam <or...@nvidia.com>; Suanming Mou
> <suanmi...@nvidia.com>; Matan Azrad <ma...@nvidia.com>
> Cc: dev@dpdk.org; sta...@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: sta...@dpdk.org
> 
> Signed-off-by: Dariusz Sosnowski <dsosnow...@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 <bi...@nvidia.com>

Thanks

Reply via email to