|
@@ -681,7 +681,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
|
|
|
}
|
|
|
|
|
|
INIT_WORK(&rq->am.work, mlx5e_rx_am_work);
|
|
|
- rq->am.mode = params->rx_cq_period_mode;
|
|
|
+ rq->am.mode = params->rx_cq_moderation.cq_period_mode;
|
|
|
rq->page_cache.head = 0;
|
|
|
rq->page_cache.tail = 0;
|
|
|
|
|
@@ -1974,7 +1974,7 @@ static void mlx5e_build_rx_cq_param(struct mlx5e_priv *priv,
|
|
|
}
|
|
|
|
|
|
mlx5e_build_common_cq_param(priv, param);
|
|
|
- param->cq_period_mode = params->rx_cq_period_mode;
|
|
|
+ param->cq_period_mode = params->rx_cq_moderation.cq_period_mode;
|
|
|
}
|
|
|
|
|
|
static void mlx5e_build_tx_cq_param(struct mlx5e_priv *priv,
|
|
@@ -1986,8 +1986,7 @@ static void mlx5e_build_tx_cq_param(struct mlx5e_priv *priv,
|
|
|
MLX5_SET(cqc, cqc, log_cq_size, params->log_sq_size);
|
|
|
|
|
|
mlx5e_build_common_cq_param(priv, param);
|
|
|
-
|
|
|
- param->cq_period_mode = MLX5_CQ_PERIOD_MODE_START_FROM_EQE;
|
|
|
+ param->cq_period_mode = params->tx_cq_moderation.cq_period_mode;
|
|
|
}
|
|
|
|
|
|
static void mlx5e_build_ico_cq_param(struct mlx5e_priv *priv,
|
|
@@ -3987,14 +3986,32 @@ static bool hw_lro_heuristic(u32 link_speed, u32 pci_bw)
|
|
|
(pci_bw <= 16000) && (pci_bw < link_speed));
|
|
|
}
|
|
|
|
|
|
+void mlx5e_set_tx_cq_mode_params(struct mlx5e_params *params, u8 cq_period_mode)
|
|
|
+{
|
|
|
+ params->tx_cq_moderation.cq_period_mode = cq_period_mode;
|
|
|
+
|
|
|
+ params->tx_cq_moderation.pkts =
|
|
|
+ MLX5E_PARAMS_DEFAULT_TX_CQ_MODERATION_PKTS;
|
|
|
+ params->tx_cq_moderation.usec =
|
|
|
+ MLX5E_PARAMS_DEFAULT_TX_CQ_MODERATION_USEC;
|
|
|
+
|
|
|
+ if (cq_period_mode == MLX5_CQ_PERIOD_MODE_START_FROM_CQE)
|
|
|
+ params->tx_cq_moderation.usec =
|
|
|
+ MLX5E_PARAMS_DEFAULT_TX_CQ_MODERATION_USEC_FROM_CQE;
|
|
|
+
|
|
|
+ MLX5E_SET_PFLAG(params, MLX5E_PFLAG_TX_CQE_BASED_MODER,
|
|
|
+ params->tx_cq_moderation.cq_period_mode ==
|
|
|
+ MLX5_CQ_PERIOD_MODE_START_FROM_CQE);
|
|
|
+}
|
|
|
+
|
|
|
void mlx5e_set_rx_cq_mode_params(struct mlx5e_params *params, u8 cq_period_mode)
|
|
|
{
|
|
|
- params->rx_cq_period_mode = cq_period_mode;
|
|
|
+ params->rx_cq_moderation.cq_period_mode = cq_period_mode;
|
|
|
|
|
|
params->rx_cq_moderation.pkts =
|
|
|
MLX5E_PARAMS_DEFAULT_RX_CQ_MODERATION_PKTS;
|
|
|
params->rx_cq_moderation.usec =
|
|
|
- MLX5E_PARAMS_DEFAULT_RX_CQ_MODERATION_USEC;
|
|
|
+ MLX5E_PARAMS_DEFAULT_RX_CQ_MODERATION_USEC;
|
|
|
|
|
|
if (cq_period_mode == MLX5_CQ_PERIOD_MODE_START_FROM_CQE)
|
|
|
params->rx_cq_moderation.usec =
|
|
@@ -4002,10 +4019,11 @@ void mlx5e_set_rx_cq_mode_params(struct mlx5e_params *params, u8 cq_period_mode)
|
|
|
|
|
|
if (params->rx_am_enabled)
|
|
|
params->rx_cq_moderation =
|
|
|
- mlx5e_am_get_def_profile(params->rx_cq_period_mode);
|
|
|
+ mlx5e_am_get_def_profile(cq_period_mode);
|
|
|
|
|
|
MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_CQE_BASED_MODER,
|
|
|
- params->rx_cq_period_mode == MLX5_CQ_PERIOD_MODE_START_FROM_CQE);
|
|
|
+ params->rx_cq_moderation.cq_period_mode ==
|
|
|
+ MLX5_CQ_PERIOD_MODE_START_FROM_CQE);
|
|
|
}
|
|
|
|
|
|
u32 mlx5e_choose_lro_timeout(struct mlx5_core_dev *mdev, u32 wanted_timeout)
|
|
@@ -4065,9 +4083,7 @@ void mlx5e_build_nic_params(struct mlx5_core_dev *mdev,
|
|
|
MLX5_CQ_PERIOD_MODE_START_FROM_EQE;
|
|
|
params->rx_am_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
|
|
|
mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
|
|
|
-
|
|
|
- params->tx_cq_moderation.usec = MLX5E_PARAMS_DEFAULT_TX_CQ_MODERATION_USEC;
|
|
|
- params->tx_cq_moderation.pkts = MLX5E_PARAMS_DEFAULT_TX_CQ_MODERATION_PKTS;
|
|
|
+ mlx5e_set_tx_cq_mode_params(params, cq_period_mode);
|
|
|
|
|
|
/* TX inline */
|
|
|
params->tx_max_inline = mlx5e_get_max_inline_cap(mdev);
|