diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0345-staging-dpaa2-ethsw-move-port-switchdev-blocking-not.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0345-staging-dpaa2-ethsw-move-port-switchdev-blocking-not.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0345-staging-dpaa2-ethsw-move-port-switchdev-blocking-not.patch b/target/linux/layerscape/patches-5.4/701-net-0345-staging-dpaa2-ethsw-move-port-switchdev-blocking-not.patch new file mode 100644 index 0000000000..ace7012f42 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/701-net-0345-staging-dpaa2-ethsw-move-port-switchdev-blocking-not.patch @@ -0,0 +1,60 @@ +From e6987a7f7ebbde64eb679f10a6eb857b9e28d05d Mon Sep 17 00:00:00 2001 +From: Ioana Ciornei <ioana.ciornei@nxp.com> +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 <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> +--- + 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 */ |