aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2016-04-08 13:11:23 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-08 15:38:42 -0400
commitb2f10571b96414986f7293b06847d202f2d1d0ca (patch)
tree300bf046d1618548ade37fa664027a80f50c1858 /drivers/net/ethernet
parent307c2431abf0974996356c13b67432f4b35e5f2f (diff)
mlxsw: Do not pass around driver_priv directly
Instead of that, pass mlxsw_core and use a helper to get driver priv from driver code. Looks much cleaner that way. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/core.c19
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/core.h11
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.c17
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/switchx2.c8
4 files changed, 31 insertions, 24 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
index 39161fb91ec1..3958195526d1 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
@@ -114,6 +114,12 @@ struct mlxsw_core {
114 /* driver_priv has to be always the last item */ 114 /* driver_priv has to be always the last item */
115}; 115};
116 116
117void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core)
118{
119 return mlxsw_core->driver_priv;
120}
121EXPORT_SYMBOL(mlxsw_core_driver_priv);
122
117struct mlxsw_rx_listener_item { 123struct mlxsw_rx_listener_item {
118 struct list_head list; 124 struct list_head list;
119 struct mlxsw_rx_listener rxl; 125 struct mlxsw_rx_listener rxl;
@@ -795,8 +801,7 @@ static int mlxsw_devlink_port_split(struct devlink *devlink,
795 return -EINVAL; 801 return -EINVAL;
796 if (!mlxsw_core->driver->port_split) 802 if (!mlxsw_core->driver->port_split)
797 return -EOPNOTSUPP; 803 return -EOPNOTSUPP;
798 return mlxsw_core->driver->port_split(mlxsw_core->driver_priv, 804 return mlxsw_core->driver->port_split(mlxsw_core, port_index, count);
799 port_index, count);
800} 805}
801 806
802static int mlxsw_devlink_port_unsplit(struct devlink *devlink, 807static int mlxsw_devlink_port_unsplit(struct devlink *devlink,
@@ -808,8 +813,7 @@ static int mlxsw_devlink_port_unsplit(struct devlink *devlink,
808 return -EINVAL; 813 return -EINVAL;
809 if (!mlxsw_core->driver->port_unsplit) 814 if (!mlxsw_core->driver->port_unsplit)
810 return -EOPNOTSUPP; 815 return -EOPNOTSUPP;
811 return mlxsw_core->driver->port_unsplit(mlxsw_core->driver_priv, 816 return mlxsw_core->driver->port_unsplit(mlxsw_core, port_index);
812 port_index);
813} 817}
814 818
815static const struct devlink_ops mlxsw_devlink_ops = { 819static const struct devlink_ops mlxsw_devlink_ops = {
@@ -880,8 +884,7 @@ int mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
880 if (err) 884 if (err)
881 goto err_devlink_register; 885 goto err_devlink_register;
882 886
883 err = mlxsw_driver->init(mlxsw_core->driver_priv, mlxsw_core, 887 err = mlxsw_driver->init(mlxsw_core, mlxsw_bus_info);
884 mlxsw_bus_info);
885 if (err) 888 if (err)
886 goto err_driver_init; 889 goto err_driver_init;
887 890
@@ -892,7 +895,7 @@ int mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
892 return 0; 895 return 0;
893 896
894err_debugfs_init: 897err_debugfs_init:
895 mlxsw_core->driver->fini(mlxsw_core->driver_priv); 898 mlxsw_core->driver->fini(mlxsw_core);
896err_driver_init: 899err_driver_init:
897 devlink_unregister(devlink); 900 devlink_unregister(devlink);
898err_devlink_register: 901err_devlink_register:
@@ -918,7 +921,7 @@ void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core)
918 struct devlink *devlink = priv_to_devlink(mlxsw_core); 921 struct devlink *devlink = priv_to_devlink(mlxsw_core);
919 922
920 mlxsw_core_debugfs_fini(mlxsw_core); 923 mlxsw_core_debugfs_fini(mlxsw_core);
921 mlxsw_core->driver->fini(mlxsw_core->driver_priv); 924 mlxsw_core->driver->fini(mlxsw_core);
922 devlink_unregister(devlink); 925 devlink_unregister(devlink);
923 mlxsw_emad_fini(mlxsw_core); 926 mlxsw_emad_fini(mlxsw_core);
924 mlxsw_core->bus->fini(mlxsw_core->bus_priv); 927 mlxsw_core->bus->fini(mlxsw_core->bus_priv);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h b/drivers/net/ethernet/mellanox/mlxsw/core.h
index 0454212a86d1..f3cebef9c31c 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.h
@@ -62,6 +62,8 @@ struct mlxsw_driver;
62struct mlxsw_bus; 62struct mlxsw_bus;
63struct mlxsw_bus_info; 63struct mlxsw_bus_info;
64 64
65void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core);
66
65int mlxsw_core_driver_register(struct mlxsw_driver *mlxsw_driver); 67int mlxsw_core_driver_register(struct mlxsw_driver *mlxsw_driver);
66void mlxsw_core_driver_unregister(struct mlxsw_driver *mlxsw_driver); 68void mlxsw_core_driver_unregister(struct mlxsw_driver *mlxsw_driver);
67 69
@@ -192,11 +194,12 @@ struct mlxsw_driver {
192 const char *kind; 194 const char *kind;
193 struct module *owner; 195 struct module *owner;
194 size_t priv_size; 196 size_t priv_size;
195 int (*init)(void *driver_priv, struct mlxsw_core *mlxsw_core, 197 int (*init)(struct mlxsw_core *mlxsw_core,
196 const struct mlxsw_bus_info *mlxsw_bus_info); 198 const struct mlxsw_bus_info *mlxsw_bus_info);
197 void (*fini)(void *driver_priv); 199 void (*fini)(struct mlxsw_core *mlxsw_core);
198 int (*port_split)(void *driver_priv, u8 local_port, unsigned int count); 200 int (*port_split)(struct mlxsw_core *mlxsw_core, u8 local_port,
199 int (*port_unsplit)(void *driver_priv, u8 local_port); 201 unsigned int count);
202 int (*port_unsplit)(struct mlxsw_core *mlxsw_core, u8 local_port);
200 void (*txhdr_construct)(struct sk_buff *skb, 203 void (*txhdr_construct)(struct sk_buff *skb,
201 const struct mlxsw_tx_info *tx_info); 204 const struct mlxsw_tx_info *tx_info);
202 u8 txhdr_len; 205 u8 txhdr_len;
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 8abe1a615c94..19b3c144abc6 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -1948,9 +1948,10 @@ static u8 mlxsw_sp_cluster_base_port_get(u8 local_port)
1948 return local_port - offset; 1948 return local_port - offset;
1949} 1949}
1950 1950
1951static int mlxsw_sp_port_split(void *priv, u8 local_port, unsigned int count) 1951static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port,
1952 unsigned int count)
1952{ 1953{
1953 struct mlxsw_sp *mlxsw_sp = priv; 1954 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
1954 struct mlxsw_sp_port *mlxsw_sp_port; 1955 struct mlxsw_sp_port *mlxsw_sp_port;
1955 u8 width = MLXSW_PORT_MODULE_MAX_WIDTH / count; 1956 u8 width = MLXSW_PORT_MODULE_MAX_WIDTH / count;
1956 u8 module, cur_width, base_port; 1957 u8 module, cur_width, base_port;
@@ -2022,9 +2023,9 @@ err_port_create:
2022 return err; 2023 return err;
2023} 2024}
2024 2025
2025static int mlxsw_sp_port_unsplit(void *priv, u8 local_port) 2026static int mlxsw_sp_port_unsplit(struct mlxsw_core *mlxsw_core, u8 local_port)
2026{ 2027{
2027 struct mlxsw_sp *mlxsw_sp = priv; 2028 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
2028 struct mlxsw_sp_port *mlxsw_sp_port; 2029 struct mlxsw_sp_port *mlxsw_sp_port;
2029 u8 module, cur_width, base_port; 2030 u8 module, cur_width, base_port;
2030 unsigned int count; 2031 unsigned int count;
@@ -2369,10 +2370,10 @@ static int mlxsw_sp_lag_init(struct mlxsw_sp *mlxsw_sp)
2369 return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcr), slcr_pl); 2370 return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(slcr), slcr_pl);
2370} 2371}
2371 2372
2372static int mlxsw_sp_init(void *priv, struct mlxsw_core *mlxsw_core, 2373static int mlxsw_sp_init(struct mlxsw_core *mlxsw_core,
2373 const struct mlxsw_bus_info *mlxsw_bus_info) 2374 const struct mlxsw_bus_info *mlxsw_bus_info)
2374{ 2375{
2375 struct mlxsw_sp *mlxsw_sp = priv; 2376 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
2376 int err; 2377 int err;
2377 2378
2378 mlxsw_sp->core = mlxsw_core; 2379 mlxsw_sp->core = mlxsw_core;
@@ -2443,9 +2444,9 @@ err_event_register:
2443 return err; 2444 return err;
2444} 2445}
2445 2446
2446static void mlxsw_sp_fini(void *priv) 2447static void mlxsw_sp_fini(struct mlxsw_core *mlxsw_core)
2447{ 2448{
2448 struct mlxsw_sp *mlxsw_sp = priv; 2449 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
2449 2450
2450 mlxsw_sp_switchdev_fini(mlxsw_sp); 2451 mlxsw_sp_switchdev_fini(mlxsw_sp);
2451 mlxsw_sp_traps_fini(mlxsw_sp); 2452 mlxsw_sp_traps_fini(mlxsw_sp);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
index 2518c84960a0..3842eab9449a 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
@@ -1447,10 +1447,10 @@ static int mlxsw_sx_flood_init(struct mlxsw_sx *mlxsw_sx)
1447 return mlxsw_reg_write(mlxsw_sx->core, MLXSW_REG(sgcr), sgcr_pl); 1447 return mlxsw_reg_write(mlxsw_sx->core, MLXSW_REG(sgcr), sgcr_pl);
1448} 1448}
1449 1449
1450static int mlxsw_sx_init(void *priv, struct mlxsw_core *mlxsw_core, 1450static int mlxsw_sx_init(struct mlxsw_core *mlxsw_core,
1451 const struct mlxsw_bus_info *mlxsw_bus_info) 1451 const struct mlxsw_bus_info *mlxsw_bus_info)
1452{ 1452{
1453 struct mlxsw_sx *mlxsw_sx = priv; 1453 struct mlxsw_sx *mlxsw_sx = mlxsw_core_driver_priv(mlxsw_core);
1454 int err; 1454 int err;
1455 1455
1456 mlxsw_sx->core = mlxsw_core; 1456 mlxsw_sx->core = mlxsw_core;
@@ -1497,9 +1497,9 @@ err_event_register:
1497 return err; 1497 return err;
1498} 1498}
1499 1499
1500static void mlxsw_sx_fini(void *priv) 1500static void mlxsw_sx_fini(struct mlxsw_core *mlxsw_core)
1501{ 1501{
1502 struct mlxsw_sx *mlxsw_sx = priv; 1502 struct mlxsw_sx *mlxsw_sx = mlxsw_core_driver_priv(mlxsw_core);
1503 1503
1504 mlxsw_sx_traps_fini(mlxsw_sx); 1504 mlxsw_sx_traps_fini(mlxsw_sx);
1505 mlxsw_sx_event_unregister(mlxsw_sx, MLXSW_TRAP_ID_PUDE); 1505 mlxsw_sx_event_unregister(mlxsw_sx, MLXSW_TRAP_ID_PUDE);