xref: /wlan-dirver/qca-wifi-host-cmn/utils/host_diag_log/inc/host_diag_core_log.h (revision 503663c6daafffe652fa360bde17243568cd6d2a)
1 /*
2  * Copyright (c) 2014-2017, 2019-2020 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 #define WLAN_MAX_ROAM_CANDIDATE_AP      8
289 #define WLAN_MAX_ROAM_SCAN_CHAN         38
290 #define WLAN_MAX_SSID_SIZE              32
291 #define WLAN_MAC_ADDR_SIZE              6
292 
293 /**
294  * host_log_wlan_mgmt_tx_rx_info: To capture TX/RX mgmt frames' payload
295  * @hdr: Log header
296  * @version: Version number of the payload
297  * @vdev_id: Vdev id
298  * @is_tx: 1 - TX frame, 0 - RX frame
299  * @mgmt_type: type of frames, value: enum wifi_frm_type
300  * @mgmt_subtype: subtype of mgmt frame, value: enum mgmt_frm_subtype
301  * @mgmt_frame_seq_num: Frame sequence number in 802.11 header
302  * @operating_freq: operating frequency of AP
303  * @ssid_len: length of SSID, max 32 bytes long as per standard
304  * @ssid: SSID of connected AP
305  * @self_mac_addr: mac address of self interface
306  * @bssid: BSSID for which frame is received
307  * @mac_failure_reason: Internal driver failure reason
308  * @mgmt_status_code: 802.11 management frame response status code from
309  * section 9.4.1.9 IEEE 802.11 - 2016
310  * @auth_algo: Authentication algorithm number
311  * @auth_transaction_num: Authentication transaction sequence number
312  * @is_retry: Is retry frame
313  * @rssi: RSSI for the received frame
314  * @origin: 1- Sent by host. 2- sent by firmware
315  */
316 struct host_log_wlan_mgmt_tx_rx_info {
317 	log_hdr_type hdr;
318 	uint8_t version;
319 	uint8_t vdev_id;
320 	bool is_tx;
321 	uint8_t mgmt_type;
322 	uint8_t mgmt_subtype;
323 	uint16_t mgmt_frame_seq_num;
324 	uint8_t operating_freq;
325 	uint8_t ssid_len;
326 	char ssid[WLAN_MAX_SSID_SIZE];
327 	uint8_t self_mac_addr[WLAN_MAC_ADDR_SIZE];
328 	uint8_t bssid[WLAN_MAC_ADDR_SIZE];
329 	uint16_t mac_failure_reason;
330 	uint16_t mgmt_status_code;
331 	uint8_t auth_algo;
332 	uint8_t auth_transaction_num;
333 	uint8_t is_retry;
334 	uint32_t rssi;
335 	uint8_t origin;
336 } qdf_packed;
337 
338 /**
339  * struct wlan_roam_btm_trigger_data - BTM roam trigger related information
340  * @btm_request_mode:      BTM request mode - solicited/unsolicited
341  * @disassoc_timer:        Number of TBTT before AP disassociates the STA in ms
342  * @validity_interval:     Preferred candidate list validity interval in ms
343  * @candidate_list_count:  Number of candidates in BTM request.
344  * @btm_resp_status:       Status code of the BTM response.
345  */
346 struct wlan_roam_btm_trigger_data {
347 	uint8_t btm_request_mode;
348 	uint32_t disassoc_timer;
349 	uint32_t validity_interval;
350 	uint16_t candidate_list_count;
351 	uint16_t btm_resp_status;
352 } qdf_packed;
353 
354 /**
355  * struct wlan_roam_cu_trigger_data - BSS Load roam trigger parameters
356  * @cu_load: Connected AP CU load percentage
357  */
358 struct wlan_roam_cu_trigger_data {
359 	uint16_t cu_load;
360 } qdf_packed;
361 
362 /**
363  * Struct wlan_roam_rssi_trigger_data - RSSI roam trigger related
364  * parameters
365  * @threshold: RSSI threshold value in dBm for LOW rssi roam trigger
366  */
367 struct wlan_roam_rssi_trigger_data {
368 	uint32_t threshold;
369 } qdf_packed;
370 
371 /**
372  * struct wlan_roam_deauth_trigger_data - Deauth roaming trigger related
373  * parameters
374  * @type:   1- Deauthentication 2- Disassociation
375  * @reason: Status code of the Deauth/Disassoc received
376  */
377 struct wlan_roam_deauth_trigger_data {
378 	uint8_t type;
379 	uint32_t reason;
380 } qdf_packed;
381 
382 /**
383  * struct host_log_wlan_roam_trigger_info - Roam trigger
384  * related info
385  * @hdr: Log header
386  * @version: Version number of the payload
387  * @vdev_id: Vdev id
388  * @trigger_reason: Roaming trigger reason
389  * @trigger_sub_reason: Roaming trigger sub reason
390  * @current_rssi:  Current connected AP RSSI
391  * @timestamp: Host driver timestamp in msecs
392  * @btm_trig_data: BTM trigger related data
393  * @cu_load_data: CU load trigger related data
394  * @rssi_trig_data: RSSI roam trigger related data
395  * @deauth_trig_data: Deauth Roam trigger related data
396  */
397 struct host_log_wlan_roam_trigger_info {
398 	log_hdr_type hdr;
399 	uint8_t version;
400 	uint8_t vdev_id;
401 	uint32_t trigger_reason;
402 	uint32_t trigger_sub_reason;
403 	uint32_t current_rssi;
404 	uint32_t timestamp;
405 	union {
406 		struct wlan_roam_btm_trigger_data btm_trig_data;
407 		struct wlan_roam_cu_trigger_data cu_load_data;
408 		struct wlan_roam_rssi_trigger_data rssi_trig_data;
409 		struct wlan_roam_deauth_trigger_data deauth_trig_data;
410 	};
411 } qdf_packed;
412 
413 /**
414  *  struct host_log_wlan_roam_candidate_info - Roam scan candidate APs related
415  *  info
416  *  @version:     Payload structure version
417  *  @timestamp:   Host timestamp in millisecs
418  *  @type:        0 - Candidate AP; 1 - Current connected AP.
419  *  @bssid:       AP bssid.
420  *  @freq:        Channel frquency
421  *  @cu_load:     Channel utilization load of the AP.
422  *  @cu_score:    Channel Utilization score.
423  *  @rssi:        Candidate AP rssi
424  *  @rssi_score:  AP RSSI score
425  *  @total_score: Total score of the candidate AP.
426  *  @etp:         Estimated throughput value of the AP in Mbps
427  */
428 struct host_log_wlan_roam_candidate_info {
429 	uint8_t version;
430 	uint32_t timestamp;
431 	uint8_t type;
432 	uint8_t bssid[WLAN_MAC_ADDR_SIZE];
433 	uint16_t freq;
434 	uint32_t cu_load;
435 	uint32_t cu_score;
436 	uint32_t rssi;
437 	uint32_t rssi_score;
438 	uint32_t total_score;
439 	uint32_t etp;
440 } qdf_packed;
441 
442 /**
443  * struct host_log_wlan_roam_scan_data - Roam scan event details
444  * @hdr: Log header
445  * @version:   Version number of the diag log payload
446  * @vdev_id:   Vdev ID
447  * @type:      0 - Partial roam scan; 1 - Full roam scan
448  * @num_ap:    Number of candidate APs.
449  * @num_chan:  Number of channels.
450  * @timestamp: Time of day in milliseconds at which scan was triggered
451  * @trigger_reason: Roam scan trigger reason
452  * @next_rssi_threshold: Next roam can trigger rssi threshold
453  * @chan_freq: List of frequencies scanned as part of roam scan
454  * @ap: List of candidate AP info
455  */
456 struct host_log_wlan_roam_scan_data {
457 	log_hdr_type hdr;
458 	uint8_t version;
459 	uint8_t vdev_id;
460 	uint16_t type;
461 	uint8_t num_ap;
462 	uint8_t num_chan;
463 	uint32_t timestamp;
464 	uint32_t trigger_reason;
465 	uint32_t next_rssi_threshold;
466 	uint16_t chan_freq[WLAN_MAX_ROAM_SCAN_CHAN];
467 	struct host_log_wlan_roam_candidate_info ap[WLAN_MAX_ROAM_CANDIDATE_AP];
468 } qdf_packed;
469 
470 /**
471  * struct host_log_wlan_roam_result_info - Roam result related info.
472  * @hdr:                Log header
473  * @version:            Payload strcuture version
474  * @vdev_id:            Vdev Id
475  * @status:             0 - Roaming is success ; 1 - Roaming failed
476  * @timestamp:          Host timestamp in millisecs
477  * @fail_reason:        One of WMI_ROAM_FAIL_REASON_ID
478  */
479 struct host_log_wlan_roam_result_info {
480 	log_hdr_type hdr;
481 	uint8_t version;
482 	uint8_t vdev_id;
483 	bool status;
484 	uint32_t timestamp;
485 	uint32_t fail_reason;
486 } qdf_packed;
487 
488 /**
489  * struct wlan_rrm_beacon_report - RRM beacon report related
490  * parameters
491  * @req_bssid: beacon report requestor BSSID
492  * @req_ssid: Requested SSID for beacon report
493  * @is_wildcard_bssid: Is the BSSID FF:FF:FF:FF:FF:FF
494  * @req_reg_class: Regulatory class mentioned in the request
495  * @req_measurement_mode: Measurement mode. Active/Passive/Beacon report Table
496  * @req_measurement_duration: Measurement duration requested.
497  * @num_reports_in_frame: Number of BSS scanned
498  * @is_last_frame_in_req: True if this frame is the last frame sent for the
499  * request
500  */
501 struct wlan_rrm_beacon_report {
502 	uint8_t req_bssid[WLAN_MAC_ADDR_SIZE];
503 	uint8_t req_ssid[WLAN_MAX_SSID_SIZE];
504 	bool is_wildcard_bssid;
505 	uint8_t req_reg_class;
506 	uint16_t req_measurement_mode;
507 	uint16_t req_measurement_duration;
508 	uint8_t num_reports_in_frame;
509 	bool is_last_frame_in_req;
510 } qdf_packed;
511 
512 /**
513  * struct host_log_wlan_rrm_tx_rx_info - RRM frame related details
514  * @hdr:     Log header
515  * @version: Version of the payload struture
516  * @vdev_id: Vdev id
517  * @orgin:   Sent by host or firmware
518  * @is_tx:   Is Tx frame or RX frame
519  * @roam_result: Roaming result
520  * @timestamp: Time of the day in milliseconds
521  * @mgmt_frame_seq_num: Frame sequence number
522  * @received_chan_freq: Frame received channel frequency
523  * @action_category: Action frame category
524  * @rrm_action_code: Radio measurement/Noise measurement
525  * @radio_measurement_type: Neighbor report/Beacon report
526  * @bssid: BSSID field in frame
527  * @req_num_freq: Number of frequencies provided in request
528  * @req_freq: Frequencies requested
529  * @fail_reason_code: response TX failure status code
530  * @rssi: Rx frame rssi
531  * @bcn_rpt: Beacon report related parameters
532  */
533 struct host_log_wlan_rrm_tx_rx_info {
534 	log_hdr_type hdr;
535 	uint8_t version;
536 	uint8_t vdev_id;
537 	uint8_t origin;
538 	bool is_tx;
539 	bool roam_result;
540 	uint32_t timestamp;
541 	uint16_t mgmt_frame_seq_num;
542 	uint16_t received_chan_freq;
543 	uint8_t action_category;
544 	uint8_t rrm_action_code;
545 	uint8_t radio_measurement_type;
546 	uint8_t bssid[WLAN_MAC_ADDR_SIZE];
547 	uint8_t req_num_freq;
548 	uint16_t req_freq[WLAN_MAX_ROAM_SCAN_CHAN];
549 	uint8_t fail_reason_code;
550 	uint32_t rssi;
551 	struct wlan_rrm_beacon_report bcn_rpt;
552 } qdf_packed;
553 
554 /*-------------------------------------------------------------------------
555    Function declarations and documenation
556    ------------------------------------------------------------------------*/
557 
558 #ifdef __cplusplus
559 }
560 #endif /* __cplusplus */
561 #endif /* __HOST_DIAG_CORE_LOG_H */
562