1 /* 2 * Copyright (c) 2012-2015,2020-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 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_public_struct.h 20 * 21 * This header file maintain public structures required for connection mgr 22 */ 23 24 #ifndef __WLAN_CM_PUBLIC_STRUCT_H__ 25 #define __WLAN_CM_PUBLIC_STRUCT_H__ 26 27 #include <wlan_scan_public_structs.h> 28 #include "wlan_crypto_global_def.h" 29 #include "qdf_status.h" 30 #ifdef WLAN_FEATURE_11BE_MLO 31 #include <wlan_mlo_mgr_public_structs.h> 32 #endif 33 34 #define CM_ID_INVALID 0xFFFFFFFF 35 typedef uint32_t wlan_cm_id; 36 37 /* Diconnect active timeout */ 38 #define DISCONNECT_TIMEOUT \ 39 ((STOP_RESPONSE_TIMER) + (DELETE_RESPONSE_TIMER) +\ 40 (RSO_STOP_RESPONSE_TIMER) + (1000)) 41 42 /* 43 * Disconnect command wait timeout VDEV timeouts + 5 sec buff for current active 44 * command to complete 45 */ 46 #define CM_DISCONNECT_CMD_TIMEOUT DISCONNECT_TIMEOUT + 5000 47 48 /** 49 * struct wlan_cm_wep_key_params - store wep key info 50 * @key: key info 51 * @seq: seq info 52 * @key_len: key length 53 * @seq_len: seq len 54 * @key_idx: key index 55 */ 56 struct wlan_cm_wep_key_params { 57 uint8_t *key; 58 uint8_t *seq; 59 uint8_t key_len; 60 uint8_t seq_len; 61 uint8_t key_idx; 62 }; 63 64 /** 65 * struct wlan_cm_connect_crypto_info - Crypto settings 66 * @wpa_versions: indicates which, if any, WPA versions are enabled 67 * (from enum nl80211_wpa_versions) 68 * @auth_type: Auth mode type bitmask 69 * @group_cipher: group key cipher suite bitmask 70 * @ciphers_pairwise: unicast key cipher suites bitmask 71 * @akm_suites: AKM suites bitmask 72 * @wep_keys: static WEP keys, if not NULL points to an array of 73 * MAX_WEP_KEYS WEP keys 74 * @rsn_caps: rsn caps 75 * @mgmt_ciphers: mgmt cipher bitmask 76 */ 77 struct wlan_cm_connect_crypto_info { 78 uint32_t wpa_versions; 79 uint32_t auth_type; 80 uint32_t group_cipher; 81 uint32_t ciphers_pairwise; 82 uint32_t akm_suites; 83 struct wlan_cm_wep_key_params wep_keys; 84 uint16_t rsn_caps; 85 uint32_t mgmt_ciphers; 86 }; 87 88 #ifdef WLAN_FEATURE_FILS_SK 89 #define WLAN_CM_FILS_MAX_KEYNAME_NAI_LENGTH 253 90 #define WLAN_CM_FILS_MAX_REALM_LEN 255 91 #define WLAN_CM_FILS_MAX_RRK_LENGTH 64 92 93 /** 94 * enum wlan_fils_auth_type - fils auth type info 95 * @FILS_SK_WITHOUT_PFS: without pfs 96 * @FILS_SK_WITH_PFS: with pfs 97 * @FILS_PK_AUTH: fils auth 98 * @FILS_PK_MAX: max value 99 */ 100 enum wlan_fils_auth_type { 101 FILS_SK_WITHOUT_PFS, 102 FILS_SK_WITH_PFS, 103 FILS_PK_AUTH, 104 FILS_PK_MAX, 105 }; 106 107 /** 108 * struct wlan_fils_con_info - fils connect req info 109 * @is_fils_connection: is fils connection 110 * @username_len: username length 111 * @username: username 112 * @realm_len: realm length 113 * @realm: realm 114 * @next_seq_num: next seq number 115 * @rrk_len: rrk length 116 * @rrk: rrk 117 */ 118 struct wlan_fils_con_info { 119 bool is_fils_connection; 120 uint32_t username_len; 121 uint8_t username[WLAN_CM_FILS_MAX_KEYNAME_NAI_LENGTH]; 122 uint32_t realm_len; 123 uint8_t realm[WLAN_CM_FILS_MAX_REALM_LEN]; 124 uint16_t next_seq_num; 125 uint32_t rrk_len; 126 uint8_t rrk[WLAN_CM_FILS_MAX_RRK_LENGTH]; 127 enum wlan_fils_auth_type auth_type; 128 }; 129 #endif 130 131 /** 132 * enum wlan_cm_source - connection manager req source 133 * @CM_OSIF_CONNECT: Connect req initiated by OSIF or north bound 134 * @CM_ROAMING_HOST: Roaming request initiated by host 135 * @CM_ROAMING_NUD_FAILURE: Roaming request initiated by NUD failure 136 * @CM_ROAMING_FW: Roam req initiated by FW 137 * @CM_OSIF_DISCONNECT: Disconnect req initiated by OSIF or north bound 138 * @CM_PEER_DISCONNECT: Disconnect req initiated by peer sending deauth/disassoc 139 * only for this localy generated will be false while indicating to kernel 140 * @CM_SB_DISCONNECT: Disconnect initiated from firmware. eg HB failure, 141 * sta kickout etc 142 * @CM_MLME_DISCONNECT: Disconnect req initiated by mlme. eg VDEV mgr or any 143 * other mlme component. 144 * @CM_INTERNAL_DISCONNECT: Internal disconnect initiated by Connection manager 145 * on receiving the back to back commands 146 * @CM_ROAM_DISCONNECT: Disconnect req due to HO failure 147 * @CM_OSIF_CFG_CONNECT: Connect request initiated due to config change 148 * @CM_OSIF_CFG_DISCONNECT: Disconnect request initiated due to config change 149 * @CM_MLO_LINK_VDEV_DISCONNECT: Disconnect req for ML link 150 * @CM_MLO_LINK_VDEV_CONNECT: Connect req for ML link 151 * @CM_MLO_ROAM_INTERNAL_DISCONNECT: Disconnect req triggered for mlo roaming 152 * @CM_SOURCE_MAX: max value of connection manager source 153 * @CM_SOURCE_INVALID: Invalid connection manager req source 154 */ 155 enum wlan_cm_source { 156 CM_OSIF_CONNECT, 157 CM_ROAMING_HOST, 158 CM_ROAMING_NUD_FAILURE, 159 CM_ROAMING_FW, 160 CM_OSIF_DISCONNECT, 161 CM_PEER_DISCONNECT, 162 CM_SB_DISCONNECT, 163 CM_MLME_DISCONNECT, 164 CM_INTERNAL_DISCONNECT, 165 CM_ROAM_DISCONNECT, 166 CM_OSIF_CFG_CONNECT, 167 CM_OSIF_CFG_DISCONNECT, 168 CM_MLO_LINK_VDEV_DISCONNECT, 169 CM_MLO_LINK_VDEV_CONNECT, 170 CM_MLO_ROAM_INTERNAL_DISCONNECT, 171 CM_SOURCE_MAX, 172 CM_SOURCE_INVALID = CM_SOURCE_MAX, 173 }; 174 175 /** 176 * struct wlan_cm_connect_req - connect req from requester 177 * @vdev_id: vdev id 178 * @source: source of the req 179 * @bssid: bssid given 180 * @prev_bssid: prev AP bssid, given in case supplican want to roam to new BSSID 181 * @ssid: profile SSID 182 * @bssid_hint: bssid hint to connect 183 * @chan_freq: channel of the AP 184 * @chan_freq_hint: channel hint 185 * @crypto: crypto related info 186 * @assoc_ie:Additional assoc IE to be appended in assoc req 187 * (Include RSN/WPA/WAPI/WPS ies) 188 * @scan_ie: Default scan ie to be used in the uncast probe req and connect scan 189 * @force_rsne_override: force the arbitrary rsne received in connect req to be 190 * used with out validation, used for the scenarios where the device is used 191 * as a testbed device with special functionality and not recommended 192 * for production. 193 * @is_wps_connection: if its wps connection 194 * @is_osen_connection: if its osen connection 195 * @reassoc_in_non_connected: if reassoc received in non connected 196 * @dot11mode_filter: dot11mode filter used to restrict connection to 197 * 11n/11ac/11ax. 198 * @sae_pwe: SAE mechanism for PWE derivation 199 * 0 = hunting-and-pecking loop only 200 * 1 = hash-to-element only 201 * 2 = both hunting-and-pecking loop and hash-to-element enabled 202 * @ht_caps: ht capability information bit mask 203 * @ht_caps_mask: mask of valid ht caps 204 * @vht_caps: vht capability information bit mask 205 * @vht_caps_mask: mask of valid vht caps 206 * @fils_info: Fills related connect info 207 * @is_non_assoc_link: non assoc link 208 * @ml_parnter_info: ml partner link info 209 */ 210 struct wlan_cm_connect_req { 211 uint8_t vdev_id; 212 enum wlan_cm_source source; 213 struct qdf_mac_addr bssid; 214 struct qdf_mac_addr prev_bssid; 215 struct wlan_ssid ssid; 216 struct qdf_mac_addr bssid_hint; 217 qdf_freq_t chan_freq; 218 qdf_freq_t chan_freq_hint; 219 struct wlan_cm_connect_crypto_info crypto; 220 struct element_info assoc_ie; 221 struct element_info scan_ie; 222 uint8_t force_rsne_override:1, 223 is_wps_connection:1, 224 is_osen_connection:1, 225 reassoc_in_non_connected:1; 226 enum dot11_mode_filter dot11mode_filter; 227 uint8_t sae_pwe; 228 uint16_t ht_caps; 229 uint16_t ht_caps_mask; 230 uint32_t vht_caps; 231 uint32_t vht_caps_mask; 232 #ifdef WLAN_FEATURE_FILS_SK 233 struct wlan_fils_con_info fils_info; 234 #endif 235 bool is_non_assoc_link; 236 #ifdef WLAN_FEATURE_11BE_MLO 237 struct mlo_partner_info ml_parnter_info; 238 #endif 239 }; 240 241 /** 242 * struct wlan_cm_vdev_connect_req - connect req from connection manager to 243 * vdev mgr 244 * @vdev_id: vdev id 245 * @cm_id: Connect manager id 246 * @force_rsne_override: force the arbitrary rsne received in connect req to be 247 * used with out validation, used for the scenarios where the device is used 248 * as a testbed device with special functionality and not recommended 249 * for production. 250 * @is_wps_connection: if its wps connection 251 * @is_osen_connection: if its osen connection 252 * @ht_caps: ht capability 253 * @ht_caps_mask: mask of valid ht caps 254 * @vht_caps: vht capability 255 * @vht_caps_mask: mask of valid vht caps 256 * @assoc_ie: assoc ie to be used in assoc req 257 * @scan_ie: Default scan ie to be used in the uncast probe req 258 * @bss: scan entry for the candidate 259 * @fils_info: Fills related connect info 260 * @is_non_assoc_link: non assoc link 261 * @ml_parnter_info: ml partner link info 262 * @owe_trans_ssid: owe trans ssid to be used when scan entry ssid is wildcard 263 */ 264 struct wlan_cm_vdev_connect_req { 265 uint8_t vdev_id; 266 wlan_cm_id cm_id; 267 uint8_t force_rsne_override:1, 268 is_wps_connection:1, 269 is_osen_connection:1; 270 uint16_t ht_caps; 271 uint16_t ht_caps_mask; 272 uint32_t vht_caps; 273 uint32_t vht_caps_mask; 274 struct element_info assoc_ie; 275 struct element_info scan_ie; 276 struct scan_cache_node *bss; 277 #ifdef WLAN_FEATURE_FILS_SK 278 struct wlan_fils_con_info *fils_info; 279 #endif 280 bool is_non_assoc_link; 281 #ifdef WLAN_FEATURE_11BE_MLO 282 struct mlo_partner_info ml_parnter_info; 283 #endif 284 struct wlan_ssid owe_trans_ssid; 285 }; 286 287 /** 288 * struct wlan_cm_roam_req - roam req from requester 289 * @forced_roaming: Roaming to be done without giving bssid, and channel. 290 * @self_reassoc: used to determine self reassoc in host roaming 291 * @vdev_id: vdev id 292 * @source: source of the req 293 * @bssid: bssid given 294 * @prev_bssid: prev AP bssid, given in case supplican want to roam to new BSSID 295 * @chan_freq: channel of the AP 296 */ 297 struct wlan_cm_roam_req { 298 uint8_t forced_roaming:1, 299 self_reassoc:1; 300 uint8_t vdev_id; 301 enum wlan_cm_source source; 302 struct qdf_mac_addr bssid; 303 struct qdf_mac_addr prev_bssid; 304 uint32_t chan_freq; 305 }; 306 307 /** 308 * struct wlan_cm_vdev_reassoc_req - Reassoc req from connection manager to 309 * vdev mgr 310 * @vdev_id: vdev id 311 * @cm_id: Connect manager id 312 * @self_reassoc: if self reassoc 313 * @bss: scan entry for the candidate 314 */ 315 struct wlan_cm_vdev_reassoc_req { 316 uint8_t vdev_id; 317 wlan_cm_id cm_id; 318 bool self_reassoc; 319 struct qdf_mac_addr prev_bssid; 320 struct scan_cache_node *bss; 321 }; 322 323 /** 324 * struct wlan_cm_disconnect_req - disconnect req from requester 325 * @vdev_id: vdev id 326 * @source: source of disconnect 327 * @reason_code: protocol/propitiatory reason code of the disconnect. 328 * propitiatory will be used to send in 329 * QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_DRIVER_DISCONNECT_REASON 330 * @bssid: bssid of AP 331 * @is_no_disassoc_disconnect: Is disassoc required 332 */ 333 struct wlan_cm_disconnect_req { 334 uint8_t vdev_id; 335 enum wlan_cm_source source; 336 enum wlan_reason_code reason_code; 337 struct qdf_mac_addr bssid; 338 bool is_no_disassoc_disconnect; 339 }; 340 341 /** 342 * struct wlan_cm_vdev_discon_req - disconnect req from connection manager to 343 * vdev mgr 344 * @cm_id: connection manager ID 345 * @req: disconnect req 346 */ 347 struct wlan_cm_vdev_discon_req { 348 wlan_cm_id cm_id; 349 struct wlan_cm_disconnect_req req; 350 }; 351 352 /* 353 * enum wlan_cm_connect_fail_reason: connection manager connect fail reason 354 * @CM_NO_CANDIDATE_FOUND: No candidate found 355 * @CM_ABORT_DUE_TO_NEW_REQ_RECVD: Aborted as new command is received and 356 * @CM_BSS_SELECT_IND_FAILED: Failed BSS select indication 357 * State machine is not able to handle as state has changed due to new command. 358 * @CM_PEER_CREATE_FAILED: peer create failed 359 * @CM_JOIN_FAILED: Failed in joining state 360 * (BSS peer creation or other handling) 361 * @CM_JOIN_TIMEOUT: Did not receive beacon or probe response after unicast 362 * probe request 363 * @CM_AUTH_FAILED: Auth rejected by AP 364 * @CM_AUTH_TIMEOUT: No Auth resp from AP 365 * @CM_ASSOC_FAILED: Assoc rejected by AP 366 * @CM_ASSOC_TIMEOUT: No Assoc resp from AP 367 * @CM_HW_MODE_FAILURE: failed to change HW mode 368 * @CM_SER_FAILURE: Failed to serialize command 369 * @CM_SER_TIMEOUT: Serialization cmd timeout 370 * @CM_GENERIC_FAILURE: Generic failure apart from above 371 * @CM_VALID_CANDIDATE_CHECK_FAIL: Valid Candidate Check fail 372 */ 373 enum wlan_cm_connect_fail_reason { 374 CM_NO_CANDIDATE_FOUND, 375 CM_ABORT_DUE_TO_NEW_REQ_RECVD, 376 CM_BSS_SELECT_IND_FAILED, 377 CM_PEER_CREATE_FAILED, 378 CM_JOIN_FAILED, 379 CM_JOIN_TIMEOUT, 380 CM_AUTH_FAILED, 381 CM_AUTH_TIMEOUT, 382 CM_ASSOC_FAILED, 383 CM_ASSOC_TIMEOUT, 384 CM_HW_MODE_FAILURE, 385 CM_SER_FAILURE, 386 CM_SER_TIMEOUT, 387 CM_GENERIC_FAILURE, 388 CM_VALID_CANDIDATE_CHECK_FAIL, 389 }; 390 391 #ifdef WLAN_FEATURE_FILS_SK 392 #define CM_FILS_MAX_HLP_DATA_LEN 2048 393 #define MAX_TK_LENGTH 32 394 #define MAX_GTK_LENGTH 255 395 396 /** 397 * struct fils_connect_rsp_params - fils related connect rsp params 398 * @fils_pmk: fils pmk 399 * @fils_pmk_len: fils pmk length 400 * @fils_pmkid: fils pmkid 401 * @kek: kek 402 * @kek_len: kek length 403 * @tk: tk 404 * @tk_len: tk length 405 * @gtk: gtk 406 * @gtk_len: gtk length 407 * @dst_mac: dst mac 408 * @src_mac: src mac 409 * @hlp_data: hlp data 410 * @hlp_data_len: hlp data length 411 * @fils_seq_num: FILS sequence number 412 */ 413 struct fils_connect_rsp_params { 414 uint8_t *fils_pmk; 415 uint8_t fils_pmk_len; 416 uint8_t fils_pmkid[PMKID_LEN]; 417 uint8_t kek[MAX_KEK_LENGTH]; 418 uint8_t kek_len; 419 uint8_t tk[MAX_TK_LENGTH]; 420 uint8_t tk_len; 421 uint8_t gtk[MAX_GTK_LENGTH]; 422 uint8_t gtk_len; 423 struct qdf_mac_addr dst_mac; 424 struct qdf_mac_addr src_mac; 425 uint8_t hlp_data[CM_FILS_MAX_HLP_DATA_LEN]; 426 uint16_t hlp_data_len; 427 uint16_t fils_seq_num; 428 }; 429 #endif 430 431 /** 432 * struct connect_rsp_ies - connect rsp ies stored in vdev filled during connect 433 * @bcn_probe_rsp: Raw beacon or probe rsp of connected AP 434 * @link_bcn_probe_rsp: Raw beacon or probe rsp of connected non-assoc link 435 * @assoc_req: assoc req IE pointer send during connect 436 * @assoc_rsq: assoc rsp IE received during connection 437 * @fills_ie: fills connection ie received during connection 438 */ 439 struct wlan_connect_rsp_ies { 440 struct element_info bcn_probe_rsp; 441 struct element_info link_bcn_probe_rsp; 442 struct element_info assoc_req; 443 struct element_info assoc_rsp; 444 #ifdef WLAN_FEATURE_FILS_SK 445 struct fils_connect_rsp_params *fils_ie; 446 #endif 447 }; 448 449 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 450 /** 451 * struct wlan_roam_sync_info - roam sync information populated 452 * from roam sync indication struct 453 * @auth_status: roam auth status (authenticated or connected) 454 * @kck_len: kck length 455 * @kck: kck info in roam sync 456 * @kek_len: kek length 457 * @kek: kek info in roam sync 458 * @replay_ctr: replay counter 459 * @subnet_change_status: if subnet has changed. 460 * 0 = unchanged 461 * 1 = changed 462 * 2 = unknown 463 * @roam_reason: reason of roaming 464 * @pmk_len: fils pmk length 465 * @pmk: fils pmk info 466 * @pmkid: fils pmkid 467 * @update_erp_next_seq_num: if seq update required 468 * @next_erp_seq_num: next seq number 469 */ 470 struct wlan_roam_sync_info { 471 uint8_t auth_status; 472 uint8_t kck_len; 473 uint8_t kck[MAX_KCK_LEN]; 474 uint8_t kek_len; 475 uint8_t kek[MAX_KEK_LENGTH]; 476 uint8_t replay_ctr[REPLAY_CTR_LEN]; 477 uint8_t subnet_change_status; 478 uint16_t roam_reason; 479 uint32_t pmk_len; 480 uint8_t pmk[MAX_PMK_LEN]; 481 uint8_t pmkid[PMKID_LEN]; 482 bool update_erp_next_seq_num; 483 uint16_t next_erp_seq_num; 484 }; 485 #endif 486 487 /** 488 * struct wlan_cm_connect_rsp - connect resp from VDEV mgr and will be sent to 489 * OSIF 490 * @vdev_id: vdev id 491 * @is_wps_connection: if its wps connection 492 * @is_osen_connection: if its osen connection 493 * @is_reassoc: if response is for reassoc/roam 494 * @is_ft: is FT reassoc 495 * @is_assoc: if response is for assoc 496 * @send_disconnect: if disconnect needed to sent to kernel, for reassoc 497 * received in non connected state, this is to cleanup kernel 498 * @cm_id: Connect manager id 499 * @bssid: BSSID of the ap 500 * @ssid: SSID of the connection 501 * @freq: Channel frequency 502 * @connect_status: connect status success or failure 503 * @reason: connect fail reason, valid only in case of failure 504 * @status_code: protocol status code received in auth/assoc resp 505 * @aid: aid 506 * @connect_ies: connect related IE required by osif to send to kernel 507 * @roaming_info: roam sync info received 508 * @is_fils_connection: is fils connection 509 * @ml_parnter_info: ml partner link info 510 */ 511 struct wlan_cm_connect_resp { 512 uint8_t vdev_id; 513 uint8_t is_wps_connection:1, 514 is_osen_connection:1, 515 is_reassoc:1, 516 is_ft:1, 517 is_assoc:1, 518 send_disconnect:1; 519 wlan_cm_id cm_id; 520 struct qdf_mac_addr bssid; 521 struct wlan_ssid ssid; 522 qdf_freq_t freq; 523 QDF_STATUS connect_status; 524 enum wlan_cm_connect_fail_reason reason; 525 enum wlan_status_code status_code; 526 uint8_t aid; 527 struct wlan_connect_rsp_ies connect_ies; 528 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 529 struct wlan_roam_sync_info *roaming_info; 530 #endif 531 #ifdef WLAN_FEATURE_FILS_SK 532 bool is_fils_connection; 533 #endif 534 #ifdef WLAN_FEATURE_11BE_MLO 535 struct mlo_partner_info ml_parnter_info; 536 #endif 537 }; 538 539 #ifdef WLAN_VENDOR_HANDOFF_CONTROL 540 /* As per enum WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID */ 541 #define MAX_VENDOR_CONTROL_PARAMS 8 542 /* 543 * struct roam_param_info: vendor handoff related parameters 544 * @param_id : vendor control Param ID from enum 545 * WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID 546 * @param_value : vendor control param value 547 */ 548 struct roam_param_info { 549 uint32_t param_id; 550 uint32_t param_value; 551 }; 552 553 /* 554 * struct roam_vendor_handoff_params: vendor handoff parameters 555 * @vdev_id : vdev id 556 * @num_entries: num of tlv present in vendor handoff event 557 * @param_info: vendor handoff related parameters 558 */ 559 struct roam_vendor_handoff_params { 560 uint32_t vdev_id; 561 uint32_t num_entries; 562 struct roam_param_info param_info[MAX_VENDOR_CONTROL_PARAMS]; 563 }; 564 565 #endif 566 567 #ifdef WLAN_FEATURE_PREAUTH_ENABLE 568 /** 569 * struct wlan_preauth_req - preauth request 570 * @vdev_id: vdev id 571 * @entry: scan entry for the candidate 572 */ 573 struct wlan_preauth_req { 574 uint8_t vdev_id; 575 struct scan_cache_entry *entry; 576 }; 577 578 /** 579 * struct wlan_cm_preauth_fail - connection manager preauth fail 580 * @cm_id: connection id 581 * @reason: connect fail reason 582 */ 583 struct wlan_cm_preauth_fail { 584 wlan_cm_id cm_id; 585 enum wlan_cm_connect_fail_reason reason; 586 }; 587 588 #define CM_MAX_FTIE_SIZE 384 589 590 /** 591 * struct wlan_preauth_rsp - preauth response 592 * @psoc: psoc object 593 * @vdev_id: vdev id 594 * @cm_id: connection manager ID 595 * @pre_auth_bssid: bssid to preauth to 596 * @status: QDF_STATUS 597 * @ft_ie_length: ft ie length 598 * @ft_ie: ft ie 599 * @ric_ies_length: ric ies length 600 * @ric_ies: ric ies 601 * @timestamp: time stamp 602 */ 603 struct wlan_preauth_rsp { 604 struct wlan_objmgr_psoc *psoc; 605 uint8_t vdev_id; 606 wlan_cm_id cm_id; 607 struct qdf_mac_addr pre_auth_bssid; 608 QDF_STATUS status; 609 uint16_t ft_ie_length; 610 uint8_t ft_ie[CM_MAX_FTIE_SIZE]; 611 uint16_t ric_ies_length; 612 uint8_t ric_ies[CM_MAX_FTIE_SIZE]; 613 #ifdef FEATURE_WLAN_ESE 614 uint32_t timestamp[2]; 615 #endif 616 }; 617 #endif 618 619 /** 620 * struct wlan_cm_discon_rsp - disconnect resp from VDEV mgr and will be sent to 621 * OSIF 622 * @req: disconnect req sent to vdev mgr 623 * @ap_discon_ie: disconnect IE sent by AP 624 */ 625 struct wlan_cm_discon_rsp { 626 struct wlan_cm_vdev_discon_req req; 627 struct element_info ap_discon_ie; 628 }; 629 630 /* 631 * enum wlan_cm_active_request_type: CM active req type 632 * @CM_NONE: No active serialisation command 633 * @CM_CONNECT_ACTIVE: Connect active in serialisation 634 * @CM_DISCONNECT_ACTIVE: DicConnect active in serialisation 635 * @CM_ROAM_ACTIVE: Roam active in serialisation 636 */ 637 enum wlan_cm_active_request_type { 638 CM_NONE, 639 CM_CONNECT_ACTIVE, 640 CM_DISCONNECT_ACTIVE, 641 CM_ROAM_ACTIVE, 642 }; 643 644 #endif /* __WLAN_CM_PUBLIC_STRUCT_H__ */ 645