xref: /OK3568_Linux_fs/external/rkwifibt/drivers/bcmdhd/dhd_buzzz.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #ifndef _DHD_BUZZZ_H_INCLUDED_
2 #define _DHD_BUZZZ_H_INCLUDED_
3 
4 */
5  * Copyright (C) 2020, Broadcom.
6  *
7  *      Unless you and Broadcom execute a separate written software license
8  * agreement governing use of this software, this software is licensed to you
9  * under the terms of the GNU General Public License version 2 (the "GPL"),
10  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
11  * following added to such license:
12  *
13  *      As a special exception, the copyright holders of this software give you
14  * permission to link this software with independent modules, and to copy and
15  * distribute the resulting executable under terms of your choice, provided that
16  * you also meet, for each linked independent module, the terms and conditions of
17  * the license of that module.  An independent module is a module which is not
18  * derived from this software.  The special exception does not apply to any
19  * modifications of the software.
20  *
21  *
22  * <<Broadcom-WL-IPTag/Open:>>
23  *
24  * $Id$
25  */
26 
27 #if defined(DHD_BUZZZ_LOG_ENABLED)
28 /*
29  * Broadcom proprietary logging system. Deleted performance counters.
30  */
31 void dhd_buzzz_attach(void);
32 void dhd_buzzz_detach(void);
33 void dhd_buzzz_panic(uint32 crash);
34 void dhd_buzzz_dump(void);
35 void dhd_buzzz_log_disable(void);
36 void dhd_buzzz_crash(void);
37 
38 void dhd_buzzz_log0(uint32 evt_id);
39 void dhd_buzzz_log1(uint32 evt_id, uint32 arg1);
40 void dhd_buzzz_log2(uint32 evt_id, uint32 arg1, uintptr arg2);
41 
42 void dhd_buzzz_fmt_reg(uint32 id, char * fmt);
43 
44 extern void* dhd_os_create_buzzz_thread(void);
45 extern void dhd_os_destroy_buzzz_thread(void *thr_hdl);
46 extern void dhd_os_sched_buzzz_thread(void *thr_hdl);
47 
48 #undef BUZZZ_EVT
49 #define BUZZZ_EVT(ID)		BUZZZ_EVT__## ID,
50 
51 #undef BUZZZ_FMT
52 #define BUZZZ_FMT(ID, format) \
53 	dhd_buzzz_fmt_reg(BUZZZ_EVT__## ID, "\t" format);
54 
55 typedef enum buzzz_evt_id
56 {
57 	BUZZZ_EVT__DHD = 100, /* BUZZZ_EVT(DHD) */
58 	BUZZZ_EVT(GENERAL_LOCK)
59 	BUZZZ_EVT(GENERAL_UNLOCK)
60 	BUZZZ_EVT(FLOWRING_LOCK)
61 	BUZZZ_EVT(FLOWRING_UNLOCK)
62 	BUZZZ_EVT(FLOWID_LOCK)
63 	BUZZZ_EVT(FLOWID_UNLOCK)
64 
65 	BUZZZ_EVT(START_XMIT_BGN)
66 	BUZZZ_EVT(START_XMIT_END)
67 	BUZZZ_EVT(PROCESS_CTRL_BGN)
68 	BUZZZ_EVT(PROCESS_CTRL_END)
69 	BUZZZ_EVT(UPDATE_TXFLOWRINGS_BGN)
70 	BUZZZ_EVT(UPDATE_TXFLOWRINGS_END)
71 	BUZZZ_EVT(PROCESS_TXCPL_BGN)
72 	BUZZZ_EVT(PROCESS_TXCPL_END)
73 	BUZZZ_EVT(PROCESS_RXCPL_BGN)
74 	BUZZZ_EVT(PROCESS_RXCPL_END)
75 
76 	BUZZZ_EVT(GET_SRC_ADDR)
77 	BUZZZ_EVT(WRITE_COMPLETE)
78 	BUZZZ_EVT(ALLOC_RING_SPACE)
79 	BUZZZ_EVT(ALLOC_RING_SPACE_RET)
80 	BUZZZ_EVT(ALLOC_RING_SPACE_FAIL)
81 
82 	BUZZZ_EVT(PKTID_MAP_CLEAR)
83 	BUZZZ_EVT(PKTID_NOT_AVAILABLE)
84 	BUZZZ_EVT(PKTID_MAP_RSV)
85 	BUZZZ_EVT(PKTID_MAP_SAVE)
86 	BUZZZ_EVT(PKTID_MAP_ALLOC)
87 	BUZZZ_EVT(PKTID_MAP_FREE)
88 	BUZZZ_EVT(LOCKER_INUSE_ABORT)
89 	BUZZZ_EVT(BUFFER_TYPE_ABORT1)
90 	BUZZZ_EVT(BUFFER_TYPE_ABORT2)
91 
92 	BUZZZ_EVT(UPD_READ_IDX)
93 	BUZZZ_EVT(STORE_RXCPLN_RD)
94 	BUZZZ_EVT(EARLY_UPD_RXCPLN_RD)
95 
96 	BUZZZ_EVT(POST_TXDATA)
97 	BUZZZ_EVT(RETURN_RXBUF)
98 	BUZZZ_EVT(RXBUF_POST)
99 	BUZZZ_EVT(RXBUF_POST_EVENT)
100 	BUZZZ_EVT(RXBUF_POST_IOCTL)
101 	BUZZZ_EVT(RXBUF_POST_CTRL_PKTGET_FAIL)
102 	BUZZZ_EVT(RXBUF_POST_PKTGET_FAIL)
103 	BUZZZ_EVT(RXBUF_POST_PKTID_FAIL)
104 
105 	BUZZZ_EVT(DHD_DUPLICATE_ALLOC)
106 	BUZZZ_EVT(DHD_DUPLICATE_FREE)
107 	BUZZZ_EVT(DHD_TEST_IS_ALLOC)
108 	BUZZZ_EVT(DHD_TEST_IS_FREE)
109 
110 	BUZZZ_EVT(DHD_PROT_IOCT_BGN)
111 	BUZZZ_EVT(DHDMSGBUF_CMPLT_BGN)
112 	BUZZZ_EVT(DHDMSGBUF_CMPLT_END)
113 	BUZZZ_EVT(DHD_PROT_IOCT_END)
114 	BUZZZ_EVT(DHD_FILLUP_IOCT_REQST_BGN)
115 	BUZZZ_EVT(DHD_FILLUP_IOCT_REQST_END)
116 	BUZZZ_EVT(DHD_MSGBUF_RXBUF_POST_IOCTLRESP_BUFS_BGN)
117 	BUZZZ_EVT(DHD_MSGBUF_RXBUF_POST_IOCTLRESP_BUFS_END)
118 	BUZZZ_EVT(DHD_PROT_IOCTCMPLT_PROCESS_ONE)
119 	BUZZZ_EVT(DHD_PROT_IOCTCMPLT_PROCESS_TWO)
120 	BUZZZ_EVT(DHD_PROT_EVENT_PROCESS_BGN)
121 	BUZZZ_EVT(DHD_PROT_EVENT_PROCESS_END)
122 	BUZZZ_EVT(DHD_PROT_D2H_SYNC_LIVELOCK)
123 	BUZZZ_EVT(DHD_IOCTL_BUFPOST)
124 	BUZZZ_EVT(DHD_EVENT_BUFPOST)
125 	BUZZZ_EVT(DHD_PROC_MSG_TYPE)
126 	BUZZZ_EVT(DHD_BUS_RXCTL_ONE)
127 	BUZZZ_EVT(DHD_BUS_RXCTL_TWO)
128 } buzzz_evt_id_t;
129 
130 static inline void dhd_buzzz_fmt_init(void)
131 {
132 	BUZZZ_FMT(DHD,				"DHD events")
133 	BUZZZ_FMT(GENERAL_LOCK,			"+++LOCK GENERAL flags<0x%08x>")
134 	BUZZZ_FMT(GENERAL_UNLOCK,		"---UNLK GENERAL flags<0x%08x>")
135 	BUZZZ_FMT(FLOWRING_LOCK,		"+++LOCK FLOWRING flags<0x%08x>")
136 	BUZZZ_FMT(FLOWRING_UNLOCK,		"---UNLK FLOWRING flags<0x%08x>")
137 	BUZZZ_FMT(FLOWID_LOCK,			"+++LOCK FLOWID flags<0x%08x>")
138 	BUZZZ_FMT(FLOWID_UNLOCK,		"---UNLK FLOWID flags<0x%08x>")
139 
140 	BUZZZ_FMT(START_XMIT_BGN,		"{ dhd_start_xmit() ifidx<%u> skb<0x%p>")
141 	BUZZZ_FMT(START_XMIT_END,		"} dhd_start_xmit()")
142 	BUZZZ_FMT(PROCESS_CTRL_BGN,		"{ dhd_prot_process_ctrlbuf()")
143 	BUZZZ_FMT(PROCESS_CTRL_END,		"} dhd_prot_process_ctrlbuf()")
144 	BUZZZ_FMT(UPDATE_TXFLOWRINGS_BGN,	"{ dhd_update_txflowrings()");
145 	BUZZZ_FMT(UPDATE_TXFLOWRINGS_END,	"} dhd_update_txflowrings()");
146 	BUZZZ_FMT(PROCESS_TXCPL_BGN,		"{ dhd_prot_process_msgbuf_txcpl()")
147 	BUZZZ_FMT(PROCESS_TXCPL_END,		"} dhd_prot_process_msgbuf_txcpl()")
148 	BUZZZ_FMT(PROCESS_RXCPL_BGN,		"{ dhd_prot_process_msgbuf_rxcpl()")
149 	BUZZZ_FMT(PROCESS_RXCPL_END,		"} dhd_prot_process_msgbuf_rxcpl()")
150 
151 	BUZZZ_FMT(GET_SRC_ADDR,			"bytes<%u> @<0x%p> prot_get_src_addr()")
152 	BUZZZ_FMT(WRITE_COMPLETE,		"WR<%u> prot_ring_write_complete")
153 	BUZZZ_FMT(ALLOC_RING_SPACE,		"{ dhd_alloc_ring_space nitems<%d>")
154 	BUZZZ_FMT(ALLOC_RING_SPACE_RET,		"} dhd_alloc_ring_space() alloc<%d> @<0x%p>")
155 	BUZZZ_FMT(ALLOC_RING_SPACE_FAIL,	"FAILURE } dhd_alloc_ring_space() alloc<%d>")
156 
157 	BUZZZ_FMT(PKTID_MAP_CLEAR,		"pktid map clear")
158 	BUZZZ_FMT(PKTID_NOT_AVAILABLE,		"FAILURE pktid pool depletion failures<%u>")
159 	BUZZZ_FMT(PKTID_MAP_RSV,		"pktid<%u> pkt<0x%p> dhd_pktid_map_reserve()")
160 	BUZZZ_FMT(PKTID_MAP_SAVE,		"pktid<%u> pkt<0x%p> dhd_pktid_map_save()")
161 	BUZZZ_FMT(PKTID_MAP_ALLOC,		"pktid<%u> pkt<0x%p> dhd_pktid_map_alloc()")
162 	BUZZZ_FMT(PKTID_MAP_FREE,		"pktid<%u> pkt<0x%p> dhd_pktid_map_free()")
163 	BUZZZ_FMT(LOCKER_INUSE_ABORT,		"ASSERT  pktid<%u> pkt<0x%p> locker->inuse")
164 	BUZZZ_FMT(BUFFER_TYPE_ABORT1,		"ASSERT  pktid<%u> pkt<0x%p> locker->dma")
165 	BUZZZ_FMT(BUFFER_TYPE_ABORT2,		"ASSERT  locker->dma<%u> buf_type<%u>")
166 
167 	BUZZZ_FMT(UPD_READ_IDX,			"RD<%u>  prot_upd_read_idx()")
168 	BUZZZ_FMT(STORE_RXCPLN_RD,		"RD<%u>  prot_store_rxcpln_read_idx()")
169 	BUZZZ_FMT(EARLY_UPD_RXCPLN_RD,		"RD<%u>  prot_early_upd_rxcpln_read_idx()")
170 
171 	BUZZZ_FMT(POST_TXDATA,			"flr<%u> pkt<0x%p> dhd_prot_txdata()")
172 	BUZZZ_FMT(RETURN_RXBUF,			"cnt<%u> dhd_prot_return_rxbuf()");
173 	BUZZZ_FMT(RXBUF_POST,			"cnt<%u> dhd_prot_rxbufpost()");
174 	BUZZZ_FMT(RXBUF_POST_EVENT,		"event   dhd_prot_rxbufpost_ctrl()");
175 	BUZZZ_FMT(RXBUF_POST_IOCTL,		"ioctl   dhd_prot_rxbufpost_ctrl()");
176 	BUZZZ_FMT(RXBUF_POST_CTRL_PKTGET_FAIL,	"FAILURE pktget dhd_prot_rxbufpost_ctrl()");
177 	BUZZZ_FMT(RXBUF_POST_PKTGET_FAIL,	"FAILURE pktget loop<%u> dhd_prot_rxbufpost()")
178 	BUZZZ_FMT(RXBUF_POST_PKTID_FAIL,	"FAILURE pktid  loop<%u> dhd_prot_rxbufpost()")
179 
180 	BUZZZ_FMT(DHD_DUPLICATE_ALLOC,		"ASSERT  dhd_pktid_audit(%u) DHD_DUPLICATE_ALLOC")
181 	BUZZZ_FMT(DHD_DUPLICATE_FREE,		"ASSERT  dhd_pktid_audit(%u) DHD_DUPLICATE_FREE")
182 	BUZZZ_FMT(DHD_TEST_IS_ALLOC,		"ASSERT  dhd_pktid_audit(%u) DHD_TEST_IS_ALLOC")
183 	BUZZZ_FMT(DHD_TEST_IS_FREE,		"ASSERT  dhd_pktid_audit(%u) DHD_TEST_IS_FREE")
184 
185 	BUZZZ_FMT(DHD_PROT_IOCT_BGN,        "{ dhd_prot_ioct pending<%u> thread<0x%p>")
186 	BUZZZ_FMT(DHDMSGBUF_CMPLT_BGN,      "{  dhdmsgbuf_cmplt bus::retlen<%u> bus::pktid<%u>")
187 	BUZZZ_FMT(DHDMSGBUF_CMPLT_END,      "}  dhdmsgbuf_cmplt resp_len<%d> pktid<%u>")
188 	BUZZZ_FMT(DHD_PROT_IOCT_END,        "} dhd_prot_ioct pending<%u> thread<0x%p>")
189 	BUZZZ_FMT(DHD_FILLUP_IOCT_REQST_BGN, "{ dhd_fillup_ioct_reqst_ptrbased cmd<%u> transid<%u>")
190 	BUZZZ_FMT(DHD_FILLUP_IOCT_REQST_END,
191 		"} dhd_fillup_ioct_reqst_ptrbased transid<%u> bus::pktid<%u>")
192 	BUZZZ_FMT(DHD_MSGBUF_RXBUF_POST_IOCTLRESP_BUFS_BGN,
193 		"{ dhd_msgbuf_rxbuf_post_ioctlresp_bufs cur_posted<%u> bus::pktid<%u>")
194 	BUZZZ_FMT(DHD_MSGBUF_RXBUF_POST_IOCTLRESP_BUFS_END,
195 		"} dhd_msgbuf_rxbuf_post_ioctlresp_bufs cur_posted<%u> bus::pktid<%u>")
196 	BUZZZ_FMT(DHD_PROT_IOCTCMPLT_PROCESS_ONE,
197 		"{ dhd_prot_ioctlcmplt_process cmd<%d> transid<%d>")
198 	BUZZZ_FMT(DHD_PROT_IOCTCMPLT_PROCESS_TWO,
199 		"} dhd_prot_ioctlcmplt_process resplen<%u> pktid<%u>")
200 	BUZZZ_FMT(DHD_PROT_EVENT_PROCESS_BGN, "{ dhd_prot_event_process pktid<%u>")
201 	BUZZZ_FMT(DHD_PROT_EVENT_PROCESS_END, "} dhd_prot_event_process buflen<%u> pkt<0x%p>")
202 	BUZZZ_FMT(DHD_PROT_D2H_SYNC_LIVELOCK, " dhd_prot_d2h_sync_livelock seqnum<%u>")
203 	BUZZZ_FMT(DHD_IOCTL_BUFPOST, " dhd_prot_rxbufpost_ctrl ioctl pktid<%u> phyaddr<0x%x>")
204 	BUZZZ_FMT(DHD_EVENT_BUFPOST, " dhd_prot_rxbufpost_ctrl event pktid<%u> phyaddr<0x%x>")
205 	BUZZZ_FMT(DHD_PROC_MSG_TYPE, " dhd_process_msgtype msg<0x%x> epoch<%u>")
206 	BUZZZ_FMT(DHD_BUS_RXCTL_ONE, "dhd_bus_rxctl prev resplen<%u> pktid<%u>")
207 	BUZZZ_FMT(DHD_BUS_RXCTL_TWO, "dhd_bus_rxctl cur  resplen<%u> pktid<%u>")
208 }
209 
210 #define BUZZZ_LOG(ID, N, ARG...)    dhd_buzzz_log ##N(BUZZZ_EVT__ ##ID, ##ARG)
211 
212 #else  /* DHD_BUZZZ_LOG_ENABLED */
213 /*
214  * Broadcom logging system - Empty implementaiton
215  */
216 
217 #define dhd_buzzz_attach()              do { /* noop */ } while (0)
218 #define dhd_buzzz_detach()              do { /* noop */ } while (0)
219 #define dhd_buzzz_panic(x)              do { /* noop */ } while (0)
220 #define BUZZZ_LOG(ID, N, ARG...)    do { /* noop */ } while (0)
221 
222 #endif /* DHD_BUZZZ_LOG_ENABLED */
223 
224 #endif /* _DHD_BUZZZ_H_INCLUDED_ */
225