From: Tariq Toukan <tar...@mellanox.com>

Prefer the linear SKB configuration of Legacy RQ over the
non-linear one of Striding RQ.

This implies that ConnectX-4 LX now uses legacy RQ by default,
as it does not support the linear configuration of Striding RQ.

Signed-off-by: Tariq Toukan <tar...@mellanox.com>
Signed-off-by: Saeed Mahameed <sae...@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c 
b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 2c634e50d051..333d4ed52b94 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -4405,9 +4405,16 @@ void mlx5e_build_nic_params(struct mlx5_core_dev *mdev,
        MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_CQE_COMPRESS, 
params->rx_cqe_compress_def);
 
        /* RQ */
-       if (mlx5e_striding_rq_possible(mdev, params))
-               MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_STRIDING_RQ,
-                               !slow_pci_heuristic(mdev));
+       /* Prefer Striding RQ, unless any of the following holds:
+        * - Striding RQ configuration is not possible/supported.
+        * - Slow PCI heuristic.
+        * - Legacy RQ would use linear SKB while Striding RQ would use 
non-linear.
+        */
+       if (!slow_pci_heuristic(mdev) &&
+           mlx5e_striding_rq_possible(mdev, params) &&
+           (mlx5e_rx_mpwqe_is_linear_skb(mdev, params) ||
+            !mlx5e_rx_is_linear_skb(mdev, params)))
+               MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_STRIDING_RQ, true);
        mlx5e_set_rq_type(mdev, params);
        mlx5e_init_rq_type_params(mdev, params);
 
-- 
2.17.0

Reply via email to