diff options
author | Ioana Ciornei <ioana.ciornei@nxp.com> | 2019-11-11 19:50:57 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-11-13 02:10:15 +0300 |
commit | 910f30917cdffedff5663f5ac451424bd7176ce7 (patch) | |
tree | 117a287deabb371a0e85342f5c6f539ae29418f9 /drivers/staging/fsl-dpaa2 | |
parent | a3c6345e9f04510bcca88f0faefbcd2399dbca47 (diff) | |
download | linux-910f30917cdffedff5663f5ac451424bd7176ce7.tar.xz |
staging: dpaa2-ethsw: move port switchdev blocking notifier per ethsw
Register a different switchdev blocking notifier block per ethsw
instance. When probing multiple dpaa2-ethsw instances, without this the
register will fail.
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/1573491058-24766-4-git-send-email-ioana.ciornei@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/fsl-dpaa2')
-rw-r--r-- | drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 9 | ||||
-rw-r--r-- | drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 1 |
2 files changed, 4 insertions, 6 deletions
diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c index abbfcbf81241..37ee9b0aa326 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c @@ -1314,10 +1314,6 @@ static int port_switchdev_blocking_event(struct notifier_block *unused, return NOTIFY_DONE; } -static struct notifier_block port_switchdev_blocking_nb = { - .notifier_call = port_switchdev_blocking_event, -}; - static int ethsw_register_notifier(struct device *dev) { struct ethsw_core *ethsw = dev_get_drvdata(dev); @@ -1337,7 +1333,8 @@ static int ethsw_register_notifier(struct device *dev) goto err_switchdev_nb; } - err = register_switchdev_blocking_notifier(&port_switchdev_blocking_nb); + ethsw->port_switchdevb_nb.notifier_call = port_switchdev_blocking_event; + err = register_switchdev_blocking_notifier(ðsw->port_switchdevb_nb); if (err) { dev_err(dev, "Failed to register switchdev blocking notifier\n"); goto err_switchdev_blocking_nb; @@ -1490,7 +1487,7 @@ static void ethsw_unregister_notifier(struct device *dev) struct notifier_block *nb; int err; - nb = &port_switchdev_blocking_nb; + nb = ðsw->port_switchdevb_nb; err = unregister_switchdev_blocking_notifier(nb); if (err) dev_err(dev, diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.h b/drivers/staging/fsl-dpaa2/ethsw/ethsw.h index e050589758b1..db7eef134230 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/ethsw.h +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.h @@ -69,6 +69,7 @@ struct ethsw_core { struct notifier_block port_nb; struct notifier_block port_switchdev_nb; + struct notifier_block port_switchdevb_nb; }; #endif /* __ETHSW_H */ |