| From 04208115fed9da15950053dac141246ff117d363 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 12 Apr 2022 18:37:03 +0300 |
| Subject: net/mlx5e: Properly block LRO when XDP is enabled |
| |
| From: Maxim Mikityanskiy <maximmi@nvidia.com> |
| |
| [ Upstream commit cf6e34c8c22fba66bd21244b95ea47e235f68974 ] |
| |
| LRO is incompatible and mutually exclusive with XDP. However, the needed |
| checks are only made when enabling XDP. If LRO is enabled when XDP is |
| already active, the command will succeed, and XDP will be skipped in the |
| data path, although still enabled. |
| |
| This commit fixes the bug by checking the XDP status in |
| mlx5e_fix_features and disabling LRO if XDP is enabled. |
| |
| Fixes: 86994156c736 ("net/mlx5e: XDP fast RX drop bpf programs support") |
| Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com> |
| Reviewed-by: Tariq Toukan <tariqt@nvidia.com> |
| Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c |
| index 2465165cbea7..73291051808f 100644 |
| --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c |
| +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c |
| @@ -3980,6 +3980,13 @@ static netdev_features_t mlx5e_fix_features(struct net_device *netdev, |
| } |
| } |
| |
| + if (params->xdp_prog) { |
| + if (features & NETIF_F_LRO) { |
| + netdev_warn(netdev, "LRO is incompatible with XDP\n"); |
| + features &= ~NETIF_F_LRO; |
| + } |
| + } |
| + |
| if (MLX5E_GET_PFLAG(params, MLX5E_PFLAG_RX_CQE_COMPRESS)) { |
| features &= ~NETIF_F_RXHASH; |
| if (netdev->features & NETIF_F_RXHASH) |
| -- |
| 2.35.1 |
| |