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