net/mlx5e: Fix wrong application of the LRO state
authorAya Levin <ayal@nvidia.com>
Wed, 8 Jun 2022 15:38:37 +0000 (18:38 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Mon, 22 Aug 2022 19:57:08 +0000 (12:57 -0700)
Driver caches packet merge type in mlx5e_params instance which must be
in perfect sync with the netdev_feature's bit.
Prior to this patch, in certain conditions (*) LRO state was set in
mlx5e_params, while netdev_feature's bit was off. Causing the LRO to
be applied on the RQs (HW level).

(*) This can happen only on profile init (mlx5e_build_nic_params()),
when RQ expect non-linear SKB and PCI is fast enough in comparison to
link width.

Solution: remove setting of packet merge type from
mlx5e_build_nic_params() as netdev features are not updated.

Fixes: 619a8f2a42f1 ("net/mlx5e: Use linear SKB in Striding RQ")
Signed-off-by: Aya Levin <ayal@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en_main.c

index d858667736a32c8cf0cbabea5f231f7d5f370a36..c65b6a2883d3eab18cdeb2705e635942fabe0650 100644 (file)
@@ -4769,14 +4769,6 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
        /* RQ */
        mlx5e_build_rq_params(mdev, params);
 
-       /* HW LRO */
-       if (MLX5_CAP_ETH(mdev, lro_cap) &&
-           params->rq_wq_type == MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ) {
-               /* No XSK params: checking the availability of striding RQ in general. */
-               if (!mlx5e_rx_mpwqe_is_linear_skb(mdev, params, NULL))
-                       params->packet_merge.type = slow_pci_heuristic(mdev) ?
-                               MLX5E_PACKET_MERGE_NONE : MLX5E_PACKET_MERGE_LRO;
-       }
        params->packet_merge.timeout = mlx5e_choose_lro_timeout(mdev, MLX5E_DEFAULT_LRO_TIMEOUT);
 
        /* CQ moderation params */