diff options
| author | Jiri Pirko <jiri@mellanox.com> | 2016-04-08 13:11:23 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-04-08 15:38:42 -0400 |
| commit | b2f10571b96414986f7293b06847d202f2d1d0ca (patch) | |
| tree | 300bf046d1618548ade37fa664027a80f50c1858 /drivers/net/ethernet | |
| parent | 307c2431abf0974996356c13b67432f4b35e5f2f (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.c | 19 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/core.h | 11 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 17 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/switchx2.c | 8 |
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 | ||
| 117 | void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core) | ||
| 118 | { | ||
| 119 | return mlxsw_core->driver_priv; | ||
| 120 | } | ||
| 121 | EXPORT_SYMBOL(mlxsw_core_driver_priv); | ||
| 122 | |||
| 117 | struct mlxsw_rx_listener_item { | 123 | struct 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 | ||
| 802 | static int mlxsw_devlink_port_unsplit(struct devlink *devlink, | 807 | static 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 | ||
| 815 | static const struct devlink_ops mlxsw_devlink_ops = { | 819 | static 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 | ||
| 894 | err_debugfs_init: | 897 | err_debugfs_init: |
| 895 | mlxsw_core->driver->fini(mlxsw_core->driver_priv); | 898 | mlxsw_core->driver->fini(mlxsw_core); |
| 896 | err_driver_init: | 899 | err_driver_init: |
| 897 | devlink_unregister(devlink); | 900 | devlink_unregister(devlink); |
| 898 | err_devlink_register: | 901 | err_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; | |||
| 62 | struct mlxsw_bus; | 62 | struct mlxsw_bus; |
| 63 | struct mlxsw_bus_info; | 63 | struct mlxsw_bus_info; |
| 64 | 64 | ||
| 65 | void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core); | ||
| 66 | |||
| 65 | int mlxsw_core_driver_register(struct mlxsw_driver *mlxsw_driver); | 67 | int mlxsw_core_driver_register(struct mlxsw_driver *mlxsw_driver); |
| 66 | void mlxsw_core_driver_unregister(struct mlxsw_driver *mlxsw_driver); | 68 | void 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 | ||
| 1951 | static int mlxsw_sp_port_split(void *priv, u8 local_port, unsigned int count) | 1951 | static 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 | ||
| 2025 | static int mlxsw_sp_port_unsplit(void *priv, u8 local_port) | 2026 | static 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 | ||
| 2372 | static int mlxsw_sp_init(void *priv, struct mlxsw_core *mlxsw_core, | 2373 | static 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 | ||
| 2446 | static void mlxsw_sp_fini(void *priv) | 2447 | static 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 | ||
| 1450 | static int mlxsw_sx_init(void *priv, struct mlxsw_core *mlxsw_core, | 1450 | static 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 | ||
| 1500 | static void mlxsw_sx_fini(void *priv) | 1500 | static 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); |
