]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
mlxsw: Move devlink_port_attrs_set() call before register
authorJiri Pirko <jiri@mellanox.com>
Sun, 24 Mar 2019 10:14:31 +0000 (11:14 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 24 Mar 2019 18:55:31 +0000 (14:55 -0400)
Since attrs are static during the existence of devlink port, set the
before registration of the port.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/core.c
drivers/net/ethernet/mellanox/mlxsw/core.h
drivers/net/ethernet/mellanox/mlxsw/minimal.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mellanox/mlxsw/switchib.c
drivers/net/ethernet/mellanox/mlxsw/switchx2.c

index d23d53c0e2842bc0e28a179d3ef6457a3369cee7..e70bb673eeecf35327ecf321517ba87a51781dad 100644 (file)
@@ -1718,7 +1718,9 @@ u64 mlxsw_core_res_get(struct mlxsw_core *mlxsw_core,
 }
 EXPORT_SYMBOL(mlxsw_core_res_get);
 
-int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port)
+int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
+                        u32 port_number, bool split,
+                        u32 split_port_subnumber)
 {
        struct devlink *devlink = priv_to_devlink(mlxsw_core);
        struct mlxsw_core_port *mlxsw_core_port =
@@ -1727,6 +1729,8 @@ int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port)
        int err;
 
        mlxsw_core_port->local_port = local_port;
+       devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL,
+                              port_number, split, split_port_subnumber);
        err = devlink_port_register(devlink, devlink_port, local_port);
        if (err)
                memset(mlxsw_core_port, 0, sizeof(*mlxsw_core_port));
@@ -1746,17 +1750,13 @@ void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port)
 EXPORT_SYMBOL(mlxsw_core_port_fini);
 
 void mlxsw_core_port_eth_set(struct mlxsw_core *mlxsw_core, u8 local_port,
-                            void *port_driver_priv, struct net_device *dev,
-                            u32 port_number, bool split,
-                            u32 split_port_subnumber)
+                            void *port_driver_priv, struct net_device *dev)
 {
        struct mlxsw_core_port *mlxsw_core_port =
                                        &mlxsw_core->ports[local_port];
        struct devlink_port *devlink_port = &mlxsw_core_port->devlink_port;
 
        mlxsw_core_port->port_driver_priv = port_driver_priv;
-       devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL,
-                              port_number, split, split_port_subnumber);
        devlink_port_type_eth_set(devlink_port, dev);
 }
 EXPORT_SYMBOL(mlxsw_core_port_eth_set);
index 8ec53f027575389b0cf38d5b8f4b123567e9acb2..74e95e943b242c0f69978c79900d467b600e033b 100644 (file)
@@ -164,12 +164,12 @@ void mlxsw_core_lag_mapping_clear(struct mlxsw_core *mlxsw_core,
                                  u16 lag_id, u8 local_port);
 
 void *mlxsw_core_port_driver_priv(struct mlxsw_core_port *mlxsw_core_port);
-int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port);
+int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
+                        u32 port_number, bool split,
+                        u32 split_port_subnumber);
 void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port);
 void mlxsw_core_port_eth_set(struct mlxsw_core *mlxsw_core, u8 local_port,
-                            void *port_driver_priv, struct net_device *dev,
-                            u32 port_number, bool split,
-                            u32 split_port_subnumber);
+                            void *port_driver_priv, struct net_device *dev);
 void mlxsw_core_port_ib_set(struct mlxsw_core *mlxsw_core, u8 local_port,
                            void *port_driver_priv);
 void mlxsw_core_port_clear(struct mlxsw_core *mlxsw_core, u8 local_port,
index 00c390024350d9b47570ec718e51c78faa4b6cb4..0ee1656609f53284e33817104480a8a80d0436a7 100644 (file)
@@ -150,7 +150,8 @@ mlxsw_m_port_create(struct mlxsw_m *mlxsw_m, u8 local_port, u8 module)
        struct net_device *dev;
        int err;
 
-       err = mlxsw_core_port_init(mlxsw_m->core, local_port);
+       err = mlxsw_core_port_init(mlxsw_m->core, local_port,
+                                  module + 1, false, 0);
        if (err) {
                dev_err(mlxsw_m->bus_info->dev, "Port %d: Failed to init core port\n",
                        local_port);
@@ -190,7 +191,7 @@ mlxsw_m_port_create(struct mlxsw_m *mlxsw_m, u8 local_port, u8 module)
        }
 
        mlxsw_core_port_eth_set(mlxsw_m->core, mlxsw_m_port->local_port,
-                               mlxsw_m_port, dev, module + 1, false, 0);
+                               mlxsw_m_port, dev);
 
        return 0;
 
index 9eb63300c1d3a712d6377ea2835c5d64f2b32678..eaf86c4c2f6c9313121598000ef8c7031d0b30ed 100644 (file)
@@ -3391,7 +3391,8 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u8 local_port,
        struct net_device *dev;
        int err;
 
-       err = mlxsw_core_port_init(mlxsw_sp->core, local_port);
+       err = mlxsw_core_port_init(mlxsw_sp->core, local_port,
+                                  module + 1, split, lane / width);
        if (err) {
                dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to init core port\n",
                        local_port);
@@ -3573,8 +3574,7 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u8 local_port,
        }
 
        mlxsw_core_port_eth_set(mlxsw_sp->core, mlxsw_sp_port->local_port,
-                               mlxsw_sp_port, dev, module + 1,
-                               mlxsw_sp_port->split, lane / width);
+                               mlxsw_sp_port, dev);
        mlxsw_core_schedule_dw(&mlxsw_sp_port->periodic_hw_stats.update_dw, 0);
        return 0;
 
index bcf2e79a21c853b631c38c07f4f12526459fdebe..e1e7e0dd808d5094bcf246c06b55f38a7570316d 100644 (file)
@@ -267,7 +267,8 @@ static int mlxsw_sib_port_create(struct mlxsw_sib *mlxsw_sib, u8 local_port,
 {
        int err;
 
-       err = mlxsw_core_port_init(mlxsw_sib->core, local_port);
+       err = mlxsw_core_port_init(mlxsw_sib->core, local_port,
+                                  module + 1, false, 0);
        if (err) {
                dev_err(mlxsw_sib->bus_info->dev, "Port %d: Failed to init core port\n",
                        local_port);
index 533fe6235b7c8d65a1fafc684b570479e4023b6a..568883fc40df8f0b8939152da5df396121a322de 100644 (file)
@@ -1102,7 +1102,7 @@ static int __mlxsw_sx_port_eth_create(struct mlxsw_sx *mlxsw_sx, u8 local_port,
        }
 
        mlxsw_core_port_eth_set(mlxsw_sx->core, mlxsw_sx_port->local_port,
-                               mlxsw_sx_port, dev, module + 1, false, 0);
+                               mlxsw_sx_port, dev);
        mlxsw_sx->ports[local_port] = mlxsw_sx_port;
        return 0;
 
@@ -1127,7 +1127,8 @@ static int mlxsw_sx_port_eth_create(struct mlxsw_sx *mlxsw_sx, u8 local_port,
 {
        int err;
 
-       err = mlxsw_core_port_init(mlxsw_sx->core, local_port);
+       err = mlxsw_core_port_init(mlxsw_sx->core, local_port,
+                                  module + 1, false, 0);
        if (err) {
                dev_err(mlxsw_sx->bus_info->dev, "Port %d: Failed to init core port\n",
                        local_port);