net/mlx5: forbid MPRQ restart
Checks
Commit Message
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@dpdk.org
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
---
drivers/net/mlx5/mlx5_rxq.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Comments
> -----Original Message-----
> From: Alexander Kozyrev <akozyrev@nvidia.com>
> Sent: Tuesday, July 4, 2023 12:22 AM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@nvidia.com>; Raslan Darawsheh
> <rasland@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>;
> stable@dpdk.org
> Subject: [PATCH] net/mlx5: forbid MPRQ restart
>
> 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@dpdk.org
>
> Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Hi,
> -----Original Message-----
> From: Alexander Kozyrev <akozyrev@nvidia.com>
> Sent: Tuesday, July 4, 2023 12:22 AM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@nvidia.com>; Raslan Darawsheh
> <rasland@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>;
> stable@dpdk.org
> Subject: [PATCH] net/mlx5: forbid MPRQ restart
>
> 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@dpdk.org
>
> Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
@@ -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;
}