Commit 3bdc7066 authored by David S. Miller's avatar David S. Miller

Merge branch 'devlink-register'

Leon Romanovsky says:

====================
Remove duplicated devlink registration check

Changelog:
v1:
 * Added two new patches that remove registration field from mlx5 and ti drivers.
v0: https://lore.kernel.org/lkml/ed7bbb1e4c51dd58e6035a058e93d16f883b09ce.1627215829.git.leonro@nvidia.com

--------------------------------------------------------------------

Both registered flag and devlink pointer are set at the same time
and indicate the same thing - devlink/devlink_port are ready. Instead
of checking ->registered use devlink pointer as an indication.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 299b50fc d7907a2b
...@@ -55,19 +55,15 @@ void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv) ...@@ -55,19 +55,15 @@ void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv)
{ {
struct devlink_port *dl_port = mlx5e_devlink_get_dl_port(priv); struct devlink_port *dl_port = mlx5e_devlink_get_dl_port(priv);
if (dl_port->registered)
devlink_port_unregister(dl_port); devlink_port_unregister(dl_port);
} }
struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev) struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev)
{ {
struct mlx5e_priv *priv = netdev_priv(dev); struct mlx5e_priv *priv = netdev_priv(dev);
struct devlink_port *port;
if (!netif_device_present(dev)) if (!netif_device_present(dev))
return NULL; return NULL;
port = mlx5e_devlink_get_dl_port(priv);
if (port->registered) return mlx5e_devlink_get_dl_port(priv);
return port;
return NULL;
} }
...@@ -4776,7 +4776,6 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev, ...@@ -4776,7 +4776,6 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev,
struct net_device *netdev) struct net_device *netdev)
{ {
struct mlx5e_priv *priv = netdev_priv(netdev); struct mlx5e_priv *priv = netdev_priv(netdev);
struct devlink_port *dl_port;
int err; int err;
mlx5e_build_nic_params(priv, &priv->xsk, netdev->mtu); mlx5e_build_nic_params(priv, &priv->xsk, netdev->mtu);
...@@ -4792,18 +4791,12 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev, ...@@ -4792,18 +4791,12 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev,
if (err) if (err)
mlx5_core_err(mdev, "TLS initialization failed, %d\n", err); mlx5_core_err(mdev, "TLS initialization failed, %d\n", err);
dl_port = mlx5e_devlink_get_dl_port(priv);
if (dl_port->registered)
mlx5e_health_create_reporters(priv); mlx5e_health_create_reporters(priv);
return 0; return 0;
} }
static void mlx5e_nic_cleanup(struct mlx5e_priv *priv) static void mlx5e_nic_cleanup(struct mlx5e_priv *priv)
{ {
struct devlink_port *dl_port = mlx5e_devlink_get_dl_port(priv);
if (dl_port->registered)
mlx5e_health_destroy_reporters(priv); mlx5e_health_destroy_reporters(priv);
mlx5e_tls_cleanup(priv); mlx5e_tls_cleanup(priv);
mlx5e_ipsec_cleanup(priv); mlx5e_ipsec_cleanup(priv);
......
...@@ -2398,21 +2398,6 @@ static const struct devlink_param am65_cpsw_devlink_params[] = { ...@@ -2398,21 +2398,6 @@ static const struct devlink_param am65_cpsw_devlink_params[] = {
am65_cpsw_dl_switch_mode_set, NULL), am65_cpsw_dl_switch_mode_set, NULL),
}; };
static void am65_cpsw_unregister_devlink_ports(struct am65_cpsw_common *common)
{
struct devlink_port *dl_port;
struct am65_cpsw_port *port;
int i;
for (i = 1; i <= common->port_num; i++) {
port = am65_common_get_port(common, i);
dl_port = &port->devlink_port;
if (dl_port->registered)
devlink_port_unregister(dl_port);
}
}
static int am65_cpsw_nuss_register_devlink(struct am65_cpsw_common *common) static int am65_cpsw_nuss_register_devlink(struct am65_cpsw_common *common)
{ {
struct devlink_port_attrs attrs = {}; struct devlink_port_attrs attrs = {};
...@@ -2474,7 +2459,12 @@ static int am65_cpsw_nuss_register_devlink(struct am65_cpsw_common *common) ...@@ -2474,7 +2459,12 @@ static int am65_cpsw_nuss_register_devlink(struct am65_cpsw_common *common)
return ret; return ret;
dl_port_unreg: dl_port_unreg:
am65_cpsw_unregister_devlink_ports(common); for (i = i - 1; i >= 1; i--) {
port = am65_common_get_port(common, i);
dl_port = &port->devlink_port;
devlink_port_unregister(dl_port);
}
dl_unreg: dl_unreg:
devlink_unregister(common->devlink); devlink_unregister(common->devlink);
dl_free: dl_free:
...@@ -2485,6 +2475,17 @@ static int am65_cpsw_nuss_register_devlink(struct am65_cpsw_common *common) ...@@ -2485,6 +2475,17 @@ static int am65_cpsw_nuss_register_devlink(struct am65_cpsw_common *common)
static void am65_cpsw_unregister_devlink(struct am65_cpsw_common *common) static void am65_cpsw_unregister_devlink(struct am65_cpsw_common *common)
{ {
struct devlink_port *dl_port;
struct am65_cpsw_port *port;
int i;
for (i = 1; i <= common->port_num; i++) {
port = am65_common_get_port(common, i);
dl_port = &port->devlink_port;
devlink_port_unregister(dl_port);
}
if (!AM65_CPSW_IS_CPSW2G(common) && if (!AM65_CPSW_IS_CPSW2G(common) &&
IS_ENABLED(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV)) { IS_ENABLED(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV)) {
devlink_params_unpublish(common->devlink); devlink_params_unpublish(common->devlink);
...@@ -2492,7 +2493,6 @@ static void am65_cpsw_unregister_devlink(struct am65_cpsw_common *common) ...@@ -2492,7 +2493,6 @@ static void am65_cpsw_unregister_devlink(struct am65_cpsw_common *common)
ARRAY_SIZE(am65_cpsw_devlink_params)); ARRAY_SIZE(am65_cpsw_devlink_params));
} }
am65_cpsw_unregister_devlink_ports(common);
devlink_unregister(common->devlink); devlink_unregister(common->devlink);
devlink_free(common->devlink); devlink_free(common->devlink);
} }
......
...@@ -55,8 +55,7 @@ struct devlink { ...@@ -55,8 +55,7 @@ struct devlink {
* port, sb, dpipe, resource, params, region, traps and more. * port, sb, dpipe, resource, params, region, traps and more.
*/ */
u8 reload_failed:1, u8 reload_failed:1,
reload_enabled:1, reload_enabled:1;
registered:1;
char priv[0] __aligned(NETDEV_ALIGN); char priv[0] __aligned(NETDEV_ALIGN);
}; };
...@@ -158,7 +157,6 @@ struct devlink_port { ...@@ -158,7 +157,6 @@ struct devlink_port {
struct list_head region_list; struct list_head region_list;
struct devlink *devlink; struct devlink *devlink;
unsigned int index; unsigned int index;
bool registered;
spinlock_t type_lock; /* Protects type and type_dev spinlock_t type_lock; /* Protects type and type_dev
* pointer consistency. * pointer consistency.
*/ */
......
...@@ -115,7 +115,7 @@ static void __devlink_net_set(struct devlink *devlink, struct net *net) ...@@ -115,7 +115,7 @@ static void __devlink_net_set(struct devlink *devlink, struct net *net)
void devlink_net_set(struct devlink *devlink, struct net *net) void devlink_net_set(struct devlink *devlink, struct net *net)
{ {
if (WARN_ON(devlink->registered)) if (WARN_ON(devlink->dev))
return; return;
__devlink_net_set(devlink, net); __devlink_net_set(devlink, net);
} }
...@@ -1043,7 +1043,7 @@ static void devlink_port_notify(struct devlink_port *devlink_port, ...@@ -1043,7 +1043,7 @@ static void devlink_port_notify(struct devlink_port *devlink_port,
struct sk_buff *msg; struct sk_buff *msg;
int err; int err;
if (!devlink_port->registered) if (!devlink_port->devlink)
return; return;
WARN_ON(cmd != DEVLINK_CMD_PORT_NEW && cmd != DEVLINK_CMD_PORT_DEL); WARN_ON(cmd != DEVLINK_CMD_PORT_NEW && cmd != DEVLINK_CMD_PORT_DEL);
...@@ -8817,8 +8817,8 @@ EXPORT_SYMBOL_GPL(devlink_alloc); ...@@ -8817,8 +8817,8 @@ EXPORT_SYMBOL_GPL(devlink_alloc);
*/ */
int devlink_register(struct devlink *devlink, struct device *dev) int devlink_register(struct devlink *devlink, struct device *dev)
{ {
WARN_ON(devlink->dev);
devlink->dev = dev; devlink->dev = dev;
devlink->registered = true;
mutex_lock(&devlink_mutex); mutex_lock(&devlink_mutex);
list_add_tail(&devlink->list, &devlink_list); list_add_tail(&devlink->list, &devlink_list);
devlink_notify(devlink, DEVLINK_CMD_NEW); devlink_notify(devlink, DEVLINK_CMD_NEW);
...@@ -8960,9 +8960,10 @@ int devlink_port_register(struct devlink *devlink, ...@@ -8960,9 +8960,10 @@ int devlink_port_register(struct devlink *devlink,
mutex_unlock(&devlink->lock); mutex_unlock(&devlink->lock);
return -EEXIST; return -EEXIST;
} }
WARN_ON(devlink_port->devlink);
devlink_port->devlink = devlink; devlink_port->devlink = devlink;
devlink_port->index = port_index; devlink_port->index = port_index;
devlink_port->registered = true;
spin_lock_init(&devlink_port->type_lock); spin_lock_init(&devlink_port->type_lock);
INIT_LIST_HEAD(&devlink_port->reporter_list); INIT_LIST_HEAD(&devlink_port->reporter_list);
mutex_init(&devlink_port->reporters_lock); mutex_init(&devlink_port->reporters_lock);
...@@ -9001,7 +9002,7 @@ static void __devlink_port_type_set(struct devlink_port *devlink_port, ...@@ -9001,7 +9002,7 @@ static void __devlink_port_type_set(struct devlink_port *devlink_port,
enum devlink_port_type type, enum devlink_port_type type,
void *type_dev) void *type_dev)
{ {
if (WARN_ON(!devlink_port->registered)) if (WARN_ON(!devlink_port->devlink))
return; return;
devlink_port_type_warn_cancel(devlink_port); devlink_port_type_warn_cancel(devlink_port);
spin_lock_bh(&devlink_port->type_lock); spin_lock_bh(&devlink_port->type_lock);
...@@ -9121,7 +9122,7 @@ void devlink_port_attrs_set(struct devlink_port *devlink_port, ...@@ -9121,7 +9122,7 @@ void devlink_port_attrs_set(struct devlink_port *devlink_port,
{ {
int ret; int ret;
if (WARN_ON(devlink_port->registered)) if (WARN_ON(devlink_port->devlink))
return; return;
devlink_port->attrs = *attrs; devlink_port->attrs = *attrs;
ret = __devlink_port_attrs_set(devlink_port, attrs->flavour); ret = __devlink_port_attrs_set(devlink_port, attrs->flavour);
...@@ -9145,7 +9146,7 @@ void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 contro ...@@ -9145,7 +9146,7 @@ void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 contro
struct devlink_port_attrs *attrs = &devlink_port->attrs; struct devlink_port_attrs *attrs = &devlink_port->attrs;
int ret; int ret;
if (WARN_ON(devlink_port->registered)) if (WARN_ON(devlink_port->devlink))
return; return;
ret = __devlink_port_attrs_set(devlink_port, ret = __devlink_port_attrs_set(devlink_port,
DEVLINK_PORT_FLAVOUR_PCI_PF); DEVLINK_PORT_FLAVOUR_PCI_PF);
...@@ -9172,7 +9173,7 @@ void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 contro ...@@ -9172,7 +9173,7 @@ void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 contro
struct devlink_port_attrs *attrs = &devlink_port->attrs; struct devlink_port_attrs *attrs = &devlink_port->attrs;
int ret; int ret;
if (WARN_ON(devlink_port->registered)) if (WARN_ON(devlink_port->devlink))
return; return;
ret = __devlink_port_attrs_set(devlink_port, ret = __devlink_port_attrs_set(devlink_port,
DEVLINK_PORT_FLAVOUR_PCI_VF); DEVLINK_PORT_FLAVOUR_PCI_VF);
...@@ -9200,7 +9201,7 @@ void devlink_port_attrs_pci_sf_set(struct devlink_port *devlink_port, u32 contro ...@@ -9200,7 +9201,7 @@ void devlink_port_attrs_pci_sf_set(struct devlink_port *devlink_port, u32 contro
struct devlink_port_attrs *attrs = &devlink_port->attrs; struct devlink_port_attrs *attrs = &devlink_port->attrs;
int ret; int ret;
if (WARN_ON(devlink_port->registered)) if (WARN_ON(devlink_port->devlink))
return; return;
ret = __devlink_port_attrs_set(devlink_port, ret = __devlink_port_attrs_set(devlink_port,
DEVLINK_PORT_FLAVOUR_PCI_SF); DEVLINK_PORT_FLAVOUR_PCI_SF);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment