]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
net/mlx5e: Do not reduce LRO WQE size when not using build_skb
authorTariq Toukan <tariqt@mellanox.com>
Wed, 22 Feb 2017 15:20:13 +0000 (17:20 +0200)
committerTim Gardner <tim.gardner@canonical.com>
Wed, 22 Mar 2017 14:02:34 +0000 (08:02 -0600)
BugLink: http://bugs.launchpad.net/bugs/1675032
[ Upstream commit 4078e637c12f1e0a74293f1ec9563f42bff14a03 ]

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/net/ethernet/mellanox/mlx5/core/en_main.c

index 119f99fdc2aa5676498249e725af82385e4fafeb..1451b58f755613b4e7b85f3a7ad31ab55741b5c8 100644 (file)
@@ -81,6 +81,7 @@ static bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev)
 static void mlx5e_set_rq_type_params(struct mlx5e_priv *priv, u8 rq_type)
 {
        priv->params.rq_wq_type = rq_type;
+       priv->params.lro_wqe_sz = MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ;
        switch (priv->params.rq_wq_type) {
        case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ:
                priv->params.log_rq_size = MLX5E_PARAMS_DEFAULT_LOG_RQ_SIZE_MPW;
@@ -93,6 +94,10 @@ static void mlx5e_set_rq_type_params(struct mlx5e_priv *priv, u8 rq_type)
                break;
        default: /* MLX5_WQ_TYPE_LINKED_LIST */
                priv->params.log_rq_size = MLX5E_PARAMS_DEFAULT_LOG_RQ_SIZE;
+
+               /* Extra room needed for build_skb */
+               priv->params.lro_wqe_sz -= MLX5_RX_HEADROOM +
+                       SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
        }
        priv->params.min_rx_wqes = mlx5_min_rx_wqes(priv->params.rq_wq_type,
                                               BIT(priv->params.log_rq_size));
@@ -3501,12 +3506,6 @@ static void mlx5e_build_nic_netdev_priv(struct mlx5_core_dev *mdev,
        mlx5e_build_default_indir_rqt(mdev, priv->params.indirection_rqt,
                                      MLX5E_INDIR_RQT_SIZE, profile->max_nch(mdev));
 
-       priv->params.lro_wqe_sz =
-               MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ -
-               /* Extra room needed for build_skb */
-               MLX5_RX_HEADROOM -
-               SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
-
        /* Initialize pflags */
        MLX5E_SET_PFLAG(priv, MLX5E_PFLAG_RX_CQE_BASED_MODER,
                        priv->params.rx_cq_period_mode == MLX5_CQ_PERIOD_MODE_START_FROM_CQE);