[PATCH] net/mlx5: forbid MPRQ restart
Alexander Kozyrev
akozyrev at nvidia.com
Mon Jul 3 23:22:24 CEST 2023
The queue restart is only supported by the non-vectorized
single-packet receive queue today. Restarting MPRQ will
result in corrupted packets because of CQE and WQE mismatch.
Prevent this by not allowing the MPRQ Rx queue stop.
Fixes: 161d103b23 ("net/mlx5: add queue start and stop")
Cc: stable at dpdk.org
Signed-off-by: Alexander Kozyrev <akozyrev at nvidia.com>
---
drivers/net/mlx5/mlx5_rxq.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index ad8fd13cbe..b314c0482b 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -531,12 +531,12 @@ mlx5_rx_queue_stop(struct rte_eth_dev *dev, uint16_t idx)
* synchronized, that might be broken on RQ restart
* and cause Rx malfunction, so queue stopping is
* not supported if vectorized Rx burst is engaged.
- * The routine pointer depends on the process
- * type, should perform check there.
+ * The routine pointer depends on the process type,
+ * should perform check there. MPRQ is not supported as well.
*/
- if (pkt_burst == mlx5_rx_burst_vec) {
- DRV_LOG(ERR, "Rx queue stop is not supported "
- "for vectorized Rx");
+ if (pkt_burst != mlx5_rx_burst) {
+ DRV_LOG(ERR, "Rx queue stop is only supported "
+ "for non-vectorized single-packet Rx");
rte_errno = EINVAL;
return -EINVAL;
}
--
2.18.2
More information about the stable
mailing list