1 /*
2 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3 * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18 /*
19 * DOC: wlan_cm_roam_logging.c
20 *
21 * Implementation for the Connect/roaming logging.
22 */
23
24 #ifndef _WLAN_CONNECTIVITY_LOGGING_H_
25 #define _WLAN_CONNECTIVITY_LOGGING_H_
26
27 #include "wlan_logging_sock_svc.h"
28 #include "wlan_cm_roam_public_struct.h"
29 #include "wlan_mlo_mgr_public_structs.h"
30
31 #define WLAN_MAX_LOGGING_FREQ 120
32
33 /**
34 * enum wlan_main_tag - Main Tag used in logging
35 * @WLAN_CONNECTING: Connecting
36 * @WLAN_CONNECTING_FAIL: Connection failure
37 * @WLAN_AUTH_REQ: Authentication request frame
38 * @WLAN_AUTH_RESP: Authentication response frame
39 * @WLAN_ASSOC_REQ: Association request frame
40 * @WLAN_ASSOC_RSP: Association response frame
41 * @WLAN_REASSOC_REQ: Reassociation request frame
42 * @WLAN_REASSOC_RSP: Reassociation response frame
43 * @WLAN_DEAUTH_RX: Deauthentication frame received
44 * @WLAN_DEAUTH_TX: Deauthentication frame sent
45 * @WLAN_DISASSOC_RX: Disassociation frame received
46 * @WLAN_DISASSOC_TX: Disassociation frame sent
47 * @WLAN_DISCONN_BMISS: Disconnection due to beacon miss
48 * @WLAN_ROAM_SCAN_START: ROAM scan start
49 * @WLAN_ROAM_SCAN_DONE: Roam scan done
50 * @WLAN_ROAM_SCORE_CURR_AP: Roam score current AP
51 * @WLAN_ROAM_SCORE_CAND_AP: Roam Score Candidate AP
52 * @WLAN_ROAM_RESULT: Roam Result
53 * @WLAN_ROAM_CANCEL: Roam Cancel
54 * @WLAN_BTM_REQ: BTM request
55 * @WLAN_BTM_QUERY: BTM Query frame
56 * @WLAN_BTM_RESP: BTM response frame
57 * @WLAN_BTM_REQ_CANDI: BTM request candidate info
58 * @WLAN_ROAM_WTC: ROAM WTC trigger logs
59 * @WLAN_DHCP_DISCOVER: DHCP discover frame
60 * @WLAN_DHCP_OFFER: DHCP offer frame
61 * @WLAN_DHCP_REQUEST: DHCP Request frame
62 * @WLAN_DHCP_ACK: DHCP ACK
63 * @WLAN_DHCP_NACK: DHCP NACK
64 * @WLAN_EAPOL_M1: EAPOL M1
65 * @WLAN_EAPOL_M2: EAPOL M2
66 * @WLAN_EAPOL_M3: EAPOL M3
67 * @WLAN_EAPOL_M4: EAPOL M4
68 * @WLAN_GTK_M1: GTK rekey M1 frame
69 * @WLAN_GTK_M2: GTK Rekey M2 frame
70 * @WLAN_EAP_REQUEST: EAP request frame
71 * @WLAN_EAP_RESPONSE: EAP response frame
72 * @WLAN_EAP_SUCCESS: EAP success
73 * @WLAN_EAP_FAILURE: EAP failure
74 * @WLAN_CUSTOM_LOG: Additional WLAN logs
75 * @WLAN_TAG_MAX: MAX tag
76 */
77 enum wlan_main_tag {
78 WLAN_CONNECTING,
79 WLAN_CONNECTING_FAIL,
80 WLAN_AUTH_REQ,
81 WLAN_AUTH_RESP,
82 WLAN_ASSOC_REQ,
83 WLAN_ASSOC_RSP,
84 WLAN_REASSOC_REQ,
85 WLAN_REASSOC_RSP,
86 WLAN_DEAUTH_RX,
87 WLAN_DEAUTH_TX,
88 WLAN_DISASSOC_RX,
89 WLAN_DISASSOC_TX,
90 WLAN_DISCONN_BMISS,
91 WLAN_ROAM_SCAN_START,
92 WLAN_ROAM_SCAN_DONE,
93 WLAN_ROAM_SCORE_CURR_AP,
94 WLAN_ROAM_SCORE_CAND_AP,
95 WLAN_ROAM_RESULT,
96 WLAN_ROAM_CANCEL,
97 WLAN_BTM_REQ,
98 WLAN_BTM_QUERY,
99 WLAN_BTM_RESP,
100 WLAN_BTM_REQ_CANDI,
101 WLAN_ROAM_WTC,
102 WLAN_DHCP_DISCOVER,
103 WLAN_DHCP_OFFER,
104 WLAN_DHCP_REQUEST,
105 WLAN_DHCP_ACK,
106 WLAN_DHCP_NACK,
107 WLAN_EAPOL_M1,
108 WLAN_EAPOL_M2,
109 WLAN_EAPOL_M3,
110 WLAN_EAPOL_M4,
111 WLAN_GTK_M1,
112 WLAN_GTK_M2,
113 WLAN_EAP_REQUEST,
114 WLAN_EAP_RESPONSE,
115 WLAN_EAP_SUCCESS,
116 WLAN_EAP_FAILURE,
117 WLAN_CUSTOM_LOG,
118 /* Keep at last */
119 WLAN_TAG_MAX,
120 };
121
122 /**
123 * enum qca_conn_diag_log_event_type - Diag Event subtype used in logging
124 * @WLAN_CONN_DIAG_CONNECTING_EVENT: Connecting
125 * @WLAN_CONN_DIAG_CONNECT_FAIL_EVENT: Connection failure
126 * @WLAN_CONN_DIAG_AUTH_REQ_EVENT: Authentication request frame
127 * @WLAN_CONN_DIAG_AUTH_RESP_EVENT: Authentication response frame
128 * @WLAN_CONN_DIAG_ASSOC_REQ_EVENT: Association request frame
129 * @WLAN_CONN_DIAG_ASSOC_RESP_EVENT: Association response frame
130 * @WLAN_CONN_DIAG_REASSOC_REQ_EVENT: Reassociation request frame
131 * @WLAN_CONN_DIAG_REASSOC_RESP_EVENT: Reassociation response frame
132 * @WLAN_CONN_DIAG_DEAUTH_RX_EVENT: Deauthentication frame received
133 * @WLAN_CONN_DIAG_DEAUTH_TX_EVENT: Deauthentication frame sent
134 * @WLAN_CONN_DIAG_DISASSOC_RX_EVENT: Disassociation frame received
135 * @WLAN_CONN_DIAG_DISASSOC_TX_EVENT: Disassociation frame sent
136 * @WLAN_CONN_DIAG_BMISS_EVENT: Disconnection due to beacon miss
137 * @WLAN_CONN_DIAG_ROAM_SCAN_START_EVENT: ROAM scan start
138 * @WLAN_CONN_DIAG_ROAM_SCAN_DONE_EVENT: Roam scan done
139 * @WLAN_CONN_DIAG_ROAM_SCORE_CUR_AP_EVENT: Roam score current AP
140 * @WLAN_CONN_DIAG_ROAM_SCORE_CAND_AP_EVENT: Roam Score Candidate AP
141 * @WLAN_CONN_DIAG_ROAM_RESULT_EVENT: Roam Result
142 * @WLAN_CONN_DIAG_ROAM_CANCEL_EVENT: Roam Cancel
143 * @WLAN_CONN_DIAG_BTM_REQ_EVENT: BTM request
144 * @WLAN_CONN_DIAG_BTM_QUERY_EVENT: BTM Query frame
145 * @WLAN_CONN_DIAG_BTM_RESP_EVENT: BTM response frame
146 * @WLAN_CONN_DIAG_BTM_REQ_CAND_EVENT: BTM request candidate info
147 * @WLAN_CONN_DIAG_BTM_WTC_EVENT: ROAM WTC trigger logs
148 * @WLAN_CONN_DIAG_DHCP_DISC_EVENT: DHCP discover frame
149 * @WLAN_CONN_DIAG_DHCP_OFFER_EVENT: DHCP offer frame
150 * @WLAN_CONN_DIAG_DHCP_REQUEST_EVENT: DHCP Request frame
151 * @WLAN_CONN_DIAG_DHCP_ACK_EVENT: DHCP ACK
152 * @WLAN_CONN_DIAG_DHCP_NACK_EVENT: DHCP NACK
153 * @WLAN_CONN_DIAG_EAPOL_M1_EVENT: EAPOL M1
154 * @WLAN_CONN_DIAG_EAPOL_M2_EVENT: EAPOL M2
155 * @WLAN_CONN_DIAG_EAPOL_M3_EVENT: EAPOL M3
156 * @WLAN_CONN_DIAG_EAPOL_M4_EVENT: EAPOL M4
157 * @WLAN_CONN_DIAG_GTK_M1_EVENT: GTK rekey M1 frame
158 * @WLAN_CONN_DIAG_GTK_M2_EVENT: GTK Rekey M2 frame
159 * @WLAN_CONN_DIAG_EAP_REQ_EVENT: EAP request frame
160 * @WLAN_CONN_DIAG_EAP_RESP_EVENT: EAP response frame
161 * @WLAN_CONN_DIAG_EAP_SUCC_EVENT: EAP success
162 * @WLAN_CONN_DIAG_EAP_FAIL_EVENT: EAP failure
163 * @WLAN_CONN_DIAG_CUSTOM_EVENT: Additional WLAN logs
164 * @WLAN_CONN_DIAG_EAP_START_EVENT: EAPOL start frame
165 * @WLAN_CONN_DIAG_NBR_RPT_REQ_EVENT: Neighbor report request
166 * @WLAN_CONN_DIAG_NBR_RPT_RESP_EVENT: Neighbor report response
167 * @WLAN_CONN_DIAG_BCN_RPT_REQ_EVENT: Beacon report request
168 * @WLAN_CONN_DIAG_BCN_RPT_RESP_EVENT: Beacon report response
169 * @WLAN_CONN_DIAG_MLO_T2LM_REQ_EVENT: MLO T2LM request
170 * @WLAN_CONN_DIAG_MLO_T2LM_RESP_EVENT: MLO T2LM response
171 * @WLAN_CONN_DIAG_BTM_BLOCK_EVENT: BTM-drop indication
172 * @WLAN_CONN_DIAG_MAX: MAX tag
173 */
174 enum qca_conn_diag_log_event_type {
175 WLAN_CONN_DIAG_CONNECTING_EVENT = 0,
176 WLAN_CONN_DIAG_CONNECT_FAIL_EVENT,
177 WLAN_CONN_DIAG_AUTH_REQ_EVENT,
178 WLAN_CONN_DIAG_AUTH_RESP_EVENT,
179 WLAN_CONN_DIAG_ASSOC_REQ_EVENT,
180 WLAN_CONN_DIAG_ASSOC_RESP_EVENT,
181 WLAN_CONN_DIAG_REASSOC_REQ_EVENT,
182 WLAN_CONN_DIAG_REASSOC_RESP_EVENT,
183 WLAN_CONN_DIAG_DEAUTH_RX_EVENT,
184 WLAN_CONN_DIAG_DEAUTH_TX_EVENT,
185 WLAN_CONN_DIAG_DISASSOC_RX_EVENT,
186 WLAN_CONN_DIAG_DISASSOC_TX_EVENT,
187 WLAN_CONN_DIAG_BMISS_EVENT,
188 WLAN_CONN_DIAG_ROAM_SCAN_START_EVENT,
189 WLAN_CONN_DIAG_ROAM_SCAN_DONE_EVENT,
190 WLAN_CONN_DIAG_ROAM_SCORE_CUR_AP_EVENT,
191 WLAN_CONN_DIAG_ROAM_SCORE_CAND_AP_EVENT,
192 WLAN_CONN_DIAG_ROAM_RESULT_EVENT,
193 WLAN_CONN_DIAG_ROAM_CANCEL_EVENT,
194 WLAN_CONN_DIAG_BTM_REQ_EVENT,
195 WLAN_CONN_DIAG_BTM_QUERY_EVENT,
196 WLAN_CONN_DIAG_BTM_RESP_EVENT,
197 WLAN_CONN_DIAG_BTM_REQ_CAND_EVENT,
198 WLAN_CONN_DIAG_BTM_WTC_EVENT,
199 WLAN_CONN_DIAG_DHCP_DISC_EVENT,
200 WLAN_CONN_DIAG_DHCP_OFFER_EVENT,
201 WLAN_CONN_DIAG_DHCP_REQUEST_EVENT,
202 WLAN_CONN_DIAG_DHCP_ACK_EVENT,
203 WLAN_CONN_DIAG_DHCP_NACK_EVENT,
204 WLAN_CONN_DIAG_EAPOL_M1_EVENT,
205 WLAN_CONN_DIAG_EAPOL_M2_EVENT,
206 WLAN_CONN_DIAG_EAPOL_M3_EVENT,
207 WLAN_CONN_DIAG_EAPOL_M4_EVENT,
208 WLAN_CONN_DIAG_GTK_M1_EVENT,
209 WLAN_CONN_DIAG_GTK_M2_EVENT,
210 WLAN_CONN_DIAG_EAP_REQ_EVENT,
211 WLAN_CONN_DIAG_EAP_RESP_EVENT,
212 WLAN_CONN_DIAG_EAP_SUCC_EVENT,
213 WLAN_CONN_DIAG_EAP_FAIL_EVENT,
214 WLAN_CONN_DIAG_CUSTOM_EVENT,
215 WLAN_CONN_DIAG_EAP_START_EVENT,
216 WLAN_CONN_DIAG_NBR_RPT_REQ_EVENT,
217 WLAN_CONN_DIAG_NBR_RPT_RESP_EVENT,
218 WLAN_CONN_DIAG_BCN_RPT_REQ_EVENT,
219 WLAN_CONN_DIAG_BCN_RPT_RESP_EVENT,
220 WLAN_CONN_DIAG_MLO_T2LM_REQ_EVENT,
221 WLAN_CONN_DIAG_MLO_T2LM_RESP_EVENT,
222 WLAN_CONN_DIAG_BTM_BLOCK_EVENT,
223 WLAN_CONN_DIAG_MAX
224 };
225
226 /*
227 * enum wlan_diag_wifi_band - Enum describing wifi band
228 * @WLAN_INVALID_BAND: invalid band
229 * @WLAN_24GHZ_BAND: 2.4 GHz band
230 * @WLAN_5GHZ_BAND: 5 GHz band
231 * @WLAN_6GHZ_BAND: 6 GHz band
232 */
233 enum wlan_diag_wifi_band {
234 WLAN_INVALID_BAND = 0,
235 WLAN_24GHZ_BAND,
236 WLAN_5GHZ_BAND,
237 WLAN_6GHZ_BAND,
238 };
239
240 /**
241 * enum wlan_diag_mlo_link_switch_reason - MLO link switch reason enumeration
242 * @LINK_STATE_SWITCH_REASON_VDEV_READY: Link switch when vdev is ready
243 * @LINK_STATE_SWITCH_REASON_ULL_MODE: Link switch due to ULL mode configuration
244 * @LINK_STATE_SWITCH_REASON_T2LM_ENABLE: Link switch due to T2LM enable
245 * @LINK_STATE_SWITCH_REASON_T2LM_DISABLE: Link switch due T2LM disable
246 * @LINK_STATE_SWITCH_REASON_FORCE_ENABLED: Link switch when link is
247 * forcibly enable
248 * @LINK_STATE_SWITCH_REASON_FORCE_DISABLED: Link switch when link is
249 * forcibly disable
250 * @LINK_STATE_SWITCH_REASON_LINK_QUALITY: Link switch due to
251 * poor link quality
252 * @LINK_STATE_SWITCH_REASON_LINK_CAPACITY: Link switch due to link capacity
253 * @LINK_STATE_SWITCH_REASON_RSSI: Link switch due to changes in rssi
254 * @LINK_STATE_SWITCH_REASON_BMISS: Link switch due to BMISS
255 * @LINK_STATE_SWITCH_REASON_BT_STATUS: Link switch due to BT status
256 * @LINK_STATE_SWITCH_REASON_MAX: Max value
257 */
258 enum wlan_diag_mlo_link_switch_reason {
259 LINK_STATE_SWITCH_REASON_VDEV_READY = 0,
260 LINK_STATE_SWITCH_REASON_ULL_MODE = 1,
261 LINK_STATE_SWITCH_REASON_T2LM_ENABLE = 2,
262 LINK_STATE_SWITCH_REASON_T2LM_DISABLE = 3,
263 LINK_STATE_SWITCH_REASON_FORCE_ENABLED = 4,
264 LINK_STATE_SWITCH_REASON_FORCE_DISABLED = 5,
265 LINK_STATE_SWITCH_REASON_LINK_QUALITY = 6,
266 LINK_STATE_SWITCH_REASON_LINK_CAPACITY = 7,
267 LINK_STATE_SWITCH_REASON_RSSI = 8,
268 LINK_STATE_SWITCH_REASON_BMISS = 9,
269 LINK_STATE_SWITCH_REASON_BT_STATUS = 10,
270 LINK_STATE_SWITCH_REASON_MAX,
271 };
272
273 /**
274 * enum wlan_bcn_rpt_measurement_mode - Measurement mode enum.
275 * Defined in IEEE Std 802.11‐2020 Table 9-103.
276 * @MEASURE_MODE_PASSIVE: Passive measurement mode
277 * @MEASURE_MODE_ACTIVE: Active measurement mode
278 * @MEASURE_MODE_BCN_TABLE: Beacon table measurement mode
279 * @MEASURE_MODE_RESERVED: Reserved
280 */
281 enum wlan_bcn_rpt_measurement_mode {
282 MEASURE_MODE_PASSIVE = 0,
283 MEASURE_MODE_ACTIVE,
284 MEASURE_MODE_BCN_TABLE,
285 MEASURE_MODE_RESERVED = 0xFF
286 };
287
288 /**
289 * enum wlan_diag_connect_fail_reason - WLAN diag connect fail reason code
290 * @WLAN_DIAG_UNSPECIFIC_REASON: Unspecific reason
291 * @WLAN_DIAG_NO_CANDIDATE_FOUND: No candidate found
292 * @WLAN_DIAG_ABORT_DUE_TO_NEW_REQ_RECVD: Aborted as new command is
293 * received.
294 * @WLAN_DIAG_BSS_SELECT_IND_FAILED: Failed BSS select indication
295 * @WLAN_DIAG_PEER_CREATE_FAILED: peer create failed
296 * @WLAN_DIAG_JOIN_FAILED: Failed in joining state
297 * @WLAN_DIAG_JOIN_TIMEOUT: Did not receive beacon or probe response after
298 * unicast probe request
299 * @WLAN_DIAG_AUTH_FAILED: Auth rejected by AP
300 * @WLAN_DIAG_AUTH_TIMEOUT: No Auth resp from AP
301 * @WLAN_DIAG_ASSOC_FAILED: Assoc rejected by AP
302 * @WLAN_DIAG_ASSOC_TIMEOUT: No Assoc resp from AP
303 * @WLAN_DIAG_HW_MODE_FAILURE: failed to change HW mode
304 * @WLAN_DIAG_SER_FAILURE: Failed to serialize command
305 * @WLAN_DIAG_SER_TIMEOUT: Serialization cmd timeout
306 * @WLAN_DIAG_GENERIC_FAILURE: Generic failure apart from above
307 * @WLAN_DIAG_VALID_CANDIDATE_CHECK_FAIL: Valid Candidate Check fail
308 */
309 enum wlan_diag_connect_fail_reason {
310 WLAN_DIAG_UNSPECIFIC_REASON = 0,
311 WLAN_DIAG_NO_CANDIDATE_FOUND = 1,
312 WLAN_DIAG_ABORT_DUE_TO_NEW_REQ_RECVD,
313 WLAN_DIAG_BSS_SELECT_IND_FAILED,
314 WLAN_DIAG_PEER_CREATE_FAILED,
315 WLAN_DIAG_JOIN_FAILED,
316 WLAN_DIAG_JOIN_TIMEOUT,
317 WLAN_DIAG_AUTH_FAILED,
318 WLAN_DIAG_AUTH_TIMEOUT,
319 WLAN_DIAG_ASSOC_FAILED,
320 WLAN_DIAG_ASSOC_TIMEOUT,
321 WLAN_DIAG_HW_MODE_FAILURE,
322 WLAN_DIAG_SER_FAILURE,
323 WLAN_DIAG_SER_TIMEOUT,
324 WLAN_DIAG_GENERIC_FAILURE,
325 WLAN_DIAG_VALID_CANDIDATE_CHECK_FAIL,
326 };
327
328 /**
329 * enum wlan_diag_btm_block_reason - BTM drop/ignore reason code
330 * @WLAN_DIAG_BTM_BLOCK_MBO_WO_PMF: Connected to MBO without PMF capable AP
331 * @WLAN_DIAG_BTM_BLOCK_UNSUPPORTED_P2P_CONC: p2p go/cli is present which
332 * restricts BTM roaming
333 */
334 enum wlan_diag_btm_block_reason {
335 WLAN_DIAG_BTM_BLOCK_MBO_WO_PMF = 1,
336 WLAN_DIAG_BTM_BLOCK_UNSUPPORTED_P2P_CONC = 2,
337 };
338
339 /**
340 * struct wlan_connectivity_log_diag_cmn - Structure for diag event
341 * @bssid: bssid
342 * @vdev_id: Vdev id
343 * @timestamp_us: Timestamp(time of the day) in microseconds
344 * @fw_timestamp: FW timestamp in microseconds
345 * @ktime_us: Kernel Timestamp in microseconds
346 */
347 struct wlan_connectivity_log_diag_cmn {
348 uint8_t bssid[QDF_MAC_ADDR_SIZE];
349 uint16_t vdev_id;
350 uint64_t timestamp_us;
351 uint64_t fw_timestamp;
352 uint64_t ktime_us;
353 } qdf_packed;
354
355 #define DIAG_STA_INFO_VERSION 1
356
357 /**
358 * struct wlan_diag_sta_info - STA info structure
359 * @diag_cmn: Common diag info
360 * @version: structure version
361 * @is_mlo: MLO connection bit
362 * @mac_2g: 2.4 GHz link station mac address
363 * @mac_5g: 5 GHz link station mac address
364 * @mac_6g: 6 GHz link station mac address
365 */
366 struct wlan_diag_sta_info {
367 struct wlan_connectivity_log_diag_cmn diag_cmn;
368 uint8_t version;
369 uint8_t is_mlo;
370 uint8_t mac_2g[QDF_MAC_ADDR_SIZE];
371 uint8_t mac_5g[QDF_MAC_ADDR_SIZE];
372 uint8_t mac_6g[QDF_MAC_ADDR_SIZE];
373 } qdf_packed;
374
375 /*
376 * struct wlan_diag_mlo_cmn_info - MLO common info
377 * @band: Indicates link on which mlo setup is initiated.
378 * Refer enum enum wlan_diag_wifi_band.
379 * @link_id: Link id of the link when link is accepted
380 * @vdev_id: vdev id associated with the link
381 * @tid_ul: TID-to-link mapping information on the uplink
382 * @tid_dl: TID-to-link mapping information on the downlink
383 * @status: MLO setup status. 0 - Success, 1 - failure
384 * @link_addr: Link address of the link.
385 */
386 struct wlan_diag_mlo_cmn_info {
387 uint8_t band;
388 uint8_t link_id;
389 uint8_t vdev_id;
390 uint8_t tid_ul;
391 uint8_t tid_dl;
392 uint8_t status;
393 uint8_t link_addr[QDF_MAC_ADDR_SIZE];
394 } qdf_packed;
395
396 #define DIAG_MLO_SETUP_VERSION 1
397 #define DIAG_MLO_SETUP_VERSION_V2 2
398
399 #define MAX_NUM_LINKS_PER_EVENT 3
400 /**
401 * struct wlan_diag_mlo_setup - MLO setup structure
402 * @diag_cmn: Common diag info
403 * @version: structure version
404 * @num_links: Number of links associated for MLO setup
405 * @reserved: Reserved field
406 * @status: status code of the link. Non-zero value when link is rejected
407 * @mlo_cmn_info: MLO common info
408 */
409 struct wlan_diag_mlo_setup {
410 struct wlan_connectivity_log_diag_cmn diag_cmn;
411 uint8_t version;
412 uint8_t num_links;
413 uint16_t reserved;
414 struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_NUM_LINKS_PER_EVENT];
415 } qdf_packed;
416
417 #define DIAG_MLO_RECONFIG_VERSION 1
418
419 /**
420 * struct wlan_diag_mlo_reconfig - MLO reconfig diag event structure
421 * @diag_cmn: Common diag info
422 * @version: structure version
423 * @reserved: Reserved field
424 * @mlo_cmn_info: MLO common info
425 */
426 struct wlan_diag_mlo_reconfig {
427 struct wlan_connectivity_log_diag_cmn diag_cmn;
428 uint32_t version:8;
429 uint32_t reserved:24;
430 struct wlan_diag_mlo_cmn_info mlo_cmn_info;
431 } qdf_packed;
432
433 #define DIAG_MLO_T2LM_STATUS_VERSION 1
434 #define DIAG_MLO_T2LM_STATUS_VERSION_V2 2
435
436 /**
437 * struct wlan_diag_mlo_t2lm_status - MLO T2LM status diag event structure
438 * @diag_cmn: Common diag info
439 * @version: structure version
440 * @num_links: Number of links associated for T2LM status
441 * @reserved: Reserved field
442 * @mlo_cmn_info: MLO common info
443 */
444 struct wlan_diag_mlo_t2lm_status {
445 struct wlan_connectivity_log_diag_cmn diag_cmn;
446 uint8_t version;
447 uint8_t num_links;
448 uint16_t reserved;
449 struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_NUM_LINKS_PER_EVENT];
450 } qdf_packed;
451
452 #define DIAG_MLO_T2LM_REQ_RESP_VERSION 1
453
454 /**
455 * struct wlan_diag_mlo_t2lm_req_resp - MLO T2LM Req/Resp diag event structure
456 * @diag_cmn: Common diag info
457 * @version: Structure version
458 * @band: Indicates the band of the link
459 * @status: status code of TID-to-Link mapping response frame
460 * @token: Dialog Token field of TID-To-Link Mapping Request/Response frame
461 * @is_rx: Indicates the direction of packet. 0 - TX and 1 - RX
462 * @tx_status: tx status of transmitted packet. Refer enum qdf_dp_tx_rx_status
463 * @subtype: Subtype of the event
464 * @reserved: Reserved field
465 */
466 struct wlan_diag_mlo_t2lm_req_resp {
467 struct wlan_connectivity_log_diag_cmn diag_cmn;
468 uint8_t version;
469 uint8_t band;
470 uint8_t status;
471 uint8_t token;
472 uint8_t is_rx:1;
473 uint8_t tx_status:7;
474 uint8_t subtype;
475 uint16_t reserved;
476 } qdf_packed;
477
478 #define DIAG_MLO_T2LM_TEARDOWN_VERSION 1
479
480 /**
481 * struct wlan_diag_mlo_t2lm_teardown - MLO T2LM Teardown diag event structure
482 * @diag_cmn: Common diag info
483 * @version: structure version
484 * @band: Indicates the band of the link. Refer enum wlan_diag_wifi_band
485 * @tx_status: tx status of transmitted packet. Refer enum qdf_dp_tx_rx_status
486 * @reserved: Reserved field
487 */
488 struct wlan_diag_mlo_t2lm_teardown {
489 struct wlan_connectivity_log_diag_cmn diag_cmn;
490 uint8_t version;
491 uint8_t band;
492 uint8_t tx_status;
493 uint8_t reserved;
494 } qdf_packed;
495
496 #define DIAG_MLO_LINK_STATUS_VERSION 1
497 #define DIAG_MLO_LINK_STATUS_VERSION_2 2
498 /**
499 * struct wlan_diag_mlo_link_status - MLO Link status diag event structure
500 * @diag_cmn: Common diag info
501 * @version: structure version
502 * @active_link: List of current active links. BIT 0: 2.4 GHz BIT 1: 5 GHz
503 * BIT 2: 6 GHz
504 * @prev_active_link: List of previous active links. BIT 0: 2.4 G Hz
505 * BIT 1: 5 GHz BIT 2: 6 GHz
506 * @associated_links: Links associated in the current connection.
507 * BIT 0: 2.4 GHz BIT 1: 5 GHz BIT 2: 6 GHz
508 * @reserved: Reserved field
509 * @reason: Reason for changed link status. Refer
510 * enum wlan_diag_mlo_link_switch_reason
511 */
512 struct wlan_diag_mlo_link_status {
513 struct wlan_connectivity_log_diag_cmn diag_cmn;
514 uint8_t version;
515 uint8_t active_link:5;
516 uint8_t prev_active_link:5;
517 uint8_t associated_links:5;
518 uint8_t reserved:1;
519 uint8_t reason;
520 } qdf_packed;
521
522 #define DIAG_NBR_RPT_VERSION 1
523 #define DIAG_NBR_RPT_VERSION_2 2
524
525 /**
526 * struct wlan_diag_nbr_rpt - Neighbor report structure
527 * @diag_cmn: Common diag info
528 * @version: structure version
529 * @num_rpt: the number of neighbor report elements in response frame.
530 * @subtype: Event Subtype
531 * @token: dialog token. Dialog Token is a nonzero value chosen by the STA
532 * @num_freq: Number of frequency in response frame
533 * @ssid_len: SSID length
534 * @seq_num: Sequence number
535 * @ssid: SSID
536 * @freq: Frequency list in response frame
537 * @band: Band on which packet was received or transmitted.
538 * Refer enum enum wlan_diag_wifi_band
539 * @reserved: Reserved field
540 */
541 struct wlan_diag_nbr_rpt {
542 struct wlan_connectivity_log_diag_cmn diag_cmn;
543 uint8_t version;
544 uint8_t num_rpt;
545 uint8_t subtype;
546 uint8_t token;
547 uint16_t num_freq;
548 uint16_t ssid_len;
549 uint32_t seq_num;
550 char ssid[WLAN_SSID_MAX_LEN];
551 uint32_t freq[WLAN_MAX_LOGGING_FREQ];
552 uint32_t band:8;
553 uint32_t reserved:24;
554 } qdf_packed;
555
556 #define DIAG_BCN_RPT_VERSION 1
557 #define DIAG_BCN_RPT_VERSION_2 2
558
559 /**
560 * struct wlan_diag_bcn_rpt - Beacon report structure
561 * @diag_cmn: Common diag info
562 * @version: structure version
563 * @subtype: Event Subtype
564 * @diag_token: Dialog token
565 * @op_class: Operating classes that include primary channels
566 * @chan: The channel number field in the beacon report request.
567 * @req_mode: hex value defines Duration mandatory, parallel, enable,
568 * request, and report bits.
569 * @num_rpt: the number of neighbor report elements in response frame.
570 * @meas_token: A nonzero number that is unique among the Measurement Request
571 * elements
572 * @mode: Mode used for measurement.Values defined in IEEE
573 * Std 802.11‐2020 Table 9-103.
574 * @duration: The duration over which the Beacon report was measured.(in ms)
575 * @seq_num: Sequence number.
576 * @band: Band on which packet was received or transmitted.
577 * Refer enum enum wlan_diag_wifi_band
578 * @reserved: Reserved field
579 */
580 struct wlan_diag_bcn_rpt {
581 struct wlan_connectivity_log_diag_cmn diag_cmn;
582 uint8_t version;
583 uint8_t subtype;
584 uint8_t diag_token;
585 uint8_t op_class;
586 uint8_t chan;
587 uint8_t req_mode;
588 uint8_t num_rpt;
589 uint8_t meas_token;
590 uint16_t mode;
591 uint16_t duration;
592 uint32_t seq_num;
593 uint32_t band:8;
594 uint32_t reserved:24;
595 } qdf_packed;
596
597 #define DIAG_ROAM_CAND_VERSION 1
598 #define DIAG_ROAM_CAND_VERSION_V2 2
599
600 /**
601 * struct wlan_diag_roam_candidate_info - Roam candidate information for
602 * logging
603 * @diag_cmn: Common diag info
604 * @version: Structure Version
605 * @is_current_ap: Is the entry candidate AP or connected AP
606 * @is_mlo: MLO connection indicator
607 * @reserved: Reserved
608 * @idx: Entry index
609 * @cu_load: Channel utilization load of the AP in percentage
610 * @subtype: diag event subtype defined in enum qca_conn_diag_log_event_type
611 * @total_score: Total candidate AP score
612 * @freq: Candidate AP channel frequency in MHz
613 * @rssi: Candidate AP RSSI in dBm
614 * @etp: Estimated throughput value of the AP in Kbps
615 */
616 struct wlan_diag_roam_candidate_info {
617 struct wlan_connectivity_log_diag_cmn diag_cmn;
618 uint8_t version;
619 uint8_t is_current_ap:1;
620 uint8_t is_mlo:1;
621 uint8_t reserved:6;
622 uint16_t idx;
623 uint16_t cu_load;
624 uint16_t subtype;
625 uint32_t total_score;
626 uint32_t freq;
627 int32_t rssi;
628 uint32_t etp;
629 } qdf_packed;
630
631 #define DIAG_SCAN_DONE_VERSION 1
632
633 /**
634 * struct wlan_diag_roam_scan_done - Roam scan related information
635 * @diag_cmn: Common diag info
636 * @version: Structure Version
637 * @btcoex_active: Is there active bluetooth connection
638 * @reserved: Reserved field
639 * @cand_ap_count: Roam candidate AP count
640 * @num_scanned_freq: Number of scanned frequencies
641 * @scan_freq: Array of scanned frequencies value in MHz
642 */
643 struct wlan_diag_roam_scan_done {
644 struct wlan_connectivity_log_diag_cmn diag_cmn;
645 uint8_t version;
646 uint8_t btcoex_active:1;
647 uint8_t reserved:7;
648 uint16_t cand_ap_count;
649 uint16_t num_scanned_freq;
650 uint32_t scan_freq[WLAN_MAX_LOGGING_FREQ];
651 } qdf_packed;
652
653 #define DIAG_ROAM_RESULT_VERSION 1
654
655 /**
656 * struct wlan_diag_roam_result - Roam result data
657 * @diag_cmn: Common diag info
658 * @version: Structure Version
659 * @is_roam_successful: True if roamed successfully or false if roaming failed
660 * @is_mlo: Indicates whether the current connection is a MLO connection
661 * @reserved: Reserved
662 * @roam_fail_reason: Roam failure reason code defined in enum
663 * wlan_roam_failure_reason_code
664 */
665 struct wlan_diag_roam_result {
666 struct wlan_connectivity_log_diag_cmn diag_cmn;
667 uint8_t version;
668 uint8_t is_roam_successful:1;
669 uint8_t is_mlo:1;
670 uint8_t reserved:6;
671 uint16_t roam_fail_reason;
672 } qdf_packed;
673
674 #define DIAG_ROAM_SCAN_START_VERSION 1
675 #define DIAG_ROAM_SCAN_START_VERSION_V2 2
676
677 /**
678 * struct wlan_diag_roam_scan_start - Structure to store roam scan trigger
679 * related data.
680 * @diag_cmn: Common diag info
681 * @version: Structure Version
682 * @is_full_scan: True if the scan is Full scan. False if the roam scan is
683 * partial channel map scan
684 * @band: Band involved in the roaming during a MLO connection.
685 * Refer enum enum wlan_diag_wifi_band
686 * @cu: Current connected channel load in percentage
687 * @trigger_reason: Roam trigger reason defined by enum roam_trigger_reason
688 * @trigger_sub_reason: Roam scan trigger sub reason indicating if
689 * periodic/inactivity scan timer initiated roam. Defined by enum
690 * roam_trigger_sub_reason
691 * @rssi: Connected AP RSSI in dBm
692 * @rssi_thresh: Roam scan trigger threshold in dBm
693 */
694 struct wlan_diag_roam_scan_start {
695 struct wlan_connectivity_log_diag_cmn diag_cmn;
696 uint8_t version;
697 uint8_t is_full_scan:1;
698 uint8_t band:7;
699 uint16_t cu;
700 uint32_t trigger_reason;
701 uint32_t trigger_sub_reason;
702 int32_t rssi;
703 int32_t rssi_thresh;
704 } qdf_packed;
705
706 #define DIAG_BTM_CAND_VERSION 1
707
708 /**
709 * struct wlan_diag_btm_cand_info - BTM candidate information
710 * @diag_cmn: Common diag info
711 * @version: Structure Version
712 * @pad: Padded field
713 * @idx: Candidate index
714 * @preference: Candidate preference
715 */
716 struct wlan_diag_btm_cand_info {
717 struct wlan_connectivity_log_diag_cmn diag_cmn;
718 uint8_t version;
719 uint8_t pad;
720 uint16_t idx;
721 uint32_t preference;
722 } qdf_packed;
723
724 #define DIAG_BTM_VERSION 1
725 #define DIAG_BTM_VERSION_2 2
726
727 /**
728 * struct wlan_diag_btm_info - BTM frame related logging data
729 * @diag_cmn: Common diag info
730 * @version: Structure Version
731 * @reason: Query Reason field. Contains one of the values defined in IEEE
732 * Std 802.11‐2020 Table 9-198—Transition and Transition Query reasons
733 * @mode: BTM Request Mode field
734 * @sub_reason: WTC sub reason code field in the BTM WTC vendor specific IE
735 * @cand_lst_cnt: Candidates list in the BTM frame
736 * @status: BSS Transition management status codes defined in
737 * 802.11‐2020 Table 9-428—BTM status code definitions
738 * @delay: BSS Termination Delay field
739 * @is_disassoc_imminent: Disassociation imminent bit
740 * @band: indicates the link involved in MLO conenection.
741 * Refer enum enum wlan_diag_wifi_band
742 * @token: dialog token. Dialog Token is a nonzero value chosen by the STA
743 * @wtc_duration: WTC duration field in minutes
744 * while sending the BTM frame to identify the query/request/response
745 * transaction
746 * @subtype: Event Subtype
747 * @validity_timer: Validity interval in TBTT
748 * @disassoc_tim: Time after which the AP disassociates the STA, defined
749 * in TBTT.
750 */
751 struct wlan_diag_btm_info {
752 struct wlan_connectivity_log_diag_cmn diag_cmn;
753 uint8_t version;
754 uint8_t reason;
755 uint8_t mode;
756 uint8_t sub_reason;
757 uint8_t cand_lst_cnt;
758 uint8_t status;
759 uint8_t delay;
760 uint8_t is_disassoc_imminent:1;
761 uint8_t band:7;
762 uint8_t token;
763 uint8_t subtype;
764 uint16_t wtc_duration;
765 uint32_t validity_timer;
766 uint32_t disassoc_tim;
767 } qdf_packed;
768
769 #define DIAG_MGMT_VERSION 1
770 #define DIAG_MGMT_VERSION_V2 2
771 #define MAX_VSIE_LEN 255
772
773 /**
774 * struct wlan_diag_packet_info - Data packets related info
775 * @diag_cmn: Common diag info
776 * @version: Structure Version
777 * @auth_algo: authentication algorithm number defined in IEEE Std 802.11‐2020
778 * @auth_frame_type: Authentication frame sub-type for SAE authentication
779 * defined in Section 9.4.1.1 Authentication Algorithm Number field in
780 * IEEE Std 802.11‐2020.
781 * @auth_seq_num: Authentication frame transaction sequence number
782 * @status: Frame status code as defined in IEEE Std
783 * 802.11‐2020 Table 9-50—Status codes.
784 * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
785 * @reason: reason code defined in Table 9-49 Reason codes field’ from the
786 * IEEE 802.11 standard document.
787 * @is_retry_frame: Retry frame indicator
788 * @is_tx: Packet direction indicator. 0 - RX, 1 - TX
789 * @supported_links: link id bitmap indicates the links involved
790 * in MLO connection.
791 * @reserved: Reserved field
792 * @subtype: Diag event defined in enum qca_conn_diag_log_event_type
793 * @assoc_id: Association ID
794 * @eap_len: EAP data length
795 * @eap_type: EAP type. Values defined by IANA at:
796 * https://www.iana.org/assignments/eap-numbers
797 * @sn: Frame sequence number
798 * @rssi: Peer RSSI in dBm
799 * @tx_fail_reason: tx failure reason printed on TX_FAIL status.
800 * Refer enum qdf_dp_tx_rx_status
801 * @mld_addr: MLD mac address
802 * @vsie_len: VSIE length
803 * @vsie: VSIE
804 */
805 struct wlan_diag_packet_info {
806 struct wlan_connectivity_log_diag_cmn diag_cmn;
807 uint8_t version;
808 uint8_t auth_algo;
809 uint8_t auth_frame_type;
810 uint8_t auth_seq_num;
811 uint8_t status;
812 uint8_t tx_status;
813 uint8_t reason;
814 uint8_t is_retry_frame:1;
815 uint8_t is_tx:1;
816 uint8_t supported_links:6;
817 uint16_t subtype;
818 uint16_t assoc_id;
819 uint16_t eap_len;
820 uint16_t eap_type;
821 uint32_t sn;
822 int32_t rssi;
823 uint8_t tx_fail_reason;
824 uint8_t mld_addr[QDF_MAC_ADDR_SIZE];
825 uint8_t vsie_len;
826 uint8_t vsie[MAX_VSIE_LEN];
827 } qdf_packed;
828
829 #define DIAG_CONN_VERSION 1
830
831 /**
832 * struct wlan_diag_connect - Connection related info
833 * @diag_cmn: Common diag info
834 * @version: Version number
835 * @auth_algo: Authentication algorithm number field as defined in
836 * IEEE 802.11 - 2020 standard section 9.4.1.1
837 * @bt_coex: Is there active bluetooth connection
838 * @reserved: Reserved field
839 * @ssid_len: Length of SSID
840 * @ssid: SSID
841 * @bssid_hint: BSSID hint provided in the connect request
842 * @reason: failure reason. Refer enum wlan_cm_connect_fail_reason
843 * @akm: Auth key management suite defined in IEEE Std 802.11‐2020
844 * Table 9-151—AKM suite selectors.
845 * @subtype: Event subtype defined in enum qca_conn_diag_log_event_type.
846 * @freq: Frequency in MHz
847 * @freq_hint: Frequency Hint in MHz
848 * @pairwise_cipher: Pairwise suite value as defined in IEEE 802.11 2020
849 * Table 12-10—Integrity and key wrap algorithms.
850 * @grp_cipher: Group cipher suite value as defined in
851 * Table 12-10—Integrity and key wrap algorithm in IEEE 802.11 2020.
852 * @grp_mgmt: Group management cipher suite as defined in
853 * Table 12-10—Integrity and key wrap algorithms in IEEE 802.11 2020.
854 */
855 struct wlan_diag_connect {
856 struct wlan_connectivity_log_diag_cmn diag_cmn;
857 uint8_t version;
858 uint8_t auth_algo;
859 uint8_t bt_coex:1;
860 uint8_t reserved:7;
861 uint8_t ssid_len;
862 char ssid[WLAN_SSID_MAX_LEN];
863 uint8_t bssid_hint[6];
864 uint16_t reason;
865 uint32_t akm;
866 uint32_t subtype;
867 uint32_t freq;
868 uint32_t freq_hint;
869 uint32_t pairwise_cipher;
870 uint32_t grp_cipher;
871 uint32_t grp_mgmt;
872 } qdf_packed;
873
874 /**
875 * struct wlan_roam_candidate_info - Roam candidate information for logging
876 * @cand_bssid: BSSID of the candidate AP
877 * @is_current_ap: Is the entry candidate AP or connected AP
878 * @idx: Entry index
879 * @cu_load: Channel utilization load of the AP in percentage
880 * @freq: Candidate AP channel frequency in MHz
881 * @total_score: Total candidate AP score
882 * @rssi: Candidate AP RSSI in dBm
883 * @etp: Estimated throughput value of the AP in Kbps
884 */
885 struct wlan_roam_candidate_info {
886 struct qdf_mac_addr cand_bssid;
887 bool is_current_ap;
888 uint8_t idx;
889 uint8_t cu_load;
890 qdf_freq_t freq;
891 uint16_t total_score;
892 int32_t rssi;
893 uint32_t etp;
894 };
895
896 /**
897 * struct wlan_roam_scan_info - Roam scan related information
898 * @cand_ap_count: Roam candidate AP count
899 * @num_scanned_freq: Number of scanned frequencies
900 * @is_btcoex_active: Is bluetooth coex active
901 * @scan_freq: Array of scanned frequencies value in MHz
902 */
903 struct wlan_roam_scan_info {
904 uint8_t cand_ap_count;
905 uint16_t num_scanned_freq;
906 bool is_btcoex_active;
907 qdf_freq_t scan_freq[NUM_CHANNELS];
908 };
909
910 /**
911 * struct wlan_roam_result_info - Roam result data
912 * @roam_fail_reason: Roam failure reason code defined in enum
913 * wlan_roam_failure_reason_code
914 * @is_roam_successful: True if roamed successfully or false if roaming failed
915 */
916 struct wlan_roam_result_info {
917 enum wlan_roam_failure_reason_code roam_fail_reason;
918 bool is_roam_successful;
919 };
920
921 /**
922 * struct wlan_roam_trigger_info - Structure to store roam trigger related data.
923 * @is_full_scan: True if the scan is Full scan. False if the roam scan is
924 * partial channel map scan
925 * @trigger_reason: Roam trigger reason defined by enum roam_trigger_reason
926 * @trigger_sub_reason: Roam scan trigger sub reason indicating if
927 * periodic/inactivity scan timer initiated roam. Defined by enum
928 * roam_trigger_sub_reason
929 * @cu_load: Current connected channel load in percentage
930 * @current_rssi: Connected AP RSSI in dBm
931 * @rssi_threshold: Roam scan trigger threshold in dBm
932 */
933 struct wlan_roam_trigger_info {
934 bool is_full_scan;
935 enum roam_trigger_reason trigger_reason;
936 enum roam_trigger_sub_reason trigger_sub_reason;
937 uint8_t cu_load;
938 int32_t current_rssi;
939 int32_t rssi_threshold;
940 };
941
942 /**
943 * struct wlan_btm_cand_info - BTM candidate information
944 * @idx: Candidate index
945 * @preference: Candidate preference
946 * @bssid: candidate bssid
947 */
948 struct wlan_btm_cand_info {
949 uint8_t idx;
950 uint8_t preference;
951 struct qdf_mac_addr bssid;
952 };
953
954 /**
955 * struct wlan_roam_btm_info - BTM frame related logging data
956 * @reason: Query Reason field. Contains one of the values defined in IEEE
957 * Std 802.11‐2020 Table 9-198—Transition and Transition Query reasons
958 * @mode: BTM Request Mode field
959 * @sub_reason: WTC sub reason code field in the BTM WTC vendor specific IE
960 * @candidate_list_count: Candidates list in the BTM frame
961 * @btm_status_code: BSS Transition management status codes defined in
962 * 802.11‐2020 Table 9-428—BTM status code definitions
963 * @btm_delay: BSS Termination Delay field
964 * @is_disassoc_imminent: Disassociation imminent bit
965 * @token: dialog token. Dialog Token is a nonzero value chosen by the STA
966 * while sending the BTM frame to identify the query/request/response
967 * transaction
968 * @validity_timer: Validity interval in TBTT
969 * @disassoc_timer: Time after which the AP disassociates the STA, defined
970 * in TBTT.
971 * @wtc_duration: WTC duration field in minutes
972 * @target_bssid: BTM response target bssid field
973 */
974 struct wlan_roam_btm_info {
975 uint8_t reason;
976 uint8_t mode;
977 uint8_t sub_reason;
978 uint8_t candidate_list_count;
979 uint8_t btm_status_code;
980 uint8_t btm_delay;
981 bool is_disassoc_imminent;
982 uint8_t token;
983 uint8_t validity_timer;
984 uint16_t disassoc_timer;
985 uint32_t wtc_duration;
986 struct qdf_mac_addr target_bssid;
987 };
988
989 /**
990 * struct wlan_packet_info - Data packets related info
991 * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
992 * @eap_type: EAP type. Values defined by IANA at:
993 * https://www.iana.org/assignments/eap-numbers
994 * @eap_len: EAP data length
995 * @auth_algo: authentication algorithm number defined in IEEE Std 802.11‐2020
996 * Section 9.4.1.1 Authentication Algorithm Number field.
997 * @auth_seq_num: Authentication frame transaction sequence number
998 * @auth_type: Authentication frame sub-type for SAE authentication. Possible
999 * values:
1000 * 1 - SAE commit frame
1001 * 2 - SAE confirm frame
1002 * @assoc_id: Association ID received in association response frame as
1003 * defined in IEEE Std 802.11-2020 Figure 9-91-AID field format.
1004 * @frame_status_code: Frame status code as defined in IEEE Std
1005 * 802.11 2020 Table 9-50—Status codes.
1006 * @seq_num: Frame sequence number
1007 * @rssi: Peer RSSI in dBm
1008 * @is_retry_frame: is frame retried
1009 */
1010 struct wlan_packet_info {
1011 uint8_t tx_status;
1012 uint8_t eap_type;
1013 uint16_t eap_len;
1014 uint8_t auth_algo;
1015 uint8_t auth_seq_num;
1016 uint8_t auth_type;
1017 uint16_t assoc_id;
1018 uint16_t frame_status_code;
1019 uint16_t seq_num;
1020 int32_t rssi;
1021 bool is_retry_frame;
1022 };
1023
1024 /**
1025 * struct wlan_connect_info - Connection related info
1026 * @ssid: SSID
1027 * @ssid_len: Length of the SSID
1028 * @bssid_hint: BSSID hint provided in the connect request
1029 * @freq: Frequency in MHz
1030 * @freq_hint: Frequency Hint in MHz
1031 * @akm: Auth key management suite defined in IEEE Std 802.11‐2020
1032 * Table 9-151—AKM suite selectors.
1033 * @pairwise: Pairwise suite value as defined in IEEE 802.11 2020
1034 * Table 12-10—Integrity and key wrap algorithms.
1035 * @group: Group cipher suite value as defined in
1036 * Table 12-10—Integrity and key wrap algorithms.
1037 * @group_mgmt: Group management cipher suite as defined in
1038 * Table 12-10—Integrity and key wrap algorithms.
1039 * @auth_type: Authentication algorithm number field as defined in
1040 * IEEE 802.11 - 2020 standard section 9.4.1.1
1041 * @conn_status: Connection failure status defined by enum
1042 * wlan_cm_connect_fail_reason
1043 * @is_bt_coex_active: Is there active bluetooth connection
1044 */
1045 struct wlan_connect_info {
1046 char ssid[WLAN_SSID_MAX_LEN];
1047 uint8_t ssid_len;
1048 struct qdf_mac_addr bssid_hint;
1049 qdf_freq_t freq;
1050 qdf_freq_t freq_hint;
1051 uint32_t akm;
1052 uint32_t pairwise;
1053 uint32_t group;
1054 uint32_t group_mgmt;
1055 uint8_t auth_type;
1056 enum wlan_cm_connect_fail_reason conn_status;
1057 bool is_bt_coex_active;
1058 };
1059
1060 #define WLAN_MAX_LOG_RECORDS 45
1061 #define WLAN_MAX_LOG_LEN 256
1062 #define WLAN_RECORDS_PER_SEC 20
1063 #define MAX_RECORD_IN_SINGLE_EVT 5
1064
1065 /**
1066 * struct wlan_log_record - Structure for individual records in the ring
1067 * buffer
1068 * @timestamp_us: Timestamp(time of the day) in microseconds
1069 * @fw_timestamp_us: timestamp at which roam scan was triggered
1070 * @ktime_us: kernel timestamp (time of the day) in microseconds
1071 * @vdev_id: VDEV id
1072 * @log_subtype: Tag of the log
1073 * @bssid: AP bssid
1074 * @is_record_filled: indicates if the current record is empty or not
1075 * @conn_info: Connection info
1076 * @pkt_info: Packet info
1077 * @roam_scan: Roam scan
1078 * @ap: Roam candidate AP info
1079 * @roam_result: Roam result
1080 * @roam_trig: Roam trigger related info
1081 * @btm_info: BTM info
1082 * @btm_cand: BTM response candidate info
1083 */
1084 struct wlan_log_record {
1085 uint64_t timestamp_us;
1086 uint64_t fw_timestamp_us;
1087 uint64_t ktime_us;
1088 uint8_t vdev_id;
1089 uint32_t log_subtype;
1090 struct qdf_mac_addr bssid;
1091 bool is_record_filled;
1092 union {
1093 struct wlan_connect_info conn_info;
1094 struct wlan_packet_info pkt_info;
1095 struct wlan_roam_scan_info roam_scan;
1096 struct wlan_roam_candidate_info ap;
1097 struct wlan_roam_result_info roam_result;
1098 struct wlan_roam_trigger_info roam_trig;
1099 struct wlan_roam_btm_info btm_info;
1100 struct wlan_btm_cand_info btm_cand;
1101 };
1102 };
1103
1104 /**
1105 * struct wlan_cl_osif_cbks - OSIF callbacks to be invoked for connectivity
1106 * logging
1107 * @wlan_connectivity_log_send_to_usr: Send the log buffer to user space
1108 */
1109 struct wlan_cl_osif_cbks {
1110 QDF_STATUS
1111 (*wlan_connectivity_log_send_to_usr) (struct wlan_log_record *rec,
1112 void *context,
1113 uint8_t num_records);
1114 };
1115
1116 /**
1117 * struct wlan_connectivity_log_buf_data - Master structure to hold the
1118 * pointers to the ring buffers.
1119 * @psoc: Global psoc pointer
1120 * @osif_cbks: OSIF callbacks
1121 * @osif_cb_context: Pointer to the context to be passed to OSIF
1122 * callback
1123 * @first_record_timestamp_in_last_sec: First record timestamp
1124 * @sent_msgs_count: Total sent messages counter in the last 1 sec
1125 * @head: Pointer to the 1st record allocated in the ring buffer.
1126 * @read_ptr: Pointer to the next record that can be read.
1127 * @write_ptr: Pointer to the next empty record to be written.
1128 * @write_ptr_lock: Spinlock to protect the write_ptr from multiple producers.
1129 * @max_records: Maximum records in the ring buffer.
1130 * @read_idx: Read index
1131 * @write_idx: Write index
1132 * @dropped_msgs: Dropped logs counter
1133 * @is_active: If the global buffer is initialized or not
1134 */
1135 struct wlan_connectivity_log_buf_data {
1136 struct wlan_objmgr_psoc *psoc;
1137 struct wlan_cl_osif_cbks osif_cbks;
1138 void *osif_cb_context;
1139 uint64_t first_record_timestamp_in_last_sec;
1140 uint64_t sent_msgs_count;
1141 struct wlan_log_record *head;
1142 struct wlan_log_record *read_ptr;
1143 struct wlan_log_record *write_ptr;
1144 qdf_spinlock_t write_ptr_lock;
1145 uint8_t max_records;
1146 uint8_t read_idx;
1147 uint8_t write_idx;
1148 qdf_atomic_t dropped_msgs;
1149 qdf_atomic_t is_active;
1150 };
1151
1152 #define logging_err_rl(params...) \
1153 QDF_TRACE_ERROR_RL(QDF_MODULE_ID_MLME, ## params)
1154 #define logging_warn_rl(params...) \
1155 QDF_TRACE_WARN_RL(QDF_MODULE_ID_MLME, ## params)
1156 #define logging_info_rl(params...) \
1157 QDF_TRACE_INFO_RL(QDF_MODULE_ID_MLME, ## params)
1158
1159 #define logging_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_QDF, ## params)
1160 #define logging_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_QDF, ## params)
1161 #define logging_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_QDF, ## params)
1162
1163 #if (defined(CONNECTIVITY_DIAG_EVENT) && \
1164 defined(WLAN_FEATURE_ROAM_OFFLOAD))
1165 /**
1166 * wlan_print_cached_sae_auth_logs() - Enqueue SAE authentication frame logs
1167 * @psoc: Global psoc pointer
1168 * @bssid: BSSID
1169 * @vdev_id: Vdev id
1170 *
1171 * Return: QDF_STATUS
1172 */
1173 QDF_STATUS wlan_print_cached_sae_auth_logs(struct wlan_objmgr_psoc *psoc,
1174 struct qdf_mac_addr *bssid,
1175 uint8_t vdev_id);
1176
1177 /**
1178 * wlan_is_log_record_present_for_bssid() - Check if there is existing log
1179 * record for the given bssid
1180 * @psoc: Global psoc pointer
1181 * @bssid: BSSID
1182 * @vdev_id: vdev id
1183 *
1184 * Return: true if record is present else false
1185 */
1186 bool wlan_is_log_record_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1187 struct qdf_mac_addr *bssid,
1188 uint8_t vdev_id);
1189
1190 /**
1191 * wlan_is_sae_auth_log_present_for_bssid() - Is cached SAE auth log record
1192 * present for the given bssid. This API checks on all the link vdev if the
1193 * given vdev_id is an MLO vdev and updates the vdev_id to caller in which
1194 * the auth frame was cached.
1195 * @psoc: Global psoc pointer
1196 * @bssid: BSSID
1197 * @vdev_id: vdev id
1198 *
1199 * Return: True if an entry is found
1200 */
1201 bool
1202 wlan_is_sae_auth_log_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1203 struct qdf_mac_addr *bssid,
1204 uint8_t *vdev_id);
1205
1206 /**
1207 * wlan_clear_sae_auth_logs_cache() - Clear the cached auth related logs
1208 * @psoc: Pointer to global psoc object
1209 * @vdev_id: vdev id
1210 *
1211 * Return: None
1212 */
1213 void wlan_clear_sae_auth_logs_cache(struct wlan_objmgr_psoc *psoc,
1214 uint8_t vdev_id);
1215 #else
1216 static inline
wlan_print_cached_sae_auth_logs(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * bssid,uint8_t vdev_id)1217 QDF_STATUS wlan_print_cached_sae_auth_logs(struct wlan_objmgr_psoc *psoc,
1218 struct qdf_mac_addr *bssid,
1219 uint8_t vdev_id)
1220 {
1221 return QDF_STATUS_SUCCESS;
1222 }
1223
1224 static inline
wlan_is_log_record_present_for_bssid(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * bssid,uint8_t vdev_id)1225 bool wlan_is_log_record_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1226 struct qdf_mac_addr *bssid,
1227 uint8_t vdev_id)
1228 {
1229 return false;
1230 }
1231
1232 static inline bool
wlan_is_sae_auth_log_present_for_bssid(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * bssid,uint8_t * vdev_id)1233 wlan_is_sae_auth_log_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1234 struct qdf_mac_addr *bssid,
1235 uint8_t *vdev_id)
1236 {
1237 return false;
1238 }
1239
1240 static inline
wlan_clear_sae_auth_logs_cache(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)1241 void wlan_clear_sae_auth_logs_cache(struct wlan_objmgr_psoc *psoc,
1242 uint8_t vdev_id)
1243 {}
1244 #endif
1245
1246 #if defined(CONNECTIVITY_DIAG_EVENT)
1247 /**
1248 * wlan_connectivity_mgmt_event() - Fill and enqueue a new record
1249 * for management frame information.
1250 * @psoc: Pointer to global psoc object
1251 * @mac_hdr: 802.11 management frame header
1252 * @vdev_id: Vdev id
1253 * @status_code: Frame status code as defined in IEEE 802.11 - 2020 standard
1254 * section 9.4.1.9
1255 * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
1256 * @peer_rssi: Peer RSSI in dBm
1257 * @auth_algo: Authentication algorithm number field as defined in IEEE 802.11 -
1258 * 2020 standard section 9.4.1.1
1259 * @auth_type: indicates SAE authentication frame type. Possible values are:
1260 * 1 - SAE commit frame
1261 * 2 - SAE confirm frame
1262 * @auth_seq: Authentication frame transaction sequence number as defined in
1263 * IEEE 802.11 - 2020 standard section 9.4.1.2
1264 * @aid: Association ID
1265 * @tag: Record type main tag
1266 *
1267 * Return: QDF_STATUS
1268 */
1269 void
1270 wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc *psoc,
1271 struct wlan_frame_hdr *mac_hdr,
1272 uint8_t vdev_id, uint16_t status_code,
1273 enum qdf_dp_tx_rx_status tx_status,
1274 int8_t peer_rssi,
1275 uint8_t auth_algo, uint8_t auth_type,
1276 uint8_t auth_seq, uint16_t aid,
1277 enum wlan_main_tag tag);
1278
1279 /**
1280 * wlan_populate_vsie() - Populate VSIE field for logging
1281 * @vdev: vdev pointer
1282 * @data: Diag packet info data
1283 * @is_tx: flag to indicate whether packet transmitted or received
1284 *
1285 * Return: None
1286 */
1287 void
1288 wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1289 struct wlan_diag_packet_info *data, bool is_tx);
1290
1291 /**
1292 * wlan_cdp_set_peer_freq() - API to set frequency to dp peer
1293 * @psoc: psoc pointer
1294 * @peer_mac: Bssid of peer
1295 * @freq: frequency(in MHz)
1296 * @vdev_id: vdev id
1297 *
1298 * Return: None
1299 */
1300 void
1301 wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc *psoc, uint8_t *peer_mac,
1302 uint32_t freq, uint8_t vdev_id);
1303
1304 #ifdef WLAN_FEATURE_11BE_MLO
1305
1306 /**
1307 * wlan_connectivity_mlo_reconfig_event() -API to log MLO reconfig event
1308 * @vdev: vdev pointer
1309 *
1310 * Return: None
1311 */
1312 void
1313 wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev *vdev);
1314
1315 /**
1316 * wlan_connectivity_mlo_setup_event() - Fill and send MLO setup data
1317 * @vdev: vdev pointer
1318 *
1319 * Return: None
1320 */
1321 void wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev *vdev);
1322
1323 /**
1324 * wlan_connectivity_t2lm_req_resp_event - API to send t2lm Req/resp
1325 * event logs to userspace
1326 * @vdev: vdev pointer
1327 * @token: dialog Token
1328 * @t2lm_status: T2LM response status code. Refer enum wlan_t2lm_resp_frm_type
1329 * @tx_status: TX status
1330 * @freq: frequency on which frame was transmitted/received
1331 * @is_rx: Flag to inidcate packet being received
1332 * @subtype: Determine whether the evnt sent is for t2lm request
1333 * or t2lm response
1334 *
1335 * Return: None
1336 */
1337 void
1338 wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev *vdev,
1339 uint8_t token,
1340 enum wlan_t2lm_resp_frm_type t2lm_status,
1341 enum qdf_dp_tx_rx_status tx_status,
1342 qdf_freq_t freq,
1343 bool is_rx, uint8_t subtype);
1344 /**
1345 * wlan_connectivity_t2lm_status_event() - Fill and send T2LM data
1346 * @vdev: vdev pointer
1347 *
1348 * Return: None
1349 */
1350 void wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev);
1351
1352 /**
1353 * wlan_populate_mlo_mgmt_event_param() - API to populate MLO management frame
1354 * parameter
1355 * @vdev: vdev pointer
1356 * @data: Buffer to be filled with MLO parameter
1357 * @tag: WLAN event tag. Refer enum wlan_main_tag
1358 *
1359 * Return: QDF_STATUS
1360 */
1361 QDF_STATUS
1362 wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
1363 struct wlan_diag_packet_info *data,
1364 enum wlan_main_tag tag);
1365
1366 /**
1367 * wlan_populate_roam_mld_log_param() - Populate roam MLO log parameters
1368 * @vdev: Pointer to vdev object
1369 * @data: Diag event packet info
1370 * @tag: Main Tag
1371 *
1372 * Return: QDF_STATUS
1373 */
1374 QDF_STATUS
1375 wlan_populate_roam_mld_log_param(struct wlan_objmgr_vdev *vdev,
1376 struct wlan_diag_packet_info *data,
1377 enum wlan_main_tag tag);
1378 #else
1379 static inline void
wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev * vdev)1380 wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev *vdev)
1381 {
1382 }
1383
1384 static inline void
wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev * vdev)1385 wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev *vdev)
1386 {
1387 }
1388
1389 static inline void
wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev * vdev,uint8_t token,enum wlan_t2lm_resp_frm_type status,enum qdf_dp_tx_rx_status tx_status,qdf_freq_t freq,bool is_rx,uint8_t subtype)1390 wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev *vdev,
1391 uint8_t token,
1392 enum wlan_t2lm_resp_frm_type status,
1393 enum qdf_dp_tx_rx_status tx_status,
1394 qdf_freq_t freq,
1395 bool is_rx, uint8_t subtype)
1396 {}
1397
1398 static inline void
wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev * vdev)1399 wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev)
1400 {
1401 }
1402
1403 static inline QDF_STATUS
wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,enum wlan_main_tag tag)1404 wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
1405 struct wlan_diag_packet_info *data,
1406 enum wlan_main_tag tag)
1407 {
1408 return QDF_STATUS_SUCCESS;
1409 }
1410
1411 static inline QDF_STATUS
wlan_populate_roam_mld_log_param(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,enum wlan_main_tag tag)1412 wlan_populate_roam_mld_log_param(struct wlan_objmgr_vdev *vdev,
1413 struct wlan_diag_packet_info *data,
1414 enum wlan_main_tag tag)
1415 {
1416 return QDF_STATUS_SUCCESS;
1417 }
1418 #endif
1419
1420 /**
1421 * wlan_populate_vsie() - Populate VSIE field for logging
1422 * @vdev: vdev pointer
1423 * @data: Diag packet info data
1424 * @is_tx: flag to indicate whether packet transmitted or received
1425 *
1426 * Return: None
1427 */
1428 void
1429 wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1430 struct wlan_diag_packet_info *data, bool is_tx);
1431 /**
1432 * wlan_convert_freq_to_diag_band() - API to convert frequency to band value
1433 * mentioned in enum wlan_diag_wifi_band
1434 * @ch_freq: Frequency(in MHz)
1435 *
1436 * Return: Band specified in enum wlan_diag_wifi_band
1437 */
1438 enum wlan_diag_wifi_band
1439 wlan_convert_freq_to_diag_band(uint16_t ch_freq);
1440
wlan_connectivity_logging_stop(void)1441 static inline void wlan_connectivity_logging_stop(void)
1442 {}
1443
1444 /**
1445 * wlan_connectivity_sta_info_event() - APi to send STA info event
1446 * @psoc: Pointer to global psoc object
1447 * @vdev_id: Vdev id
1448 * @is_roam: Is sta info event for roaming stats
1449 *
1450 * Return: None
1451 */
1452 void
1453 wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc *psoc,
1454 uint8_t vdev_id, bool is_roam);
1455
1456 /**
1457 * wlan_connectivity_connecting_event() - API to log connecting event
1458 * @vdev: vdev pointer
1459 * @con_req: Connection request parameter
1460 *
1461 * Return: None
1462 */
1463 void
1464 wlan_connectivity_connecting_event(struct wlan_objmgr_vdev *vdev,
1465 struct wlan_cm_connect_req *con_req);
1466
1467 #elif defined(WLAN_FEATURE_CONNECTIVITY_LOGGING)
1468 /**
1469 * wlan_connectivity_logging_start() - Initialize the connectivity/roaming
1470 * logging buffer
1471 * @psoc: Global psoc pointer
1472 * @osif_cbks: OSIF callbacks
1473 * @osif_cb_context: OSIF callback context argument
1474 *
1475 * Return: None
1476 */
1477 void wlan_connectivity_logging_start(struct wlan_objmgr_psoc *psoc,
1478 struct wlan_cl_osif_cbks *osif_cbks,
1479 void *osif_cb_context);
1480
1481 /**
1482 * wlan_connectivity_logging_stop() - Deinitialize the connectivity logging
1483 * buffers and spinlocks.
1484 *
1485 * Return: None
1486 */
1487 void wlan_connectivity_logging_stop(void);
1488
1489 /**
1490 * wlan_connectivity_log_dequeue() - Send the connectivity logs to userspace
1491 *
1492 * Return: QDF_STATUS
1493 */
1494 QDF_STATUS wlan_connectivity_log_dequeue(void);
1495
1496 /**
1497 * wlan_connectivity_log_enqueue() - Add new record to the logging buffer
1498 * @new_record: Pointer to the new record to be added
1499 *
1500 * Return: QDF_STATUS
1501 */
1502 QDF_STATUS wlan_connectivity_log_enqueue(struct wlan_log_record *new_record);
1503
1504 /**
1505 * wlan_connectivity_mgmt_event() - Fill and enqueue a new record
1506 * for management frame information.
1507 * @psoc: Pointer to global psoc object
1508 * @mac_hdr: 802.11 management frame header
1509 * @vdev_id: Vdev id
1510 * @status_code: Frame status code as defined in IEEE 802.11 - 2020 standard
1511 * section 9.4.1.9
1512 * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
1513 * @peer_rssi: Peer RSSI in dBm
1514 * @auth_algo: Authentication algorithm number field as defined in IEEE 802.11 -
1515 * 2020 standard section 9.4.1.1
1516 * @auth_type: indicates SAE authentication frame type. Possible values are:
1517 * 1 - SAE commit frame
1518 * 2 - SAE confirm frame
1519 * @auth_seq: Authentication frame transaction sequence number as defined in
1520 * IEEE 802.11 - 2020 standard section 9.4.1.2
1521 * @aid: Association ID
1522 * @tag: Record type main tag
1523 *
1524 * Return: QDF_STATUS
1525 */
1526 void
1527 wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc *psoc,
1528 struct wlan_frame_hdr *mac_hdr,
1529 uint8_t vdev_id, uint16_t status_code,
1530 enum qdf_dp_tx_rx_status tx_status,
1531 int8_t peer_rssi,
1532 uint8_t auth_algo, uint8_t auth_type,
1533 uint8_t auth_seq, uint16_t aid,
1534 enum wlan_main_tag tag);
1535
1536 /**
1537 * wlan_connectivity_connecting_event() - API to log connecting event
1538 * @vdev: vdev pointer
1539 * @con_req: Connection request parameter
1540 *
1541 * Return: None
1542 */
1543 void
1544 wlan_connectivity_connecting_event(struct wlan_objmgr_vdev *vdev,
1545 struct wlan_cm_connect_req *con_req);
1546
1547 /**
1548 * wlan_populate_vsie() - Populate VSIE field for logging
1549 * @vdev: vdev pointer
1550 * @data: Diag packet info data
1551 * @is_tx: Flag to indicate whether the packet is transmitted or received
1552 *
1553 * Return: None
1554 */
1555 void
1556 wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1557 struct wlan_diag_packet_info *data, bool is_tx);
1558
1559 /**
1560 * wlan_connectivity_sta_info_event() - APi to send STA info event
1561 * @psoc: Pointer to global psoc object
1562 * @vdev_id: Vdev id
1563 * @is_roam: Is sta info event for roaming stats
1564 */
1565 void
1566 wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc *psoc,
1567 uint8_t vdev_id, bool is_roam);
1568
1569 /**
1570 * wlan_convert_freq_to_diag_band() - API to convert frequency to band value
1571 * mentioned in enum wlan_diag_wifi_band
1572 * @ch_freq: Frequency(in MHz)
1573 *
1574 * Return: Band specified in enum wlan_diag_wifi_band
1575 */
1576 enum wlan_diag_wifi_band
1577 wlan_convert_freq_to_diag_band(uint16_t ch_freq);
1578
1579 /**
1580 * wlan_populate_vsie() - Populate VSIE field for logging
1581 * @vdev: vdev pointer
1582 * @data: Diag packet info data
1583 * @is_tx: flag to indicate whether packet transmitted or received
1584 *
1585 * Return: None
1586 */
1587 void
1588 wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1589 struct wlan_diag_packet_info *data, bool is_tx);
1590
1591 /**
1592 * wlan_cdp_set_peer_freq() - API to set frequency to dp peer
1593 * @psoc: psoc pointer
1594 * @peer_mac: Bssid of peer
1595 * @freq: frequency(in MHz)
1596 * @vdev_id: vdev id
1597 *
1598 * Return: None
1599 */
1600 void
1601 wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc *psoc, uint8_t *peer_mac,
1602 uint32_t freq, uint8_t vdev_id);
1603
1604 #else
1605 static inline
wlan_connectivity_logging_start(struct wlan_objmgr_psoc * psoc,struct wlan_cl_osif_cbks * osif_cbks,void * osif_cb_context)1606 void wlan_connectivity_logging_start(struct wlan_objmgr_psoc *psoc,
1607 struct wlan_cl_osif_cbks *osif_cbks,
1608 void *osif_cb_context)
1609 {}
1610
wlan_connectivity_logging_stop(void)1611 static inline void wlan_connectivity_logging_stop(void)
1612 {}
1613
wlan_connectivity_log_dequeue(void)1614 static inline QDF_STATUS wlan_connectivity_log_dequeue(void)
1615 {
1616 return QDF_STATUS_E_NOSUPPORT;
1617 }
1618
1619 static inline
wlan_connectivity_log_enqueue(struct wlan_log_record * new_record)1620 QDF_STATUS wlan_connectivity_log_enqueue(struct wlan_log_record *new_record)
1621 {
1622 return QDF_STATUS_E_NOSUPPORT;
1623 }
1624
1625 static inline void
wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc * psoc,struct wlan_frame_hdr * mac_hdr,uint8_t vdev_id,uint16_t status_code,enum qdf_dp_tx_rx_status tx_status,int8_t peer_rssi,uint8_t auth_algo,uint8_t auth_type,uint8_t auth_seq,uint16_t aid,enum wlan_main_tag tag)1626 wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc *psoc,
1627 struct wlan_frame_hdr *mac_hdr,
1628 uint8_t vdev_id, uint16_t status_code,
1629 enum qdf_dp_tx_rx_status tx_status,
1630 int8_t peer_rssi,
1631 uint8_t auth_algo, uint8_t auth_type,
1632 uint8_t auth_seq, uint16_t aid,
1633 enum wlan_main_tag tag)
1634 {}
1635
1636 static inline void
wlan_populate_vsie(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,bool is_tx)1637 wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1638 struct wlan_diag_packet_info *data, bool is_tx)
1639 {
1640 }
1641
1642 static inline enum wlan_diag_wifi_band
wlan_convert_freq_to_diag_band(uint16_t ch_freq)1643 wlan_convert_freq_to_diag_band(uint16_t ch_freq)
1644 {
1645 return WLAN_INVALID_BAND;
1646 }
1647
1648 static inline QDF_STATUS
wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,enum wlan_main_tag tag)1649 wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
1650 struct wlan_diag_packet_info *data,
1651 enum wlan_main_tag tag)
1652 {
1653 return QDF_STATUS_SUCCESS;
1654 }
1655
1656 static inline void
wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc * psoc,uint8_t * peer_mac,uint32_t freq,uint8_t vdev_id)1657 wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc *psoc, uint8_t *peer_mac,
1658 uint32_t freq, uint8_t vdev_id)
1659 {}
1660
1661 static inline void
wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev * vdev)1662 wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev *vdev)
1663 {
1664 }
1665
1666 static inline void
wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,bool is_roam)1667 wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc *psoc,
1668 uint8_t vdev_id, bool is_roam)
1669 {}
1670
1671 static inline void
wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev * vdev,uint8_t token,enum wlan_t2lm_resp_frm_type status,enum qdf_dp_tx_rx_status tx_status,qdf_freq_t freq,bool is_rx,uint8_t subtype)1672 wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev *vdev,
1673 uint8_t token,
1674 enum wlan_t2lm_resp_frm_type status,
1675 enum qdf_dp_tx_rx_status tx_status,
1676 qdf_freq_t freq,
1677 bool is_rx, uint8_t subtype)
1678 {}
1679
1680 static inline void
wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev * vdev)1681 wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev)
1682 {
1683 }
1684
1685 static inline void
wlan_connectivity_connecting_event(struct wlan_objmgr_vdev * vdev,struct wlan_cm_connect_req * con_req)1686 wlan_connectivity_connecting_event(struct wlan_objmgr_vdev *vdev,
1687 struct wlan_cm_connect_req *con_req)
1688 {
1689 }
1690 #endif
1691
1692 #if defined(CONNECTIVITY_DIAG_EVENT) && defined(WLAN_FEATURE_11BE_MLO)
1693 /**
1694 * wlan_connectivity_mld_link_status_event() - Send connectivity logging
1695 * ML Link Status event
1696 * @psoc: Pointer to global PSOC object
1697 * @src: Src parameters to be sent
1698 *
1699 * Return: None
1700 */
1701 void
1702 wlan_connectivity_mld_link_status_event(struct wlan_objmgr_psoc *psoc,
1703 struct mlo_link_switch_params *src);
1704 #else
1705 static inline
wlan_connectivity_mld_link_status_event(struct wlan_objmgr_psoc * psoc,struct mlo_link_switch_params * src)1706 void wlan_connectivity_mld_link_status_event(struct wlan_objmgr_psoc *psoc,
1707 struct mlo_link_switch_params *src)
1708 {}
1709 #endif /* CONNECTIVITY_DIAG_EVENT && WLAN_FEATURE_11BE_MLO */
1710 #endif /* _WLAN_CONNECTIVITY_LOGGING_H_ */
1711