diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0344-staging-dpaa2-ethsw-move-port-switchdev-notifier-per.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0344-staging-dpaa2-ethsw-move-port-switchdev-notifier-per.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0344-staging-dpaa2-ethsw-move-port-switchdev-notifier-per.patch b/target/linux/layerscape/patches-5.4/701-net-0344-staging-dpaa2-ethsw-move-port-switchdev-notifier-per.patch new file mode 100644 index 0000000000..459d145afc --- /dev/null +++ b/target/linux/layerscape/patches-5.4/701-net-0344-staging-dpaa2-ethsw-move-port-switchdev-notifier-per.patch @@ -0,0 +1,68 @@ +From e35e9d1a3dd2cc4f06f03ec4c3fae781bb0c5075 Mon Sep 17 00:00:00 2001 +From: Ioana Ciornei <ioana.ciornei@nxp.com> +Date: Mon, 11 Nov 2019 18:50:56 +0200 +Subject: [PATCH] staging: dpaa2-ethsw: move port switchdev notifier per ethsw + +Register a different switchdev 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-3-git-send-email-ioana.ciornei@nxp.com +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 11 ++++------- + drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 1 + + 2 files changed, 5 insertions(+), 7 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_nb = { +- .notifier_call = port_switchdev_event, +-}; +- + static struct notifier_block port_switchdev_blocking_nb = { + .notifier_call = port_switchdev_blocking_event, + }; +@@ -1334,7 +1330,8 @@ static int ethsw_register_notifier(struc + return err; + } + +- err = register_switchdev_notifier(&port_switchdev_nb); ++ ethsw->port_switchdev_nb.notifier_call = port_switchdev_event; ++ err = register_switchdev_notifier(ðsw->port_switchdev_nb); + if (err) { + dev_err(dev, "Failed to register switchdev notifier\n"); + goto err_switchdev_nb; +@@ -1349,7 +1346,7 @@ static int ethsw_register_notifier(struc + return 0; + + err_switchdev_blocking_nb: +- unregister_switchdev_notifier(&port_switchdev_nb); ++ unregister_switchdev_notifier(ðsw->port_switchdev_nb); + err_switchdev_nb: + unregister_netdevice_notifier(ðsw->port_nb); + return err; +@@ -1499,7 +1496,7 @@ static void ethsw_unregister_notifier(st + dev_err(dev, + "Failed to unregister switchdev blocking notifier (%d)\n", err); + +- err = unregister_switchdev_notifier(&port_switchdev_nb); ++ err = unregister_switchdev_notifier(ðsw->port_switchdev_nb); + if (err) + dev_err(dev, + "Failed to unregister switchdev notifier (%d)\n", err); +--- a/drivers/staging/fsl-dpaa2/ethsw/ethsw.h ++++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.h +@@ -68,6 +68,7 @@ struct ethsw_core { + bool learning; + + struct notifier_block port_nb; ++ struct notifier_block port_switchdev_nb; + }; + + #endif /* __ETHSW_H */ |