327-v4.17-0005-brcmfmac-use-wiphy-debugfs-dir-entry.patch 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. From 34789d0cf682c643862792750a06c31ccf016cbc Mon Sep 17 00:00:00 2001
  2. From: Arend Van Spriel <[email protected]>
  3. Date: Thu, 22 Mar 2018 21:28:24 +0100
  4. Subject: [PATCH] brcmfmac: use wiphy debugfs dir entry
  5. The driver used to create a brcmfmac dir entry at the top level
  6. debugfs mount point. This moves the debugfs entries into the
  7. wiphy debugfs dir entry.
  8. Reviewed-by: Hante Meuleman <[email protected]>
  9. Reviewed-by: Pieter-Paul Giesberts <[email protected]>
  10. Reviewed-by: Franky Lin <[email protected]>
  11. Signed-off-by: Arend van Spriel <[email protected]>
  12. Signed-off-by: Kalle Valo <[email protected]>
  13. ---
  14. .../wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 6 ++++
  15. .../wireless/broadcom/brcm80211/brcmfmac/common.c | 5 ---
  16. .../wireless/broadcom/brcm80211/brcmfmac/core.c | 11 +++---
  17. .../wireless/broadcom/brcm80211/brcmfmac/debug.c | 42 ++--------------------
  18. .../wireless/broadcom/brcm80211/brcmfmac/debug.h | 17 ---------
  19. .../wireless/broadcom/brcm80211/brcmfmac/feature.c | 3 ++
  20. .../wireless/broadcom/brcm80211/brcmfmac/feature.h | 7 ++++
  21. .../broadcom/brcm80211/brcmfmac/fwsignal.c | 11 +++---
  22. .../broadcom/brcm80211/brcmfmac/fwsignal.h | 1 +
  23. .../wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 8 +++--
  24. .../wireless/broadcom/brcm80211/brcmfmac/proto.c | 3 +-
  25. .../wireless/broadcom/brcm80211/brcmfmac/proto.h | 7 ++++
  26. 12 files changed, 47 insertions(+), 74 deletions(-)
  27. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
  28. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
  29. @@ -445,6 +445,11 @@ brcmf_proto_bcdc_init_done(struct brcmf_
  30. return 0;
  31. }
  32. +static void brcmf_proto_bcdc_debugfs_create(struct brcmf_pub *drvr)
  33. +{
  34. + brcmf_fws_debugfs_create(drvr);
  35. +}
  36. +
  37. int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
  38. {
  39. struct brcmf_bcdc *bcdc;
  40. @@ -472,6 +477,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
  41. drvr->proto->del_if = brcmf_proto_bcdc_del_if;
  42. drvr->proto->reset_if = brcmf_proto_bcdc_reset_if;
  43. drvr->proto->init_done = brcmf_proto_bcdc_init_done;
  44. + drvr->proto->debugfs_create = brcmf_proto_bcdc_debugfs_create;
  45. drvr->proto->pd = bcdc;
  46. drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
  47. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
  48. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
  49. @@ -529,9 +529,6 @@ static int __init brcmfmac_module_init(v
  50. {
  51. int err;
  52. - /* Initialize debug system first */
  53. - brcmf_debugfs_init();
  54. -
  55. /* Get the platform data (if available) for our devices */
  56. err = platform_driver_probe(&brcmf_pd, brcmf_common_pd_probe);
  57. if (err == -ENODEV)
  58. @@ -543,7 +540,6 @@ static int __init brcmfmac_module_init(v
  59. /* Continue the initialization by registering the different busses */
  60. err = brcmf_core_init();
  61. if (err) {
  62. - brcmf_debugfs_exit();
  63. if (brcmfmac_pdata)
  64. platform_driver_unregister(&brcmf_pd);
  65. }
  66. @@ -556,7 +552,6 @@ static void __exit brcmfmac_module_exit(
  67. brcmf_core_exit();
  68. if (brcmfmac_pdata)
  69. platform_driver_unregister(&brcmf_pd);
  70. - brcmf_debugfs_exit();
  71. }
  72. module_init(brcmfmac_module_init);
  73. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
  74. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
  75. @@ -1050,8 +1050,6 @@ static int brcmf_bus_started(struct brcm
  76. if (ret < 0)
  77. goto fail;
  78. - brcmf_debugfs_add_entry(drvr, "revinfo", brcmf_revinfo_read);
  79. -
  80. brcmf_feat_attach(drvr);
  81. ret = brcmf_proto_init_done(drvr);
  82. @@ -1094,6 +1092,11 @@ static int brcmf_bus_started(struct brcm
  83. #endif
  84. #endif /* CONFIG_INET */
  85. + /* populate debugfs */
  86. + brcmf_debugfs_add_entry(drvr, "revinfo", brcmf_revinfo_read);
  87. + brcmf_feat_debugfs_create(drvr);
  88. + brcmf_proto_debugfs_create(drvr);
  89. +
  90. return 0;
  91. fail:
  92. @@ -1146,9 +1149,6 @@ int brcmf_attach(struct device *dev, str
  93. drvr->bus_if->drvr = drvr;
  94. drvr->settings = settings;
  95. - /* attach debug facilities */
  96. - brcmf_debug_attach(drvr);
  97. -
  98. /* Attach and link in the protocol */
  99. ret = brcmf_proto_attach(drvr);
  100. if (ret != 0) {
  101. @@ -1238,7 +1238,6 @@ void brcmf_detach(struct device *dev)
  102. brcmf_proto_detach(drvr);
  103. - brcmf_debug_detach(drvr);
  104. bus_if->drvr = NULL;
  105. wiphy_free(drvr->wiphy);
  106. }
  107. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
  108. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
  109. @@ -25,8 +25,6 @@
  110. #include "fweh.h"
  111. #include "debug.h"
  112. -static struct dentry *root_folder;
  113. -
  114. int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
  115. size_t len)
  116. {
  117. @@ -54,44 +52,9 @@ int brcmf_debug_create_memdump(struct br
  118. return 0;
  119. }
  120. -void brcmf_debugfs_init(void)
  121. -{
  122. - root_folder = debugfs_create_dir(KBUILD_MODNAME, NULL);
  123. - if (IS_ERR(root_folder))
  124. - root_folder = NULL;
  125. -}
  126. -
  127. -void brcmf_debugfs_exit(void)
  128. -{
  129. - if (!root_folder)
  130. - return;
  131. -
  132. - debugfs_remove_recursive(root_folder);
  133. - root_folder = NULL;
  134. -}
  135. -
  136. -int brcmf_debug_attach(struct brcmf_pub *drvr)
  137. -{
  138. - struct device *dev = drvr->bus_if->dev;
  139. -
  140. - if (!root_folder)
  141. - return -ENODEV;
  142. -
  143. - drvr->dbgfs_dir = debugfs_create_dir(dev_name(dev), root_folder);
  144. - return PTR_ERR_OR_ZERO(drvr->dbgfs_dir);
  145. -}
  146. -
  147. -void brcmf_debug_detach(struct brcmf_pub *drvr)
  148. -{
  149. - brcmf_fweh_unregister(drvr, BRCMF_E_PSM_WATCHDOG);
  150. -
  151. - if (!IS_ERR_OR_NULL(drvr->dbgfs_dir))
  152. - debugfs_remove_recursive(drvr->dbgfs_dir);
  153. -}
  154. -
  155. struct dentry *brcmf_debugfs_get_devdir(struct brcmf_pub *drvr)
  156. {
  157. - return drvr->dbgfs_dir;
  158. + return drvr->wiphy->debugfsdir;
  159. }
  160. int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
  161. @@ -99,7 +62,8 @@ int brcmf_debugfs_add_entry(struct brcmf
  162. {
  163. struct dentry *e;
  164. + WARN(!drvr->wiphy->debugfsdir, "wiphy not (yet) registered\n");
  165. e = debugfs_create_devm_seqfile(drvr->bus_if->dev, fn,
  166. - drvr->dbgfs_dir, read_fn);
  167. + drvr->wiphy->debugfsdir, read_fn);
  168. return PTR_ERR_OR_ZERO(e);
  169. }
  170. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
  171. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
  172. @@ -113,29 +113,12 @@ extern int brcmf_msg_level;
  173. struct brcmf_bus;
  174. struct brcmf_pub;
  175. #ifdef DEBUG
  176. -void brcmf_debugfs_init(void);
  177. -void brcmf_debugfs_exit(void);
  178. -int brcmf_debug_attach(struct brcmf_pub *drvr);
  179. -void brcmf_debug_detach(struct brcmf_pub *drvr);
  180. struct dentry *brcmf_debugfs_get_devdir(struct brcmf_pub *drvr);
  181. int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
  182. int (*read_fn)(struct seq_file *seq, void *data));
  183. int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
  184. size_t len);
  185. #else
  186. -static inline void brcmf_debugfs_init(void)
  187. -{
  188. -}
  189. -static inline void brcmf_debugfs_exit(void)
  190. -{
  191. -}
  192. -static inline int brcmf_debug_attach(struct brcmf_pub *drvr)
  193. -{
  194. - return 0;
  195. -}
  196. -static inline void brcmf_debug_detach(struct brcmf_pub *drvr)
  197. -{
  198. -}
  199. static inline
  200. int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
  201. int (*read_fn)(struct seq_file *seq, void *data))
  202. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
  203. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
  204. @@ -228,7 +228,10 @@ void brcmf_feat_attach(struct brcmf_pub
  205. /* no quirks */
  206. break;
  207. }
  208. +}
  209. +void brcmf_feat_debugfs_create(struct brcmf_pub *drvr)
  210. +{
  211. brcmf_debugfs_add_entry(drvr, "features", brcmf_feat_debugfs_read);
  212. }
  213. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
  214. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
  215. @@ -90,6 +90,13 @@ enum brcmf_feat_quirk {
  216. void brcmf_feat_attach(struct brcmf_pub *drvr);
  217. /**
  218. + * brcmf_feat_debugfs_create() - create debugfs entries.
  219. + *
  220. + * @drvr: driver instance.
  221. + */
  222. +void brcmf_feat_debugfs_create(struct brcmf_pub *drvr);
  223. +
  224. +/**
  225. * brcmf_feat_is_enabled() - query feature.
  226. *
  227. * @ifp: interface instance.
  228. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
  229. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
  230. @@ -2399,10 +2399,6 @@ struct brcmf_fws_info *brcmf_fws_attach(
  231. brcmu_pktq_init(&fws->desc.other.psq, BRCMF_FWS_PSQ_PREC_COUNT,
  232. BRCMF_FWS_PSQ_LEN);
  233. - /* create debugfs file for statistics */
  234. - brcmf_debugfs_add_entry(drvr, "fws_stats",
  235. - brcmf_debugfs_fws_stats_read);
  236. -
  237. brcmf_dbg(INFO, "%s bdcv2 tlv signaling [%x]\n",
  238. fws->fw_signals ? "enabled" : "disabled", tlv);
  239. return fws;
  240. @@ -2429,6 +2425,13 @@ void brcmf_fws_detach(struct brcmf_fws_i
  241. kfree(fws);
  242. }
  243. +void brcmf_fws_debugfs_create(struct brcmf_pub *drvr)
  244. +{
  245. + /* create debugfs file for statistics */
  246. + brcmf_debugfs_add_entry(drvr, "fws_stats",
  247. + brcmf_debugfs_fws_stats_read);
  248. +}
  249. +
  250. bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws)
  251. {
  252. return !fws->avoid_queueing;
  253. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h
  254. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h
  255. @@ -20,6 +20,7 @@
  256. struct brcmf_fws_info *brcmf_fws_attach(struct brcmf_pub *drvr);
  257. void brcmf_fws_detach(struct brcmf_fws_info *fws);
  258. +void brcmf_fws_debugfs_create(struct brcmf_pub *drvr);
  259. bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws);
  260. bool brcmf_fws_fc_active(struct brcmf_fws_info *fws);
  261. void brcmf_fws_hdrpull(struct brcmf_if *ifp, s16 siglen, struct sk_buff *skb);
  262. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
  263. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
  264. @@ -1418,6 +1418,11 @@ static int brcmf_msgbuf_stats_read(struc
  265. }
  266. #endif
  267. +static void brcmf_msgbuf_debugfs_create(struct brcmf_pub *drvr)
  268. +{
  269. + brcmf_debugfs_add_entry(drvr, "msgbuf_stats", brcmf_msgbuf_stats_read);
  270. +}
  271. +
  272. int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr)
  273. {
  274. struct brcmf_bus_msgbuf *if_msgbuf;
  275. @@ -1472,6 +1477,7 @@ int brcmf_proto_msgbuf_attach(struct brc
  276. drvr->proto->delete_peer = brcmf_msgbuf_delete_peer;
  277. drvr->proto->add_tdls_peer = brcmf_msgbuf_add_tdls_peer;
  278. drvr->proto->rxreorder = brcmf_msgbuf_rxreorder;
  279. + drvr->proto->debugfs_create = brcmf_msgbuf_debugfs_create;
  280. drvr->proto->pd = msgbuf;
  281. init_waitqueue_head(&msgbuf->ioctl_resp_wait);
  282. @@ -1525,8 +1531,6 @@ int brcmf_proto_msgbuf_attach(struct brc
  283. spin_lock_init(&msgbuf->flowring_work_lock);
  284. INIT_LIST_HEAD(&msgbuf->work_queue);
  285. - brcmf_debugfs_add_entry(drvr, "msgbuf_stats", brcmf_msgbuf_stats_read);
  286. -
  287. return 0;
  288. fail:
  289. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c
  290. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c
  291. @@ -54,7 +54,8 @@ int brcmf_proto_attach(struct brcmf_pub
  292. if (!proto->tx_queue_data || (proto->hdrpull == NULL) ||
  293. (proto->query_dcmd == NULL) || (proto->set_dcmd == NULL) ||
  294. (proto->configure_addr_mode == NULL) ||
  295. - (proto->delete_peer == NULL) || (proto->add_tdls_peer == NULL)) {
  296. + (proto->delete_peer == NULL) || (proto->add_tdls_peer == NULL) ||
  297. + (proto->debugfs_create == NULL)) {
  298. brcmf_err("Not all proto handlers have been installed\n");
  299. goto fail;
  300. }
  301. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
  302. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
  303. @@ -48,6 +48,7 @@ struct brcmf_proto {
  304. void (*del_if)(struct brcmf_if *ifp);
  305. void (*reset_if)(struct brcmf_if *ifp);
  306. int (*init_done)(struct brcmf_pub *drvr);
  307. + void (*debugfs_create)(struct brcmf_pub *drvr);
  308. void *pd;
  309. };
  310. @@ -156,4 +157,10 @@ brcmf_proto_init_done(struct brcmf_pub *
  311. return drvr->proto->init_done(drvr);
  312. }
  313. +static inline void
  314. +brcmf_proto_debugfs_create(struct brcmf_pub *drvr)
  315. +{
  316. + drvr->proto->debugfs_create(drvr);
  317. +}
  318. +
  319. #endif /* BRCMFMAC_PROTO_H */