lkml.org 
[lkml]   [2021]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.11 107/775] net/mlx5e: Change interrupt moderation channel params also when channels are closed
    Date
    From: Maxim Mikityanskiy <maximmi@mellanox.com>

    [ Upstream commit 65ba8594a238c20e458b3d2d39d91067cbffd0b1 ]

    struct mlx5e_params contains fields ({rx,tx}_cq_moderation) that depend
    on two things: whether DIM is enabled and the state of a private flag
    (MLX5E_PFLAG_{RX,TX}_CQE_BASED_MODER). Whenever the DIM state changes,
    mlx5e_reset_{rx,tx}_moderation is called to update the fields, however,
    only if the channels are open. The flow where the channels are closed
    misses the required update of the fields. This commit moves the calls of
    mlx5e_reset_{rx,tx}_moderation, so that they run in both flows.

    Fixes: ebeaf084ad5c ("net/mlx5e: Properly set default values when disabling adaptive moderation")
    Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../ethernet/mellanox/mlx5/core/en_ethtool.c | 29 +++++++++----------
    1 file changed, 14 insertions(+), 15 deletions(-)

    diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
    index d7ff5fa45cb7d..8612c388db7d3 100644
    --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
    @@ -597,24 +597,9 @@ int mlx5e_ethtool_set_coalesce(struct mlx5e_priv *priv,
    tx_moder->pkts = coal->tx_max_coalesced_frames;
    new_channels.params.tx_dim_enabled = !!coal->use_adaptive_tx_coalesce;

    - if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
    - priv->channels.params = new_channels.params;
    - goto out;
    - }
    - /* we are opened */
    -
    reset_rx = !!coal->use_adaptive_rx_coalesce != priv->channels.params.rx_dim_enabled;
    reset_tx = !!coal->use_adaptive_tx_coalesce != priv->channels.params.tx_dim_enabled;

    - if (!reset_rx && !reset_tx) {
    - if (!coal->use_adaptive_rx_coalesce)
    - mlx5e_set_priv_channels_rx_coalesce(priv, coal);
    - if (!coal->use_adaptive_tx_coalesce)
    - mlx5e_set_priv_channels_tx_coalesce(priv, coal);
    - priv->channels.params = new_channels.params;
    - goto out;
    - }
    -
    if (reset_rx) {
    u8 mode = MLX5E_GET_PFLAG(&new_channels.params,
    MLX5E_PFLAG_RX_CQE_BASED_MODER);
    @@ -628,6 +613,20 @@ int mlx5e_ethtool_set_coalesce(struct mlx5e_priv *priv,
    mlx5e_reset_tx_moderation(&new_channels.params, mode);
    }

    + if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
    + priv->channels.params = new_channels.params;
    + goto out;
    + }
    +
    + if (!reset_rx && !reset_tx) {
    + if (!coal->use_adaptive_rx_coalesce)
    + mlx5e_set_priv_channels_rx_coalesce(priv, coal);
    + if (!coal->use_adaptive_tx_coalesce)
    + mlx5e_set_priv_channels_tx_coalesce(priv, coal);
    + priv->channels.params = new_channels.params;
    + goto out;
    + }
    +
    err = mlx5e_safe_switch_channels(priv, &new_channels, NULL, NULL);

    out:
    --
    2.27.0


    \
     
     \ /
      Last update: 2021-03-02 01:14    [W:2.658 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site