net/mlx5e: Move port speed code from en_ethtool.c to en/port.c
authorHuy Nguyen <huyn@mellanox.com>
Thu, 22 Feb 2018 19:22:56 +0000 (13:22 -0600)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 24 May 2018 21:23:33 +0000 (14:23 -0700)
Move four below functions from en_ethtool.c to en/port.c. These
functions are used by both en_ethtool.c and en_main.c. Future code
can use these functions without ethtool link mode dependency.
  u32 mlx5e_port_ptys2speed(u32 eth_proto_oper);
  int mlx5e_port_linkspeed(struct mlx5_core_dev *mdev, u32 *speed);
  int mlx5e_port_max_linkspeed(struct mlx5_core_dev *mdev, u32 *speed);
  u32 mlx5e_port_speed2linkmodes(u32 speed);

Delete the speed field from table mlx5e_build_ptys2ethtool_map. This
table only keeps the mapping between the mlx5e link mode and
ethtool link mode. Add new table mlx5e_link_speed for translation
from mlx5e link mode to actual speed.

Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Reviewed-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/Makefile
drivers/net/ethernet/mellanox/mlx5/core/en.h
drivers/net/ethernet/mellanox/mlx5/core/en/Makefile [new file with mode: 0644]
drivers/net/ethernet/mellanox/mlx5/core/en/port.c [new file with mode: 0644]
drivers/net/ethernet/mellanox/mlx5/core/en/port.h [new file with mode: 0644]
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c

index a7135f5d5cf6976cfa034d1eb8ce9ab5b06db7b4..651cf364042011b6869197b2616d21bbbfee89ab 100644 (file)
@@ -15,7 +15,7 @@ mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o fpga/sdk.o \
 
 mlx5_core-$(CONFIG_MLX5_CORE_EN) += en_main.o en_common.o en_fs.o en_ethtool.o \
                en_tx.o en_rx.o en_dim.o en_txrx.o en_stats.o vxlan.o \
-               en_arfs.o en_fs_ethtool.o en_selftest.o
+               en_arfs.o en_fs_ethtool.o en_selftest.o en/port.o
 
 mlx5_core-$(CONFIG_MLX5_MPFS) += lib/mpfs.o
 
index bc91a7335c93dab73100f385aa64b881ba093cc5..d13a86a1d7022bf6eb9652d78dd64e4b9228bb9b 100644 (file)
@@ -932,8 +932,6 @@ void mlx5e_deactivate_priv_channels(struct mlx5e_priv *priv);
 
 void mlx5e_build_default_indir_rqt(u32 *indirection_rqt, int len,
                                   int num_channels);
