lkml.org 
[lkml]   [2018]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.15 157/168] net/mlx5e: Dont override vport admin link state in switchdev mode
    Date
    4.15-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jianbo Liu <jianbol@mellanox.com>


    The vport admin original link state will be re-applied after returning
    back to legacy mode, it is not right to change the admin link state value
    when in switchdev mode.

    Use direct vport commands to alter logical vport state in netdev
    representor open/close flows rather than the administrative eswitch API.

    Fixes: 20a1ea674783 ('net/mlx5e: Support VF vport link state control for SRIOV switchdev mode')
    Signed-off-by: Jianbo Liu <jianbol@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 11 ++++++-----
    1 file changed, 6 insertions(+), 5 deletions(-)

    --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
    @@ -611,7 +611,6 @@ static int mlx5e_rep_open(struct net_dev
    struct mlx5e_priv *priv = netdev_priv(dev);
    struct mlx5e_rep_priv *rpriv = priv->ppriv;
    struct mlx5_eswitch_rep *rep = rpriv->rep;
    - struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
    int err;

    mutex_lock(&priv->state_lock);
    @@ -619,8 +618,9 @@ static int mlx5e_rep_open(struct net_dev
    if (err)
    goto unlock;

    - if (!mlx5_eswitch_set_vport_state(esw, rep->vport,
    - MLX5_ESW_VPORT_ADMIN_STATE_UP))
    + if (!mlx5_modify_vport_admin_state(priv->mdev,
    + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
    + rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_UP))
    netif_carrier_on(dev);

    unlock:
    @@ -633,11 +633,12 @@ static int mlx5e_rep_close(struct net_de
    struct mlx5e_priv *priv = netdev_priv(dev);
    struct mlx5e_rep_priv *rpriv = priv->ppriv;
    struct mlx5_eswitch_rep *rep = rpriv->rep;
    - struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
    int ret;

    mutex_lock(&priv->state_lock);
    - (void)mlx5_eswitch_set_vport_state(esw, rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
    + mlx5_modify_vport_admin_state(priv->mdev,
    + MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
    + rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
    ret = mlx5e_close_locked(dev);
    mutex_unlock(&priv->state_lock);
    return ret;

    \
     
     \ /
      Last update: 2018-04-11 01:09    [W:2.810 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site