mac80211: add pending brcmfmac patches fixing multiple interfaces
[openwrt.git] / package / kernel / mac80211 / patches / 327-brcmfmac-add-dedicated-debug-level-for-firmware-cons.patch
1 From: Arend van Spriel <arend@broadcom.com>
2 Date: Wed, 26 Aug 2015 22:15:01 +0200
3 Subject: [PATCH] brcmfmac: add dedicated debug level for firmware
4  console logging
5
6 Both PCIe and SDIO devices have the possibility to log the firmware
7 console output in kernel log. For PCIe it is logged when PCIE debug
8 level is enabled. For SDIO it is logged when user specifies a non-zero
9 console interval through debugfs. This patch tries to make it a
10 bit more consistent. The firmware console output is only logged when
11 FWCON debug level is enabled.
12
13 Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
14 Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
15 Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
16 Reviewed-by: Pontus Fuchs <pontusf@broadcom.com>
17 Signed-off-by: Arend van Spriel <arend@broadcom.com>
18 ---
19
20 --- a/drivers/net/wireless/brcm80211/brcmfmac/debug.h
21 +++ b/drivers/net/wireless/brcm80211/brcmfmac/debug.h
22 @@ -37,6 +37,7 @@
23  #define BRCMF_SDIO_VAL         0x00020000
24  #define BRCMF_MSGBUF_VAL       0x00040000
25  #define BRCMF_PCIE_VAL         0x00080000
26 +#define BRCMF_FWCON_VAL                0x00100000
27  
28  /* set default print format */
29  #undef pr_fmt
30 @@ -78,6 +79,7 @@ do {                                                          \
31  #define BRCMF_GLOM_ON()                (brcmf_msg_level & BRCMF_GLOM_VAL)
32  #define BRCMF_EVENT_ON()       (brcmf_msg_level & BRCMF_EVENT_VAL)
33  #define BRCMF_FIL_ON()         (brcmf_msg_level & BRCMF_FIL_VAL)
34 +#define BRCMF_FWCON_ON()       (brcmf_msg_level & BRCMF_FWCON_VAL)
35  
36  #else /* defined(DEBUG) || defined(CPTCFG_BRCM_TRACING) */
37  
38 @@ -90,6 +92,7 @@ do {                                                          \
39  #define BRCMF_GLOM_ON()                0
40  #define BRCMF_EVENT_ON()       0
41  #define BRCMF_FIL_ON()         0
42 +#define BRCMF_FWCON_ON()       0
43  
44  #endif /* defined(DEBUG) || defined(CPTCFG_BRCM_TRACING) */
45  
46 --- a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
47 +++ b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
48 @@ -644,7 +644,7 @@ static void brcmf_pcie_bus_console_init(
49         addr = console->base_addr + BRCMF_CONSOLE_BUFSIZE_OFFSET;
50         console->bufsize = brcmf_pcie_read_tcm32(devinfo, addr);
51  
52 -       brcmf_dbg(PCIE, "Console: base %x, buf %x, size %d\n",
53 +       brcmf_dbg(FWCON, "Console: base %x, buf %x, size %d\n",
54                   console->base_addr, console->buf_addr, console->bufsize);
55  }
56  
57 @@ -656,6 +656,9 @@ static void brcmf_pcie_bus_console_read(
58         u8 ch;
59         u32 newidx;
60  
61 +       if (!BRCMF_FWCON_ON())
62 +               return;
63 +
64         console = &devinfo->shared.console;
65         addr = console->base_addr + BRCMF_CONSOLE_WRITEIDX_OFFSET;
66         newidx = brcmf_pcie_read_tcm32(devinfo, addr);
67 @@ -677,7 +680,7 @@ static void brcmf_pcie_bus_console_read(
68                 }
69                 if (ch == '\n') {
70                         console->log_str[console->log_idx] = 0;
71 -                       brcmf_dbg(PCIE, "CONSOLE: %s", console->log_str);
72 +                       pr_debug("CONSOLE: %s", console->log_str);
73                         console->log_idx = 0;
74                 }
75         }
76 --- a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
77 +++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
78 @@ -123,6 +123,7 @@ struct rte_console {
79  
80  #define BRCMF_FIRSTREAD        (1 << 6)
81  
82 +#define BRCMF_CONSOLE  10      /* watchdog interval to poll console */
83  
84  /* SBSDIO_DEVICE_CTL */
85  
86 @@ -3204,6 +3205,8 @@ static void brcmf_sdio_debugfs_create(st
87         if (IS_ERR_OR_NULL(dentry))
88                 return;
89  
90 +       bus->console_interval = BRCMF_CONSOLE;
91 +
92         brcmf_debugfs_add_entry(drvr, "forensics", brcmf_sdio_forensic_read);
93         brcmf_debugfs_add_entry(drvr, "counters",
94                                 brcmf_debugfs_sdio_count_read);
95 @@ -3613,7 +3616,7 @@ static void brcmf_sdio_bus_watchdog(stru
96         }
97  #ifdef DEBUG
98         /* Poll for console output periodically */
99 -       if (bus->sdiodev->state == BRCMF_SDIOD_DATA &&
100 +       if (bus->sdiodev->state == BRCMF_SDIOD_DATA && BRCMF_FWCON_ON() &&
101             bus->console_interval != 0) {
102                 bus->console.count += BRCMF_WD_POLL_MS;
103                 if (bus->console.count >= bus->console_interval) {