-int mlx5e_get_max_linkspeed(struct mlx5_core_dev *mdev, u32 *speed);
-
 void mlx5e_set_tx_cq_mode_params(struct mlx5e_params *params,
                                 u8 cq_period_mode);
 void mlx5e_set_rx_cq_mode_params(struct mlx5e_params *params,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/en/Makefile
new file mode 100644 (file)
index 0000000..d8e1711
--- /dev/null
@@ -0,0 +1 @@
+subdir-ccflags-y += -I$(src)/..
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/port.c b/drivers/net/ethernet/mellanox/mlx5/core/en/port.c
new file mode 100644 (file)
index 0000000..9f04542
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2018, Mellanox Technologies. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include "port.h"
+
+/* speed in units of 1Mb */
+static const u32 mlx5e_link_speed[MLX5E_LINK_MODES_NUMBER] = {
+       [MLX5E_1000BASE_CX_SGMII] = 1000,
+       [MLX5E_1000BASE_KX]       = 1000,
+       [MLX5E_10GBASE_CX4]       = 10000,
+       [MLX5E_10GBASE_KX4]       = 10000,
+       [MLX5E_10GBASE_KR]        = 10000,
+       [MLX5E_20GBASE_KR2]       = 20000,
+       [MLX5E_40GBASE_CR4]       = 40000,
+       [MLX5E_40GBASE_KR4]       = 40000,
+       [MLX5E_56GBASE_R4]        = 56000,
+       [MLX5E_10GBASE_CR]        = 10000,
+       [MLX5E_10GBASE_SR]        = 10000,
+       [MLX5E_10GBASE_ER]        = 10000,
+       [MLX5E_40GBASE_SR4]       = 40000,
+       [MLX5E_40GBASE_LR4]       = 40000,
+       [MLX5E_50GBASE_SR2]       = 50000,
+       [MLX5E_100GBASE_CR4]      = 100000,
+       [MLX5E_100GBASE_SR4]      = 100000,
+       [MLX5E_100GBASE_KR4]      = 100000,
+       [MLX5E_100GBASE_LR4]      = 100000,
+       [MLX5E_100BASE_TX]        = 100,
+       [MLX5E_1000BASE_T]        = 1000,
+       [MLX5E_10GBASE_T]         = 10000,
+       [MLX5E_25GBASE_CR]        = 25000,
+       [MLX5E_25GBASE_KR]        = 25000,
+       [MLX5E_25GBASE_SR]        = 25000,
+       [MLX5E_50GBASE_CR2]       = 50000,
+       [MLX5E_50GBASE_KR2]       = 50000,
+};
+
+u32 mlx5e_port_ptys2speed(u32 eth_proto_oper)
+{
+       unsigned long temp = eth_proto_oper;
+       u32 speed = 0;
+       int i;
+
+       i = find_first_bit(&temp, MLX5E_LINK_MODES_NUMBER);
+       if (i < MLX5E_LINK_MODES_NUMBER)
+               speed = mlx5e_link_speed[i];
+
+       return speed;
+}
+
+int mlx5e_port_linkspeed(struct mlx5_core_dev *mdev, u32 *speed)
+{
+       u32 out[MLX5_ST_SZ_DW(ptys_reg)] = {};
+       u32 eth_proto_oper;
+       int err;
+
+       err = mlx5_query_port_ptys(mdev, out, sizeof(out), MLX5_PTYS_EN, 1);
+       if (err)
+               return err;
+
+       eth_proto_oper = MLX5_GET(ptys_reg, out, eth_proto_oper);
+       *speed = mlx5e_port_ptys2speed(eth_proto_oper);
+       if (!(*speed)) {
+               mlx5_core_warn(mdev, "cannot get port speed\n");
+               err = -EINVAL;
+       }
+
+       return err;
+}
+
+int mlx5e_port_max_linkspeed(struct mlx5_core_dev *mdev, u32 *speed)
+{
+       u32 max_speed = 0;
+       u32 proto_cap;
+       int err;
+       int i;
+
+       err = mlx5_query_port_proto_cap(mdev, &proto_cap, MLX5_PTYS_EN);
+       if (err)
+               return err;
+
+       for (i = 0; i < MLX5E_LINK_MODES_NUMBER; ++i)
+               if (proto_cap & MLX5E_PROT_MASK(i))
+                       max_speed = max(max_speed, mlx5e_link_speed[i]);
+
+       *speed = max_speed;
+       return 0;
+}
+
+u32 mlx5e_port_speed2linkmodes(u32 speed)
+{
+       u32 link_modes = 0;
+       int i;
+
+       for (i = 0; i < MLX5E_LINK_MODES_NUMBER; ++i) {
+               if (mlx5e_link_speed[i] == speed)
+                       link_modes |= MLX5E_PROT_MASK(i);
+       }
+
+       return link_modes;
+}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/port.h b/drivers/net/ethernet/mellanox/mlx5/core/en/port.h
new file mode 100644 (file)
index 0000000..7aae38e
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018, Mellanox Technologies. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef __MLX5E_EN_PORT_H
+#define __MLX5E_EN_PORT_H
+
+#include <linux/mlx5/driver.h>
+#include "en.h"
+
+u32 mlx5e_port_ptys2speed(u32 eth_proto_oper);
+int mlx5e_port_linkspeed(struct mlx5_core_dev *mdev, u32 *speed);
+int mlx5e_port_max_linkspeed(struct mlx5_core_dev *mdev, u32 *speed);
+u32 mlx5e_port_speed2linkmodes(u32 speed);
+#endif
index 2b786c4d3dabed29a4d7813c09dd9c0d41f49af7..42bd256e680d21b35e5861310959bc645e9ff28d 100644 (file)
@@ -31,6 +31,7 @@
  */
 
 #include "en.h"
+#include "en/port.h"
 
 void mlx5e_ethtool_get_drvinfo(struct mlx5e_priv *priv,
                               struct ethtool_drvinfo *drvinfo)
@@ -59,18 +60,16 @@ static void mlx5e_get_drvinfo(struct net_device *dev,
 struct ptys2ethtool_config {
        __ETHTOOL_DECLARE_LINK_MODE_MASK(supported);
        __ETHTOOL_DECLARE_LINK_MODE_MASK(advertised);
-       u32 speed;
 };
 
 static struct ptys2ethtool_config ptys2ethtool_table[MLX5E_LINK_MODES_NUMBER];
 
-#define MLX5_BUILD_PTYS2ETHTOOL_CONFIG(reg_, speed_, ...)               \
+#define MLX5_BUILD_PTYS2ETHTOOL_CONFIG(reg_, ...)                       \
        ({                                                              \
                struct ptys2ethtool_config *cfg;                        \
                const unsigned int modes[] = { __VA_ARGS__ };           \
                unsigned int i;                                         \
                cfg = &ptys2ethtool_table[reg_];                        \
-               cfg->speed = speed_;                                    \
                bitmap_zero(cfg->supported,                             \
                            __ETHTOOL_LINK_MODE_MASK_NBITS);            \
                bitmap_zero(cfg->advertised,                            \
@@ -83,55 +82,55 @@ static struct ptys2ethtool_config ptys2ethtool_table[MLX5E_LINK_MODES_NUMBER];
 
 void mlx5e_build_ptys2ethtool_map(void)
 {
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_1000BASE_CX_SGMII, SPEED_1000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_1000BASE_CX_SGMII,
                                       ETHTOOL_LINK_MODE_1000baseKX_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_1000BASE_KX, SPEED_1000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_1000BASE_KX,
                                       ETHTOOL_LINK_MODE_1000baseKX_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_CX4, SPEED_10000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_CX4,
                                       ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_KX4, SPEED_10000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_KX4,
                                       ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_KR, SPEED_10000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_KR,
                                       ETHTOOL_LINK_MODE_10000baseKR_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_20GBASE_KR2, SPEED_20000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_20GBASE_KR2,
                                       ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_CR4, SPEED_40000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_CR4,
                                       ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_KR4, SPEED_40000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_KR4,
                                       ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_56GBASE_R4, SPEED_56000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_56GBASE_R4,
                                       ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_CR, SPEED_10000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_CR,
                                       ETHTOOL_LINK_MODE_10000baseKR_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_SR, SPEED_10000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_SR,
                                       ETHTOOL_LINK_MODE_10000baseKR_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_ER, SPEED_10000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_ER,
                                       ETHTOOL_LINK_MODE_10000baseKR_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_SR4, SPEED_40000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_SR4,
                                       ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_LR4, SPEED_40000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_40GBASE_LR4,
                                       ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_50GBASE_SR2, SPEED_50000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_50GBASE_SR2,
                                       ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_CR4, SPEED_100000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_CR4,
                                       ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_SR4, SPEED_100000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_SR4,
                                       ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_KR4, SPEED_100000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_KR4,
                                       ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_LR4, SPEED_100000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GBASE_LR4,
                                       ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_T, SPEED_10000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_10GBASE_T,
                                       ETHTOOL_LINK_MODE_10000baseT_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_25GBASE_CR, SPEED_25000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_25GBASE_CR,
                                       ETHTOOL_LINK_MODE_25000baseCR_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_25GBASE_KR, SPEED_25000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_25GBASE_KR,
                                       ETHTOOL_LINK_MODE_25000baseKR_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_25GBASE_SR, SPEED_25000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_25GBASE_SR,
                                       ETHTOOL_LINK_MODE_25000baseSR_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_50GBASE_CR2, SPEED_50000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_50GBASE_CR2,
                                       ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT);
-       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_50GBASE_KR2, SPEED_50000,
+       MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_50GBASE_KR2,
                                       ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT);
 }
 
@@ -617,43 +616,24 @@ static void ptys2ethtool_supported_advertised_port(struct ethtool_link_ksettings
        }
 }
 
-int mlx5e_get_max_linkspeed(struct mlx5_core_dev *mdev, u32 *speed)
-{
-       u32 max_speed = 0;
-       u32 proto_cap;
-       int err;
-       int i;
-
-       err = mlx5_query_port_proto_cap(mdev, &proto_cap, MLX5_PTYS_EN);
-       if (err)
-               return err;
-
-       for (i = 0; i < MLX5E_LINK_MODES_NUMBER; ++i)
-               if (proto_cap & MLX5E_PROT_MASK(i))
-                       max_speed = max(max_speed, ptys2ethtool_table[i].speed);
-
-       *speed = max_speed;
-       return 0;
-}
-
 static void get_speed_duplex(struct net_device *netdev,
                             u32 eth_proto_oper,
                             struct ethtool_link_ksettings *link_ksettings)
 {
-       int i;
        u32 speed = SPEED_UNKNOWN;
        u8 duplex = DUPLEX_UNKNOWN;
 
        if (!netif_carrier_ok(netdev))
                goto out;
 
-       for (i = 0; i < MLX5E_LINK_MODES_NUMBER; ++i) {
-               if (eth_proto_oper & MLX5E_PROT_MASK(i)) {
-                       speed = ptys2ethtool_table[i].speed;
-                       duplex = DUPLEX_FULL;
-                       break;
-               }
+       speed = mlx5e_port_ptys2speed(eth_proto_oper);
+       if (!speed) {
+               speed = SPEED_UNKNOWN;
+               goto out;
        }
+
+       duplex = DUPLEX_FULL;
+
 out:
        link_ksettings->base.speed = speed;
        link_ksettings->base.duplex = duplex;
@@ -811,18 +791,6 @@ static u32 mlx5e_ethtool2ptys_adver_link(const unsigned long *link_modes)
        return ptys_modes;
 }
 
-static u32 mlx5e_ethtool2ptys_speed_link(u32 speed)
-{
-       u32 i, speed_links = 0;
-
-       for (i = 0; i < MLX5E_LINK_MODES_NUMBER; ++i) {
-               if (ptys2ethtool_table[i].speed == speed)
-                       speed_links |= MLX5E_PROT_MASK(i);
-       }
-
-       return speed_links;
-}
-
 static int mlx5e_set_link_ksettings(struct net_device *netdev,
                                    const struct ethtool_link_ksettings *link_ksettings)
 {
@@ -842,7 +810,7 @@ static int mlx5e_set_link_ksettings(struct net_device *netdev,
 
        link_modes = link_ksettings->base.autoneg == AUTONEG_ENABLE ?
                mlx5e_ethtool2ptys_adver_link(link_ksettings->link_modes.advertising) :
-               mlx5e_ethtool2ptys_speed_link(speed);
+               mlx5e_port_speed2linkmodes(speed);
 
        err = mlx5_query_port_proto_cap(mdev, &eth_proto_cap, MLX5_PTYS_EN);
        if (err) {
index b5a7580b12fe60c1c5d97e1b5510ee75d5f0dc5a..cee44c21766c5e7dcdb2c2152f8340223c83e54a 100644 (file)
@@ -46,6 +46,7 @@
 #include "accel/ipsec.h"
 #include "accel/tls.h"
 #include "vxlan.h"
+#include "en/port.h"
 
 struct mlx5e_rq_param {
        u32                     rqc[MLX5_ST_SZ_DW(rqc)];
@@ -4082,7 +4083,7 @@ static bool slow_pci_heuristic(struct mlx5_core_dev *mdev)
        u32 link_speed = 0;
        u32 pci_bw = 0;
 
-       mlx5e_get_max_linkspeed(mdev, &link_speed);
+       mlx5e_port_max_linkspeed(mdev, &link_speed);
        pci_bw = pcie_bandwidth_available(mdev->pdev, NULL, NULL, NULL);
        mlx5_core_dbg_once(mdev, "Max link speed = %d, PCI BW = %d\n",
                           link_speed, pci_bw);
index 674f1d7d273785ad6ba72fbee3404738982bd89d..a9c96fe8e4fe3c1751def6685c00e30e149c0d5b 100644 (file)
@@ -52,6 +52,7 @@
 #include "eswitch.h"
 #include "vxlan.h"
 #include "fs_core.h"
+#include "en/port.h"
 
 struct mlx5_nic_flow_attr {
        u32 action;
@@ -613,7 +614,7 @@ static int mlx5e_hairpin_flow_add(struct mlx5e_priv *priv,
 
        params.q_counter = priv->q_counter;
        /* set hairpin pair per each 50Gbs share of the link */
-       mlx5e_get_max_linkspeed(priv->mdev, &link_speed);
+       mlx5e_port_max_linkspeed(priv->mdev, &link_speed);
        link_speed = max_t(u32, link_speed, 50000);
        link_speed64 = link_speed;
        do_div(link_speed64, 50000);