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