mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 15:56:49 +00:00
133 lines
4.1 KiB
Diff
133 lines
4.1 KiB
Diff
|
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);
|