aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch')
-rw-r--r--package/kernel/mac80211/patches/327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch349
1 files changed, 349 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch b/package/kernel/mac80211/patches/327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch
new file mode 100644
index 0000000000..c5485c390a
--- /dev/null
+++ b/package/kernel/mac80211/patches/327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch
@@ -0,0 +1,349 @@
+From 34789d0cf682c643862792750a06c31ccf016cbc Mon Sep 17 00:00:00 2001
+From: Arend Van Spriel <arend.vanspriel@broadcom.com>
+Date: Thu, 22 Mar 2018 21:28:24 +0100
+Subject: [PATCH] brcmfmac: use wiphy debugfs dir entry
+
+The driver used to create a brcmfmac dir entry at the top level
+debugfs mount point. This moves the debugfs entries into the
+wiphy debugfs dir entry.
+
+Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
+Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
+Reviewed-by: Franky Lin <franky.lin@broadcom.com>
+Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ .../wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 6 ++++
+ .../wireless/broadcom/brcm80211/brcmfmac/common.c | 5 ---
+ .../wireless/broadcom/brcm80211/brcmfmac/core.c | 11 +++---
+ .../wireless/broadcom/brcm80211/brcmfmac/debug.c | 42 ++--------------------
+ .../wireless/broadcom/brcm80211/brcmfmac/debug.h | 17 ---------
+ .../wireless/broadcom/brcm80211/brcmfmac/feature.c | 3 ++
+ .../wireless/broadcom/brcm80211/brcmfmac/feature.h | 7 ++++
+ .../broadcom/brcm80211/brcmfmac/fwsignal.c | 11 +++---
+ .../broadcom/brcm80211/brcmfmac/fwsignal.h | 1 +
+ .../wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 8 +++--
+ .../wireless/broadcom/brcm80211/brcmfmac/proto.c | 3 +-
+ .../wireless/broadcom/brcm80211/brcmfmac/proto.h | 7 ++++
+ 12 files changed, 47 insertions(+), 74 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
+@@ -445,6 +445,11 @@ brcmf_proto_bcdc_init_done(struct brcmf_
+ return 0;
+ }
+
++static void brcmf_proto_bcdc_debugfs_create(struct brcmf_pub *drvr)
++{
++ brcmf_fws_debugfs_create(drvr);
++}
++
+ int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
+ {
+ struct brcmf_bcdc *bcdc;
+@@ -472,6 +477,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
+ drvr->proto->del_if = brcmf_proto_bcdc_del_if;
+ drvr->proto->reset_if = brcmf_proto_bcdc_reset_if;
+ drvr->proto->init_done = brcmf_proto_bcdc_init_done;
++ drvr->proto->debugfs_create = brcmf_proto_bcdc_debugfs_create;
+ drvr->proto->pd = bcdc;
+
+ drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+@@ -529,9 +529,6 @@ static int __init brcmfmac_module_init(v
+ {
+ int err;
+
+- /* Initialize debug system first */
+- brcmf_debugfs_init();
+-
+ /* Get the platform data (if available) for our devices */
+ err = platform_driver_probe(&brcmf_pd, brcmf_common_pd_probe);
+ if (err == -ENODEV)
+@@ -543,7 +540,6 @@ static int __init brcmfmac_module_init(v
+ /* Continue the initialization by registering the different busses */
+ err = brcmf_core_init();
+ if (err) {
+- brcmf_debugfs_exit();
+ if (brcmfmac_pdata)
+ platform_driver_unregister(&brcmf_pd);
+ }
+@@ -556,7 +552,6 @@ static void __exit brcmfmac_module_exit(
+ brcmf_core_exit();
+ if (brcmfmac_pdata)
+ platform_driver_unregister(&brcmf_pd);
+- brcmf_debugfs_exit();
+ }
+
+ module_init(brcmfmac_module_init);
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+@@ -1050,8 +1050,6 @@ static int brcmf_bus_started(struct brcm
+ if (ret < 0)
+ goto fail;
+
+- brcmf_debugfs_add_entry(drvr, "revinfo", brcmf_revinfo_read);
+-
+ brcmf_feat_attach(drvr);
+
+ ret = brcmf_proto_init_done(drvr);
+@@ -1094,6 +1092,11 @@ static int brcmf_bus_started(struct brcm
+ #endif
+ #endif /* CONFIG_INET */
+
++ /* populate debugfs */
++ brcmf_debugfs_add_entry(drvr, "revinfo", brcmf_revinfo_read);
++ brcmf_feat_debugfs_create(drvr);
++ brcmf_proto_debugfs_create(drvr);
++
+ return 0;
+
+ fail:
+@@ -1146,9 +1149,6 @@ int brcmf_attach(struct device *dev, str
+ drvr->bus_if->drvr = drvr;
+ drvr->settings = settings;
+
+- /* attach debug facilities */
+- brcmf_debug_attach(drvr);
+-
+ /* Attach and link in the protocol */
+ ret = brcmf_proto_attach(drvr);
+ if (ret != 0) {
+@@ -1238,7 +1238,6 @@ void brcmf_detach(struct device *dev)
+
+ brcmf_proto_detach(drvr);
+
+- brcmf_debug_detach(drvr);
+ bus_if->drvr = NULL;
+ wiphy_free(drvr->wiphy);
+ }
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
+@@ -25,8 +25,6 @@
+ #include "fweh.h"
+ #include "debug.h"
+
+-static struct dentry *root_folder;
+-
+ int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
+ size_t len)
+ {
+@@ -54,44 +52,9 @@ int brcmf_debug_create_memdump(struct br
+ return 0;
+ }
+
+-void brcmf_debugfs_init(void)
+-{
+- root_folder = debugfs_create_dir(KBUILD_MODNAME, NULL);
+- if (IS_ERR(root_folder))
+- root_folder = NULL;
+-}
+-
+-void brcmf_debugfs_exit(void)
+-{
+- if (!root_folder)
+- return;
+-
+- debugfs_remove_recursive(root_folder);
+- root_folder = NULL;
+-}
+-
+-int brcmf_debug_attach(struct brcmf_pub *drvr)
+-{
+- struct device *dev = drvr->bus_if->dev;
+-
+- if (!root_folder)
+- return -ENODEV;
+-
+- drvr->dbgfs_dir = debugfs_create_dir(dev_name(dev), root_folder);
+- return PTR_ERR_OR_ZERO(drvr->dbgfs_dir);
+-}
+-
+-void brcmf_debug_detach(struct brcmf_pub *drvr)
+-{
+- brcmf_fweh_unregister(drvr, BRCMF_E_PSM_WATCHDOG);
+-
+- if (!IS_ERR_OR_NULL(drvr->dbgfs_dir))
+- debugfs_remove_recursive(drvr->dbgfs_dir);
+-}
+-
+ struct dentry *brcmf_debugfs_get_devdir(struct brcmf_pub *drvr)
+ {
+- return drvr->dbgfs_dir;
++ return drvr->wiphy->debugfsdir;
+ }
+
+ int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
+@@ -99,7 +62,8 @@ int brcmf_debugfs_add_entry(struct brcmf
+ {
+ struct dentry *e;
+
++ WARN(!drvr->wiphy->debugfsdir, "wiphy not (yet) registered\n");
+ e = debugfs_create_devm_seqfile(drvr->bus_if->dev, fn,
+- drvr->dbgfs_dir, read_fn);
++ drvr->wiphy->debugfsdir, read_fn);
+ return PTR_ERR_OR_ZERO(e);
+ }
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
+@@ -113,29 +113,12 @@ extern int brcmf_msg_level;
+ struct brcmf_bus;
+ struct brcmf_pub;
+ #ifdef DEBUG
+-void brcmf_debugfs_init(void);
+-void brcmf_debugfs_exit(void);
+-int brcmf_debug_attach(struct brcmf_pub *drvr);
+-void brcmf_debug_detach(struct brcmf_pub *drvr);
+ struct dentry *brcmf_debugfs_get_devdir(struct brcmf_pub *drvr);
+ int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
+ int (*read_fn)(struct seq_file *seq, void *data));
+ int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
+ size_t len);
+ #else
+-static inline void brcmf_debugfs_init(void)
+-{
+-}
+-static inline void brcmf_debugfs_exit(void)
+-{
+-}
+-static inline int brcmf_debug_attach(struct brcmf_pub *drvr)
+-{
+- return 0;
+-}
+-static inline void brcmf_debug_detach(struct brcmf_pub *drvr)
+-{
+-}
+ static inline
+ int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
+ int (*read_fn)(struct seq_file *seq, void *data))
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+@@ -228,7 +228,10 @@ void brcmf_feat_attach(struct brcmf_pub
+ /* no quirks */
+ break;
+ }
++}
+
++void brcmf_feat_debugfs_create(struct brcmf_pub *drvr)
++{
+ brcmf_debugfs_add_entry(drvr, "features", brcmf_feat_debugfs_read);
+ }
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
+@@ -90,6 +90,13 @@ enum brcmf_feat_quirk {
+ void brcmf_feat_attach(struct brcmf_pub *drvr);
+
+ /**
++ * brcmf_feat_debugfs_create() - create debugfs entries.
++ *
++ * @drvr: driver instance.
++ */
++void brcmf_feat_debugfs_create(struct brcmf_pub *drvr);
++
++/**
+ * brcmf_feat_is_enabled() - query feature.
+ *
+ * @ifp: interface instance.
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
+@@ -2399,10 +2399,6 @@ struct brcmf_fws_info *brcmf_fws_attach(
+ brcmu_pktq_init(&fws->desc.other.psq, BRCMF_FWS_PSQ_PREC_COUNT,
+ BRCMF_FWS_PSQ_LEN);
+
+- /* create debugfs file for statistics */
+- brcmf_debugfs_add_entry(drvr, "fws_stats",
+- brcmf_debugfs_fws_stats_read);
+-
+ brcmf_dbg(INFO, "%s bdcv2 tlv signaling [%x]\n",
+ fws->fw_signals ? "enabled" : "disabled", tlv);
+ return fws;
+@@ -2429,6 +2425,13 @@ void brcmf_fws_detach(struct brcmf_fws_i
+ kfree(fws);
+ }
+
++void brcmf_fws_debugfs_create(struct brcmf_pub *drvr)
++{
++ /* create debugfs file for statistics */
++ brcmf_debugfs_add_entry(drvr, "fws_stats",
++ brcmf_debugfs_fws_stats_read);
++}
++
+ bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws)
+ {
+ return !fws->avoid_queueing;
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h
+@@ -20,6 +20,7 @@
+
+ struct brcmf_fws_info *brcmf_fws_attach(struct brcmf_pub *drvr);
+ void brcmf_fws_detach(struct brcmf_fws_info *fws);
++void brcmf_fws_debugfs_create(struct brcmf_pub *drvr);
+ bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws);
+ bool brcmf_fws_fc_active(struct brcmf_fws_info *fws);
+ void brcmf_fws_hdrpull(struct brcmf_if *ifp, s16 siglen, struct sk_buff *skb);
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
+@@ -1418,6 +1418,11 @@ static int brcmf_msgbuf_stats_read(struc
+ }
+ #endif
+
++static void brcmf_msgbuf_debugfs_create(struct brcmf_pub *drvr)
++{
++ brcmf_debugfs_add_entry(drvr, "msgbuf_stats", brcmf_msgbuf_stats_read);
++}
++
+ int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr)
+ {
+ struct brcmf_bus_msgbuf *if_msgbuf;
+@@ -1472,6 +1477,7 @@ int brcmf_proto_msgbuf_attach(struct brc
+ drvr->proto->delete_peer = brcmf_msgbuf_delete_peer;
+ drvr->proto->add_tdls_peer = brcmf_msgbuf_add_tdls_peer;
+ drvr->proto->rxreorder = brcmf_msgbuf_rxreorder;
++ drvr->proto->debugfs_create = brcmf_msgbuf_debugfs_create;
+ drvr->proto->pd = msgbuf;
+
+ init_waitqueue_head(&msgbuf->ioctl_resp_wait);
+@@ -1525,8 +1531,6 @@ int brcmf_proto_msgbuf_attach(struct brc
+ spin_lock_init(&msgbuf->flowring_work_lock);
+ INIT_LIST_HEAD(&msgbuf->work_queue);
+
+- brcmf_debugfs_add_entry(drvr, "msgbuf_stats", brcmf_msgbuf_stats_read);
+-
+ return 0;
+
+ fail:
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c
+@@ -54,7 +54,8 @@ int brcmf_proto_attach(struct brcmf_pub
+ if (!proto->tx_queue_data || (proto->hdrpull == NULL) ||
+ (proto->query_dcmd == NULL) || (proto->set_dcmd == NULL) ||
+ (proto->configure_addr_mode == NULL) ||
+- (proto->delete_peer == NULL) || (proto->add_tdls_peer == NULL)) {
++ (proto->delete_peer == NULL) || (proto->add_tdls_peer == NULL) ||
++ (proto->debugfs_create == NULL)) {
+ brcmf_err("Not all proto handlers have been installed\n");
+ goto fail;
+ }
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
+@@ -48,6 +48,7 @@ struct brcmf_proto {
+ void (*del_if)(struct brcmf_if *ifp);
+ void (*reset_if)(struct brcmf_if *ifp);
+ int (*init_done)(struct brcmf_pub *drvr);
++ void (*debugfs_create)(struct brcmf_pub *drvr);
+ void *pd;
+ };
+
+@@ -156,4 +157,10 @@ brcmf_proto_init_done(struct brcmf_pub *
+ return drvr->proto->init_done(drvr);
+ }
+
++static inline void
++brcmf_proto_debugfs_create(struct brcmf_pub *drvr)
++{
++ drvr->proto->debugfs_create(drvr);
++}
++
+ #endif /* BRCMFMAC_PROTO_H */