layerscape: add patches-5.4
[openwrt/staging/wigyori.git] / target / linux / layerscape / patches-5.4 / 701-net-0397-sdk_dpaa-ceetm-fix-recursive-dependencies.patch
diff --git a/target/linux/layerscape/patches-5.4/701-net-0397-sdk_dpaa-ceetm-fix-recursive-dependencies.patch b/target/linux/layerscape/patches-5.4/701-net-0397-sdk_dpaa-ceetm-fix-recursive-dependencies.patch
new file mode 100644 (file)
index 0000000..dff27a4
--- /dev/null
@@ -0,0 +1,132 @@
+From 03117a1e7db4cd3d745c663c697e446695ebb8e1 Mon Sep 17 00:00:00 2001
+From: Camelia Groza <camelia.groza@nxp.com>
+Date: Wed, 8 Jan 2020 18:41:33 +0200
+Subject: [PATCH] sdk_dpaa: ceetm: fix recursive dependencies
+
+Due to dependencies between the fsl_ceetm and fsl_dpa modules, remove
+the module support for the ceetm driver and integrate it into the main
+DPAA Ethernet driver.
+
+The registration of the CEETM Qdisc was the only operation done at
+module init. Pass the management of the Qdisc register and unregister
+operations to the loading and unloading of the DPAA driver.
+
+Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
+---
+ drivers/net/ethernet/freescale/sdk_dpaa/Makefile   |  3 +-
+ drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c | 19 +++++++++++++
+ .../ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c   | 32 +---------------------
+ 3 files changed, 21 insertions(+), 33 deletions(-)
+
+--- a/drivers/net/ethernet/freescale/sdk_dpaa/Makefile
++++ b/drivers/net/ethernet/freescale/sdk_dpaa/Makefile
+@@ -20,8 +20,7 @@ endif
+ ifeq ($(CONFIG_FSL_DPAA_CEETM),y)
+ ccflags-y += -I$(srctree)/drivers/net/ethernet/freescale/sdk_fman/src/wrapper
+-obj-$(CONFIG_FSL_SDK_DPAA_ETH) += fsl_ceetm.o
+-fsl_ceetm-objs += dpaa_eth_ceetm.o
++fsl_dpa-objs += dpaa_eth_ceetm.o
+ endif
+ fsl_mac-objs += mac.o mac-api.o
+--- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c
++++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c
+@@ -72,6 +72,9 @@
+ #ifdef CONFIG_FSL_DPAA_DBG_LOOP
+ #include "dpaa_debugfs.h"
+ #endif /* CONFIG_FSL_DPAA_DBG_LOOP */
++#ifdef CONFIG_FSL_DPAA_CEETM
++#include "dpaa_eth_ceetm.h"
++#endif
+ /* CREATE_TRACE_POINTS only needs to be defined once. Other dpa files
+  * using trace events only need to #include <trace/events/sched.h>
+@@ -116,6 +119,10 @@ static uint8_t dpa_priv_common_bpid;
+ struct net_device *dpa_loop_netdevs[20];
+ #endif
++#ifdef CONFIG_FSL_DPAA_CEETM
++extern struct Qdisc_ops ceetm_qdisc_ops;
++#endif
++
+ #ifdef CONFIG_PM
+ static int dpaa_suspend(struct device *dev)
+@@ -1158,6 +1165,14 @@ static int __init __cold dpa_load(void)
+       pr_debug(KBUILD_MODNAME ": %s:%s() ->\n",
+               KBUILD_BASENAME".c", __func__);
++#ifdef CONFIG_FSL_DPAA_CEETM
++      _errno = register_qdisc(&ceetm_qdisc_ops);
++      if (unlikely(_errno))
++              pr_err(KBUILD_MODNAME
++                     ": %s:%hu:%s(): register_qdisc() = %d\n",
++                     KBUILD_BASENAME ".c", __LINE__, __func__, _errno);
++#endif
++
+       return _errno;
+ }
+ module_init(dpa_load);
+@@ -1167,6 +1182,10 @@ static void __exit __cold dpa_unload(voi
+       pr_debug(KBUILD_MODNAME ": -> %s:%s()\n",
+               KBUILD_BASENAME".c", __func__);
++#ifdef CONFIG_FSL_DPAA_CEETM
++      unregister_qdisc(&ceetm_qdisc_ops);
++#endif
++
+       platform_driver_unregister(&dpa_driver);
+ #ifdef CONFIG_FSL_DPAA_DBG_LOOP
+--- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c
++++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c
+@@ -33,16 +33,13 @@
+ #include <linux/init.h>
+ #include "dpaa_eth_ceetm.h"
+-#define DPA_CEETM_DESCRIPTION "FSL DPAA CEETM qdisc"
+-MODULE_LICENSE("Dual BSD/GPL");
+-MODULE_DESCRIPTION(DPA_CEETM_DESCRIPTION);
+-
+ const struct nla_policy ceetm_policy[TCA_CEETM_MAX + 1] = {
+       [TCA_CEETM_COPT] = { .len = sizeof(struct tc_ceetm_copt) },
+       [TCA_CEETM_QOPS] = { .len = sizeof(struct tc_ceetm_qopt) },
+ };
+ struct Qdisc_ops ceetm_qdisc_ops;
++EXPORT_SYMBOL(ceetm_qdisc_ops);
+ /* Obtain the DCP and the SP ids from the FMan port */
+ static void get_dcp_and_sp(struct net_device *dev, enum qm_dc_portal *dcp_id,
+@@ -2086,30 +2083,3 @@ drop:
+       dev_kfree_skb_any(skb);
+       return NET_XMIT_SUCCESS;
+ }
+-EXPORT_SYMBOL(ceetm_tx);
+-
+-static int __init ceetm_register(void)
+-{
+-      int _errno = 0;
+-
+-      pr_info(KBUILD_MODNAME ": " DPA_CEETM_DESCRIPTION "\n");
+-
+-      _errno = register_qdisc(&ceetm_qdisc_ops);
+-      if (unlikely(_errno))
+-              pr_err(KBUILD_MODNAME
+-                     ": %s:%hu:%s(): register_qdisc() = %d\n",
+-                     KBUILD_BASENAME ".c", __LINE__, __func__, _errno);
+-
+-      return _errno;
+-}
+-
+-static void __exit ceetm_unregister(void)
+-{
+-      pr_debug(KBUILD_MODNAME ": %s:%s() ->\n",
+-               KBUILD_BASENAME ".c", __func__);
+-
+-      unregister_qdisc(&ceetm_qdisc_ops);
+-}
+-
+-module_init(ceetm_register);
+-module_exit(ceetm_unregister);