diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2018-06-17 22:46:35 +0200 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2018-06-17 22:46:35 +0200 |
commit | 3c8bb92655c68a07abf5358ef23eb98422ed8d6d (patch) | |
tree | 43961eb68b7f2af4ddc99402dab68ea32a0290c3 /package/kernel/mac80211/patches/327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch | |
parent | 0da9303e5b444e2c98c24719c48c09f4c976c5a7 (diff) | |
download | upstream-3c8bb92655c68a07abf5358ef23eb98422ed8d6d.tar.gz upstream-3c8bb92655c68a07abf5358ef23eb98422ed8d6d.tar.bz2 upstream-3c8bb92655c68a07abf5358ef23eb98422ed8d6d.zip |
mac80211: backport brcmfmac data structure rework
It backports brcmfmac commits from kernel 4.17.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
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.patch | 349 |
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 */ |