diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0397-sdk_dpaa-ceetm-fix-recursive-dependencies.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0397-sdk_dpaa-ceetm-fix-recursive-dependencies.patch | 132 |
1 files changed, 132 insertions, 0 deletions
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 index 0000000000..dff27a4d35 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/701-net-0397-sdk_dpaa-ceetm-fix-recursive-dependencies.patch @@ -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); |