From e6987a7f7ebbde64eb679f10a6eb857b9e28d05d Mon Sep 17 00:00:00 2001 From: Ioana Ciornei Date: Mon, 11 Nov 2019 18:50:57 +0200 Subject: [PATCH] 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 Link: https://lore.kernel.org/r/1573491058-24766-4-git-send-email-ioana.ciornei@nxp.com Signed-off-by: Greg Kroah-Hartman --- drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 9 +++------ drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 1 + 2 files changed, 4 insertions(+), 6 deletions(-) --- 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 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(struc 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(st 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, --- 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 */