]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux
[linux.git] / drivers / net / ethernet / mellanox / mlx5 / core / en_ethtool.c
index 3bbccead2f63b103203dc8d43a7dd222e7047ce5..769c3c74bbcb88077ac76ea57e67c1c5ab72cc97 100644 (file)
@@ -695,13 +695,14 @@ static void get_speed_duplex(struct net_device *netdev,
                             u32 eth_proto_oper,
                             struct ethtool_link_ksettings *link_ksettings)
 {
+       struct mlx5e_priv *priv = netdev_priv(netdev);
        u32 speed = SPEED_UNKNOWN;
        u8 duplex = DUPLEX_UNKNOWN;
 
        if (!netif_carrier_ok(netdev))
                goto out;
 
-       speed = mlx5e_port_ptys2speed(eth_proto_oper);
+       speed = mlx5e_port_ptys2speed(priv->mdev, eth_proto_oper);
        if (!speed) {
                speed = SPEED_UNKNOWN;
                goto out;
@@ -885,7 +886,7 @@ int mlx5e_ethtool_set_link_ksettings(struct mlx5e_priv *priv,
                                     const struct ethtool_link_ksettings *link_ksettings)
 {
        struct mlx5_core_dev *mdev = priv->mdev;
-       u32 eth_proto_cap, eth_proto_admin;
+       struct mlx5e_port_eth_proto eproto;
        bool an_changes = false;
        u8 an_disable_admin;
        u8 an_disable_cap;
@@ -899,16 +900,16 @@ int mlx5e_ethtool_set_link_ksettings(struct mlx5e_priv *priv,
 
        link_modes = link_ksettings->base.autoneg == AUTONEG_ENABLE ?
                mlx5e_ethtool2ptys_adver_link(link_ksettings->link_modes.advertising) :
-               mlx5e_port_speed2linkmodes(speed);
+               mlx5e_port_speed2linkmodes(mdev, speed);
 
-       err = mlx5_query_port_proto_cap(mdev, &eth_proto_cap, MLX5_PTYS_EN);
+       err = mlx5_port_query_eth_proto(mdev, 1, false, &eproto);
        if (err) {
-               netdev_err(priv->netdev, "%s: query port eth proto cap failed: %d\n",
+               netdev_err(priv->netdev, "%s: query port eth proto failed: %d\n",
                           __func__, err);
                goto out;
        }
 
-       link_modes = link_modes & eth_proto_cap;
+       link_modes = link_modes & eproto.cap;
        if (!link_modes) {
                netdev_err(priv->netdev, "%s: Not supported link mode(s) requested",
                           __func__);
@@ -916,24 +917,17 @@ int mlx5e_ethtool_set_link_ksettings(struct mlx5e_priv *priv,
                goto out;
        }
 
-       err = mlx5_query_port_proto_admin(mdev, &eth_proto_admin, MLX5_PTYS_EN);
-       if (err) {
-               netdev_err(priv->netdev, "%s: query port eth proto admin failed: %d\n",
-                          __func__, err);
-               goto out;
-       }
-
-       mlx5_query_port_autoneg(mdev, MLX5_PTYS_EN, &an_status,
-                               &an_disable_cap, &an_disable_admin);
+       mlx5_port_query_eth_autoneg(mdev, &an_status, &an_disable_cap,
+                                   &an_disable_admin);
 
        an_disable = link_ksettings->base.autoneg == AUTONEG_DISABLE;
        an_changes = ((!an_disable && an_disable_admin) ||
                      (an_disable && !an_disable_admin));
 
-       if (!an_changes && link_modes == eth_proto_admin)
+       if (!an_changes && link_modes == eproto.admin)
                goto out;
 
-       mlx5_set_port_ptys(mdev, an_disable, link_modes, MLX5_PTYS_EN);
+       mlx5_port_set_eth_ptys(mdev, an_disable, link_modes, false);
        mlx5_toggle_port_link(mdev);
 
 out: