Hi, Thank you very much for your contribution.
Code looks good to me. Please see a small comment below. On Tue, Oct 28, 2025 at 11:01:44AM +0100, [email protected] wrote: > From: Adrian Schollmeyer <[email protected]> > > For shared Rx queues, equal MTU for all ports sharing queues is enforced > using mlx5_shared_rxq_match() to make sure, the memory allocated in the > Rx buffer is large enough. The check uses the MTU as reported by the > ports' private dev_data structs, which contain the MTU currently set for > the device. In case one port's MTU is altered after Rx queues are > allocated and then a second port joins the shared Rx queue with the old, > yet correct MTU, the check fails despite the fact that the Rx buffer > size is correct for both ports. > > This patch adds a new entry to the Rx queue control structure that > captures the MTU at the time the Rx buffer was allocated, since this is > the relevant information that needs to be checked when a port joins a > shared Rx queue. > > Fixes: 09c2555303be ("net/mlx5: support shared Rx queue") The offending patch was part of 21.11, so this fix is a candidate for backporting to previously released LTS versions. Could you send a v2 patch with "Cc: [email protected]" added after "Fixes" tag? When sending this change, could you also please send the patch directly to mlx5 maintainers as well? There's a script in DPDK repository which would add relevant people based on the changed files - devtools/get-maintainer.sh It's usage is described in here: https://doc.dpdk.org/guides/contributing/patches.html#sending-patches > > Signed-off-by: Adrian Schollmeyer <[email protected]> > --- > drivers/net/mlx5/mlx5_rx.h | 1 + > drivers/net/mlx5/mlx5_rxq.c | 6 +++++- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h > index 6380895502..58bc2c9f21 100644 > --- a/drivers/net/mlx5/mlx5_rx.h > +++ b/drivers/net/mlx5/mlx5_rx.h > @@ -169,6 +169,7 @@ struct __rte_cache_aligned mlx5_rxq_data { > /* RX queue control descriptor. */ > struct mlx5_rxq_ctrl { > struct mlx5_rxq_data rxq; /* Data path structure. */ > + uint16_t mtu; /* Original MTU that the queue was allocated with. */ > LIST_ENTRY(mlx5_rxq_ctrl) next; /* Pointer to the next element. */ > LIST_HEAD(priv, mlx5_rxq_priv) owners; /* Owner rxq list. */ > struct mlx5_rxq_obj *obj; /* Verbs/DevX elements. */ > diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c > index 5cf7d4971b..c652204ea8 100644 > --- a/drivers/net/mlx5/mlx5_rxq.c > +++ b/drivers/net/mlx5/mlx5_rxq.c > @@ -773,7 +773,7 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, > struct rte_eth_dev *dev, > dev->data->port_id, idx); > return false; > } > - if (priv->mtu != spriv->mtu) { > + if (priv->mtu != rxq_ctrl->mtu) { > DRV_LOG(ERR, "port %u queue index %u failed to join shared > group: mtu mismatch", > dev->data->port_id, idx); > return false; > @@ -1799,6 +1799,10 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, > uint16_t desc, > } > LIST_INIT(&tmpl->owners); > MLX5_ASSERT(n_seg && n_seg <= MLX5_MAX_RXQ_NSEG); > + /* > + * Save the original MTU to check against for shared rx queues. > + */ > + tmpl->mtu = dev->data->mtu; > /* > * Save the original segment configuration in the shared queue > * descriptor for the later check on the sibling queue creation. > -- > 2.34.1 > Best regards, Dariusz Sosnowski

