Commit bbb9ae25 authored by Leon Romanovsky's avatar Leon Romanovsky Committed by David S. Miller

dpaa2-eth: Register devlink instance at the end of probe

Move devlink_register to be the last command in the initialization
sequence.
Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8d44b5cf
...@@ -189,7 +189,7 @@ static const struct devlink_ops dpaa2_eth_devlink_ops = { ...@@ -189,7 +189,7 @@ static const struct devlink_ops dpaa2_eth_devlink_ops = {
.trap_group_action_set = dpaa2_eth_dl_trap_group_action_set, .trap_group_action_set = dpaa2_eth_dl_trap_group_action_set,
}; };
int dpaa2_eth_dl_register(struct dpaa2_eth_priv *priv) int dpaa2_eth_dl_alloc(struct dpaa2_eth_priv *priv)
{ {
struct net_device *net_dev = priv->net_dev; struct net_device *net_dev = priv->net_dev;
struct device *dev = net_dev->dev.parent; struct device *dev = net_dev->dev.parent;
...@@ -203,15 +203,23 @@ int dpaa2_eth_dl_register(struct dpaa2_eth_priv *priv) ...@@ -203,15 +203,23 @@ int dpaa2_eth_dl_register(struct dpaa2_eth_priv *priv)
} }
dl_priv = devlink_priv(priv->devlink); dl_priv = devlink_priv(priv->devlink);
dl_priv->dpaa2_priv = priv; dl_priv->dpaa2_priv = priv;
return 0;
}
void dpaa2_eth_dl_free(struct dpaa2_eth_priv *priv)
{
devlink_free(priv->devlink);
}
void dpaa2_eth_dl_register(struct dpaa2_eth_priv *priv)
{
devlink_register(priv->devlink); devlink_register(priv->devlink);
return 0;
} }
void dpaa2_eth_dl_unregister(struct dpaa2_eth_priv *priv) void dpaa2_eth_dl_unregister(struct dpaa2_eth_priv *priv)
{ {
devlink_unregister(priv->devlink); devlink_unregister(priv->devlink);
devlink_free(priv->devlink);
} }
int dpaa2_eth_dl_port_add(struct dpaa2_eth_priv *priv) int dpaa2_eth_dl_port_add(struct dpaa2_eth_priv *priv)
......
...@@ -4431,7 +4431,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) ...@@ -4431,7 +4431,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev)
if (err) if (err)
goto err_connect_mac; goto err_connect_mac;
err = dpaa2_eth_dl_register(priv); err = dpaa2_eth_dl_alloc(priv);
if (err) if (err)
goto err_dl_register; goto err_dl_register;
...@@ -4453,6 +4453,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) ...@@ -4453,6 +4453,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev)
dpaa2_dbg_add(priv); dpaa2_dbg_add(priv);
#endif #endif
dpaa2_eth_dl_register(priv);
dev_info(dev, "Probed interface %s\n", net_dev->name); dev_info(dev, "Probed interface %s\n", net_dev->name);
return 0; return 0;
...@@ -4461,7 +4462,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) ...@@ -4461,7 +4462,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev)
err_dl_port_add: err_dl_port_add:
dpaa2_eth_dl_traps_unregister(priv); dpaa2_eth_dl_traps_unregister(priv);
err_dl_trap_register: err_dl_trap_register:
dpaa2_eth_dl_unregister(priv); dpaa2_eth_dl_free(priv);
err_dl_register: err_dl_register:
dpaa2_eth_disconnect_mac(priv); dpaa2_eth_disconnect_mac(priv);
err_connect_mac: err_connect_mac:
...@@ -4508,6 +4509,8 @@ static int dpaa2_eth_remove(struct fsl_mc_device *ls_dev) ...@@ -4508,6 +4509,8 @@ static int dpaa2_eth_remove(struct fsl_mc_device *ls_dev)
net_dev = dev_get_drvdata(dev); net_dev = dev_get_drvdata(dev);
priv = netdev_priv(net_dev); priv = netdev_priv(net_dev);
dpaa2_eth_dl_unregister(priv);
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
dpaa2_dbg_remove(priv); dpaa2_dbg_remove(priv);
#endif #endif
...@@ -4519,7 +4522,7 @@ static int dpaa2_eth_remove(struct fsl_mc_device *ls_dev) ...@@ -4519,7 +4522,7 @@ static int dpaa2_eth_remove(struct fsl_mc_device *ls_dev)
dpaa2_eth_dl_port_del(priv); dpaa2_eth_dl_port_del(priv);
dpaa2_eth_dl_traps_unregister(priv); dpaa2_eth_dl_traps_unregister(priv);
dpaa2_eth_dl_unregister(priv); dpaa2_eth_dl_free(priv);
if (priv->do_link_poll) if (priv->do_link_poll)
kthread_stop(priv->poll_thread); kthread_stop(priv->poll_thread);
......
...@@ -725,7 +725,10 @@ void dpaa2_eth_set_rx_taildrop(struct dpaa2_eth_priv *priv, ...@@ -725,7 +725,10 @@ void dpaa2_eth_set_rx_taildrop(struct dpaa2_eth_priv *priv,
extern const struct dcbnl_rtnl_ops dpaa2_eth_dcbnl_ops; extern const struct dcbnl_rtnl_ops dpaa2_eth_dcbnl_ops;
int dpaa2_eth_dl_register(struct dpaa2_eth_priv *priv); int dpaa2_eth_dl_alloc(struct dpaa2_eth_priv *priv);
void dpaa2_eth_dl_free(struct dpaa2_eth_priv *priv);
void dpaa2_eth_dl_register(struct dpaa2_eth_priv *priv);
void dpaa2_eth_dl_unregister(struct dpaa2_eth_priv *priv); void dpaa2_eth_dl_unregister(struct dpaa2_eth_priv *priv);
int dpaa2_eth_dl_port_add(struct dpaa2_eth_priv *priv); int dpaa2_eth_dl_port_add(struct dpaa2_eth_priv *priv);
......
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