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