diff options
author | Tariq Toukan <tariqt@mellanox.com> | 2017-02-22 10:20:13 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-02-23 10:43:09 -0500 |
commit | 4078e637c12f1e0a74293f1ec9563f42bff14a03 (patch) | |
tree | 599452d76624f14e4632c6e7522924b1db38a890 /drivers | |
parent | 6f08a22c5fb2b9aefb8ecd8496758e7a677c1fde (diff) |
net/mlx5e: Do not reduce LRO WQE size when not using build_skb
When rq_type is Striding RQ, no room of SKB_RESERVE is needed
as SKB allocation is not done via build_skb.
Fixes: e4b85508072b ("net/mlx5e: Slightly reduce hardware LRO size")
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index c24366868b39..0d58729b42ae 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c | |||
@@ -82,6 +82,7 @@ static bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev) | |||
82 | static void mlx5e_set_rq_type_params(struct mlx5e_priv *priv, u8 rq_type) | 82 | static void mlx5e_set_rq_type_params(struct mlx5e_priv *priv, u8 rq_type) |
83 | { | 83 | { |
84 | priv->params.rq_wq_type = rq_type; | 84 | priv->params.rq_wq_type = rq_type; |
85 | priv->params.lro_wqe_sz = MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ; | ||
85 | switch (priv->params.rq_wq_type) { | 86 | switch (priv->params.rq_wq_type) { |
86 | case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ: | 87 | case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ: |
87 | priv->params.log_rq_size = is_kdump_kernel() ? | 88 | priv->params.log_rq_size = is_kdump_kernel() ? |
@@ -98,6 +99,10 @@ static void mlx5e_set_rq_type_params(struct mlx5e_priv *priv, u8 rq_type) | |||
98 | priv->params.log_rq_size = is_kdump_kernel() ? | 99 | priv->params.log_rq_size = is_kdump_kernel() ? |
99 | MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE : | 100 | MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE : |
100 | MLX5E_PARAMS_DEFAULT_LOG_RQ_SIZE; | 101 | MLX5E_PARAMS_DEFAULT_LOG_RQ_SIZE; |
102 | |||
103 | /* Extra room needed for build_skb */ | ||
104 | priv->params.lro_wqe_sz -= MLX5_RX_HEADROOM + | ||
105 | SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); | ||
101 | } | 106 | } |
102 | priv->params.min_rx_wqes = mlx5_min_rx_wqes(priv->params.rq_wq_type, | 107 | priv->params.min_rx_wqes = mlx5_min_rx_wqes(priv->params.rq_wq_type, |
103 | BIT(priv->params.log_rq_size)); | 108 | BIT(priv->params.log_rq_size)); |
@@ -3547,12 +3552,6 @@ static void mlx5e_build_nic_netdev_priv(struct mlx5_core_dev *mdev, | |||
3547 | mlx5e_build_default_indir_rqt(mdev, priv->params.indirection_rqt, | 3552 | mlx5e_build_default_indir_rqt(mdev, priv->params.indirection_rqt, |
3548 | MLX5E_INDIR_RQT_SIZE, profile->max_nch(mdev)); | 3553 | MLX5E_INDIR_RQT_SIZE, profile->max_nch(mdev)); |
3549 | 3554 | ||
3550 | priv->params.lro_wqe_sz = | ||
3551 | MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ - | ||
3552 | /* Extra room needed for build_skb */ | ||
3553 | MLX5_RX_HEADROOM - | ||
3554 | SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); | ||
3555 | |||
3556 | /* Initialize pflags */ | 3555 | /* Initialize pflags */ |
3557 | MLX5E_SET_PFLAG(priv, MLX5E_PFLAG_RX_CQE_BASED_MODER, | 3556 | MLX5E_SET_PFLAG(priv, MLX5E_PFLAG_RX_CQE_BASED_MODER, |
3558 | priv->params.rx_cq_period_mode == MLX5_CQ_PERIOD_MODE_START_FROM_CQE); | 3557 | priv->params.rx_cq_period_mode == MLX5_CQ_PERIOD_MODE_START_FROM_CQE); |