xref: /wlan-dirver/qca-wifi-host-cmn/utils/host_diag_log/inc/host_diag_core_log.h (revision bea437e2293c3d4fb1b5704fcf633aedac996962)
1 /*
2  * Copyright (c) 2014-2017, 2019 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #if !defined(__HOST_DIAG_CORE_LOG_H)
20 #define __HOST_DIAG_CORE_LOG_H
21 
22 /**=========================================================================
23 
24    \file  host_diag_core_log.h
25 
26    \brief WLAN UTIL host DIAG logs
27 
28    Definitions for WLAN UTIL host diag events
29 
30    ========================================================================*/
31 
32 /* $Header$ */
33 
34 /*--------------------------------------------------------------------------
35    Include Files
36    ------------------------------------------------------------------------*/
37 #include "qdf_types.h"
38 #include "i_host_diag_core_log.h"
39 
40 /*--------------------------------------------------------------------------
41    Preprocessor definitions and constants
42    ------------------------------------------------------------------------*/
43 #ifdef __cplusplus
44 extern "C" {
45 #endif /* __cplusplus */
46 
47 /*--------------------------------------------------------------------------
48    Preprocessor definitions and constants
49    ------------------------------------------------------------------------*/
50 #define HOST_LOG_MAX_NUM_SSID                                (21)
51 #define HOST_LOG_MAX_NUM_BSSID                               (21)
52 #define HOST_LOG_MAX_SSID_SIZE                               (32)
53 #define HOST_LOG_MAX_BSSID_SIZE                              (6)
54 #define HOST_LOG_MAX_NUM_CHANNEL                             (64)
55 #define HOST_LOG_MAX_NUM_HO_CANDIDATE_APS                    (20)
56 #define HOST_LOG_MAX_WOW_PTRN_SIZE                           (128)
57 #define HOST_LOG_MAX_WOW_PTRN_MASK_SIZE                      (16)
58 #define VOS_LOG_PKT_LOG_SIZE                                 (2048)
59 #define HOST_LOG_PKT_LOG_THRESHOLD                           40960
60 #define HOST_LOG_MAX_COLD_BOOT_CAL_DATA_SIZE                 (2048)
61 
62 /* Version to be updated whenever format of vos_log_pktlog_info changes */
63 #define VERSION_LOG_WLAN_PKT_LOG_INFO_C                     1
64 /* Version to be updated whenever format of host_log_cold_boot_cal_data_type
65  * changes
66  */
67 #define VERSION_LOG_WLAN_COLD_BOOT_CAL_DATA_C               1
68 
69 /*---------------------------------------------------------------------------
70    This packet contains the scan results of the recent scan operation
71    LOG_WLAN_SCAN_C                                 0x1496
72    ---------------------------------------------------------------------------*/
73 typedef struct {
74 	log_hdr_type hdr;
75 	uint8_t eventId;
76 	uint8_t numSsid;
77 	uint8_t ssid[HOST_LOG_MAX_NUM_SSID][HOST_LOG_MAX_SSID_SIZE];
78 	uint8_t bssid[HOST_LOG_MAX_NUM_BSSID][HOST_LOG_MAX_BSSID_SIZE];
79 	uint8_t totalSsid;
80 	uint8_t minChnTime;
81 	uint8_t maxChnTime;
82 	uint16_t timeBetweenBgScan;
83 	uint8_t BSSMode;
84 	uint8_t numChannel;
85 	uint8_t channels[HOST_LOG_MAX_NUM_CHANNEL];
86 	uint16_t status;
87 } host_log_scan_pkt_type;
88 
89 /*---------------------------------------------------------------------------
90    This packet contains the information related to IBSS connection setup
91    LOG_WLAN_IBSS_C                                 0x1497
92    ---------------------------------------------------------------------------*/
93 typedef struct {
94 	log_hdr_type hdr;
95 	uint8_t eventId;
96 	uint8_t channelSetting;
97 	struct qdf_mac_addr bssid;
98 	struct qdf_mac_addr peer_macaddr;
99 	uint8_t ssid[HOST_LOG_MAX_SSID_SIZE];
100 	uint8_t operatingChannel;
101 	uint8_t beaconInterval;
102 	uint8_t status;
103 	uint32_t op_freq;
104 } host_log_ibss_pkt_type;
105 
106 /*---------------------------------------------------------------------------
107    This packet contains the information related to 802.11D
108    LOG_WLAN_80211D_C                               0x1498
109    ---------------------------------------------------------------------------*/
110 typedef struct {
111 	log_hdr_type hdr;
112 	uint8_t eventId;
113 	uint8_t numChannel;
114 	uint8_t Channels[HOST_LOG_MAX_NUM_CHANNEL];
115 	uint8_t TxPwr[HOST_LOG_MAX_NUM_CHANNEL];
116 	uint8_t countryCode[3];
117 	uint8_t supportMultipleDomain;
118 } host_log_802_11d_pkt_type;
119 
120 /*---------------------------------------------------------------------------
121    This is a log packet which contains below handoff information:
122    - Current AP + RSSI (if already associated)
123    - Candidate AP + RSSI (before association and when the list is updated)
124    - For each BSSID in candidate list, provide RSSI, QoS and security compatibility
125    LOG_WLAN_HANDOFF_C                              0x1499
126    ---------------------------------------------------------------------------*/
127 typedef struct {
128 	uint8_t ssid[9];
129 	uint8_t bssid[HOST_LOG_MAX_BSSID_SIZE];
130 	uint8_t channel_id;
131 	uint32_t qos_score;
132 	uint32_t sec_score;
133 	uint32_t rssi_score;
134 	uint32_t overall_score;
135 	uint32_t tx_per;                /* represented as a %      */
136 	uint32_t rx_per;                /* represented as a %      */
137 
138 } host_log_ho_ap_info;
139 
140 typedef struct {
141 	log_hdr_type hdr;
142 	uint32_t num_aps;
143 	host_log_ho_ap_info current_ap_info;
144 	host_log_ho_ap_info
145 		candidate_ap_info[HOST_LOG_MAX_NUM_HO_CANDIDATE_APS];
146 } host_log_ho_pkt_type;
147 
148 /*---------------------------------------------------------------------------
149    This packet contains the information related to the EDCA parameters
150    advertised by the AP
151    LOG_WLAN_QOS_EDCA_C                             0x149A
152    ---------------------------------------------------------------------------*/
153 typedef struct {
154 	log_hdr_type hdr;
155 	uint8_t aci_be;
156 	uint8_t cw_be;
157 	uint16_t txoplimit_be;
158 	uint8_t aci_bk;
159 	uint8_t cw_bk;
160 	uint16_t txoplimit_bk;
161 	uint8_t aci_vi;
162 	uint8_t cw_vi;
163 	uint16_t txoplimit_vi;
164 	uint8_t aci_vo;
165 	uint8_t cw_vo;
166 	uint16_t txoplimit_vo;
167 } host_log_qos_edca_pkt_type;
168 
169 /*---------------------------------------------------------------------------
170    This packet contains the total number of beacon received value
171    LOG_WLAN_BEACON_UPDATE_C                        0x149B
172    ---------------------------------------------------------------------------*/
173 typedef struct {
174 	log_hdr_type hdr;
175 	uint32_t bcn_rx_cnt;
176 } host_log_beacon_update_pkt_type;
177 
178 /*---------------------------------------------------------------------------
179    This packet contains the information related to a WoW patern value when set
180    LOG_WLAN_POWERSAVE_WOW_ADD_PTRN_C               0x149C
181    ---------------------------------------------------------------------------*/
182 typedef struct {
183 	log_hdr_type hdr;
184 	uint8_t pattern_id;
185 	uint8_t pattern_byte_offset;
186 	uint8_t pattern_size;
187 	uint8_t pattern[HOST_LOG_MAX_WOW_PTRN_SIZE];
188 	uint8_t pattern_mask_size;
189 	uint8_t pattern_mask[HOST_LOG_MAX_WOW_PTRN_MASK_SIZE];
190 } host_log_powersave_wow_add_ptrn_pkt_type;
191 
192 /*---------------------------------------------------------------------------
193    This packet contains the Tspec info negotiated with the AP for the
194    specific AC
195    LOG_WLAN_QOS_TSPEC_C                            0x14A2
196    ---------------------------------------------------------------------------*/
197 typedef struct {
198 	log_hdr_type hdr;
199 	uint8_t tsinfo[3];
200 	uint16_t nominal_msdu_size;
201 	uint16_t maximum_msdu_size;
202 	uint32_t min_service_interval;
203 	uint32_t max_service_interval;
204 	uint32_t inactivity_interval;
205 	uint32_t suspension_interval;
206 	uint32_t svc_start_time;
207 	uint32_t min_data_rate;
208 	uint32_t mean_data_rate;
209 	uint32_t peak_data_rate;
210 	uint32_t max_burst_size;
211 	uint32_t delay_bound;
212 	uint32_t min_phy_rate;
213 	uint16_t surplus_bw_allowance;
214 	uint16_t medium_time;
215 } host_log_qos_tspec_pkt_type;
216 
217 /*---------------------------------------------------------------------------
218    This packet contains data information when stall detected
219    LOG_TRSP_DATA_STALL_C                           0x1801
220    ---------------------------------------------------------------------------*/
221 
222 typedef struct {
223 	char channelName[4];
224 	uint32_t numDesc;
225 	uint32_t numFreeDesc;
226 	uint32_t numRsvdDesc;
227 	uint32_t headDescOrder;
228 	uint32_t tailDescOrder;
229 	uint32_t ctrlRegVal;
230 	uint32_t statRegVal;
231 	uint32_t numValDesc;
232 	uint32_t numInvalDesc;
233 } host_log_data_stall_channel_type;
234 
235 typedef struct {
236 	log_hdr_type hdr;
237 	uint32_t PowerState;
238 	uint32_t numFreeBd;
239 	host_log_data_stall_channel_type dxeChannelInfo[4];
240 } host_log_data_stall_type;
241 
242 /*---------------------------------------------------------------------------
243    This packet contains the rssi value from BSS descriptor
244    LOG_WLAN_RSSI_UPDATE_C                          0x1354
245    ---------------------------------------------------------------------------*/
246 typedef struct {
247 	log_hdr_type hdr;
248 	int8_t rssi;
249 } host_log_rssi_pkt_type;
250 
251 /**
252  * struct host_log_pktlog_info - Packet log info
253  * @log_hdr: Log header
254  * @buf_len: Length of the buffer that follows
255  * @buf:     Buffer containing the packet log info
256  *
257  * Structure containing the packet log information
258  * LOG_WLAN_PKT_LOG_INFO_C          0x18E0
259  */
260 struct host_log_pktlog_info {
261 	log_hdr_type log_hdr;
262 	uint32_t version;
263 	uint32_t seq_no;
264 	uint32_t buf_len;
265 	uint8_t buf[];
266 };
267 
268 /**
269  * struct host_log_cold_boot_cal_data_type - Cold boot cal log info
270  * @hdr: Log header
271  * @version: version
272  * @flags: Flag to indicate if more data follows
273  * @cb_cal_data_len: Length of the cal data
274  * @cb_cal_data: Cold boot cal data
275  *
276  * Structure containing the cold boot calibration data
277  * log information
278  * LOG_WLAN_COLD_BOOT_CAL_DATA_C          0x1A18
279  */
280 struct host_log_cold_boot_cal_data_type {
281 	log_hdr_type hdr;
282 	uint32_t version;
283 	uint32_t flags;
284 	uint32_t cb_cal_data_len;
285 	uint8_t cb_cal_data[HOST_LOG_MAX_COLD_BOOT_CAL_DATA_SIZE];
286 };
287 
288 /*-------------------------------------------------------------------------
289    Function declarations and documenation
290    ------------------------------------------------------------------------*/
291 
292 #ifdef __cplusplus
293 }
294 #endif /* __cplusplus */
295 #endif /* __HOST_DIAG_CORE_LOG_H */
296