|
@@ -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);
|
|
|
|