1 /* 2 * Copyright (c) 2012-2015,2020-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2022 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_SOURCE_MAX: max value of connection manager source 151 * @CM_SOURCE_INVALID: Invalid connection manager req source 152 */ 153 enum wlan_cm_source { 154 CM_OSIF_CONNECT, 155 CM_ROAMING_HOST, 156 CM_ROAMING_NUD_FAILURE, 157 CM_ROAMING_FW, 158 CM_OSIF_DISCONNECT, 159 CM_PEER_DISCONNECT, 160 CM_SB_DISCONNECT, 161 CM_MLME_DISCONNECT, 162 CM_INTERNAL_DISCONNECT, 163 CM_ROAM_DISCONNECT, 164 CM_OSIF_CFG_CONNECT, 165 CM_OSIF_CFG_DISCONNECT, 166 CM_MLO_LINK_VDEV_DISCONNECT, 167 CM_SOURCE_MAX, 168 CM_SOURCE_INVALID = CM_SOURCE_MAX, 169 }; 170 171 /** 172 * struct wlan_cm_connect_req - connect req from requester 173 * @vdev_id: vdev id 174 * @source: source of the req 175 * @bssid: bssid given 176 * @prev_bssid: prev AP bssid, given in case supplican want to roam to new BSSID 177 * @ssid: profile SSID 178 * @bssid_hint: bssid hint to connect 179 * @chan_freq: channel of the AP 180 * @chan_freq_hint: channel hint 181 * @crypto: crypto related info 182 * @assoc_ie:Additional assoc IE to be appended in assoc req 183 * (Include RSN/WPA/WAPI/WPS ies) 184 * @scan_ie: Default scan ie to be used in the uncast probe req and connect scan 185 * @force_rsne_override: force the arbitrary rsne received in connect req to be 186 * used with out validation, used for the scenarios where the device is used 187 * as a testbed device with special functionality and not recommended 188 * for production. 189 * @is_wps_connection: if its wps connection 190 * @is_osen_connection: if its osen connection 191 * @reassoc_in_non_connected: if reassoc received in non connected 192 * @dot11mode_filter: dot11mode filter used to restrict connection to 193 * 11n/11ac/11ax. 194 * @sae_pwe: SAE mechanism for PWE derivation 195 * 0 = hunting-and-pecking loop only 196 * 1 = hash-to-element only 197 * 2 = both hunting-and-pecking loop and hash-to-element enabled 198 * @ht_caps: ht capability information bit mask 199 * @ht_caps_mask: mask of valid ht caps 200 * @vht_caps: vht capability information bit mask 201 * @vht_caps_mask: mask of valid vht caps 202 * @fils_info: Fills related connect info 203 * @is_non_assoc_link: non assoc link 204 * @ml_parnter_info: ml partner link info 205 */ 206 struct wlan_cm_connect_req { 207 uint8_t vdev_id; 208 enum wlan_cm_source source; 209 struct qdf_mac_addr bssid; 210 struct qdf_mac_addr prev_bssid; 211 struct wlan_ssid ssid; 212 struct qdf_mac_addr bssid_hint; 213 qdf_freq_t chan_freq; 214 qdf_freq_t chan_freq_hint; 215 struct wlan_cm_connect_crypto_info crypto; 216 struct element_info assoc_ie; 217 struct element_info scan_ie; 218 uint8_t force_rsne_override:1, 219 is_wps_connection:1, 220 is_osen_connection:1, 221 reassoc_in_non_connected:1; 222 enum dot11_mode_filter dot11mode_filter; 223 uint8_t sae_pwe; 224 uint16_t ht_caps; 225 uint16_t ht_caps_mask; 226 uint32_t vht_caps; 227 uint32_t vht_caps_mask; 228 #ifdef WLAN_FEATURE_FILS_SK 229 struct wlan_fils_con_info fils_info; 230 #endif 231 bool is_non_assoc_link; 232 #ifdef WLAN_FEATURE_11BE_MLO 233 struct mlo_partner_info ml_parnter_info; 234 #endif 235 }; 236 237 /** 238 * struct wlan_cm_vdev_connect_req - connect req from connection manager to 239 * vdev mgr 240 * @vdev_id: vdev id 241 * @cm_id: Connect manager id 242 * @force_rsne_override: force the arbitrary rsne received in connect req to be 243 * used with out validation, used for the scenarios where the device is used 244 * as a testbed device with special functionality and not recommended 245 * for production. 246 * @is_wps_connection: if its wps connection 247 * @is_osen_connection: if its osen connection 248 * @ht_caps: ht capability 249 * @ht_caps_mask: mask of valid ht caps 250 * @vht_caps: vht capability 251 * @vht_caps_mask: mask of valid vht caps 252 * @assoc_ie: assoc ie to be used in assoc req 253 * @scan_ie: Default scan ie to be used in the uncast probe req 254 * @bss: scan entry for the candidate 255 * @fils_info: Fills related connect info 256 * @is_non_assoc_link: non assoc link 257 * @ml_parnter_info: ml partner link info 258 * @owe_trans_ssid: owe trans ssid to be used when scan entry ssid is wildcard 259 */ 260 struct wlan_cm_vdev_connect_req { 261 uint8_t vdev_id; 262 wlan_cm_id cm_id; 263 uint8_t force_rsne_override:1, 264 is_wps_connection:1, 265 is_osen_connection:1; 266 uint16_t ht_caps; 267 uint16_t ht_caps_mask; 268 uint32_t vht_caps; 269 uint32_t vht_caps_mask; 270 struct element_info assoc_ie; 271 struct element_info scan_ie; 272 struct scan_cache_node *bss; 273 #ifdef WLAN_FEATURE_FILS_SK 274 struct wlan_fils_con_info *fils_info; 275 #endif 276 bool is_non_assoc_link; 277 #ifdef WLAN_FEATURE_11BE_MLO 278 struct mlo_partner_info ml_parnter_info; 279 #endif 280 struct wlan_ssid owe_trans_ssid; 281 }; 282 283 /** 284 * struct wlan_cm_roam_req - roam req from requester 285 * @forced_roaming: Roaming to be done without giving bssid, and channel. 286 * @self_reassoc: used to determine self reassoc in host roaming 287 * @vdev_id: vdev id 288 * @source: source of the req 289 * @bssid: bssid given 290 * @prev_bssid: prev AP bssid, given in case supplican want to roam to new BSSID 291 * @chan_freq: channel of the AP 292 */ 293 struct wlan_cm_roam_req { 294 uint8_t forced_roaming:1, 295 self_reassoc:1; 296 uint8_t vdev_id; 297 enum wlan_cm_source source; 298 struct qdf_mac_addr bssid; 299 struct qdf_mac_addr prev_bssid; 300 uint32_t chan_freq; 301 }; 302 303 /** 304 * struct wlan_cm_vdev_reassoc_req - Reassoc req from connection manager to 305 * vdev mgr 306 * @vdev_id: vdev id 307 * @cm_id: Connect manager id 308 * @self_reassoc: if self reassoc 309 * @bss: scan entry for the candidate 310 */ 311 struct wlan_cm_vdev_reassoc_req { 312 uint8_t vdev_id; 313 wlan_cm_id cm_id; 314 bool self_reassoc; 315 struct qdf_mac_addr prev_bssid; 316 struct scan_cache_node *bss; 317 }; 318 319 /** 320 * struct wlan_cm_disconnect_req - disconnect req from requester 321 * @vdev_id: vdev id 322 * @source: source of disconnect 323 * @reason_code: protocol/propitiatory reason code of the disconnect. 324 * propitiatory will be used to send in 325 * QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_DRIVER_DISCONNECT_REASON 326 * @bssid: bssid of AP 327 * @is_no_disassoc_disconnect: Is disassoc required 328 */ 329 struct wlan_cm_disconnect_req { 330 uint8_t vdev_id; 331 enum wlan_cm_source source; 332 enum wlan_reason_code reason_code; 333 struct qdf_mac_addr bssid; 334 bool is_no_disassoc_disconnect; 335 }; 336 337 /** 338 * struct wlan_cm_vdev_discon_req - disconnect req from connection manager to 339 * vdev mgr 340 * @cm_id: connection manager ID 341 * @req: disconnect req 342 */ 343 struct wlan_cm_vdev_discon_req { 344 wlan_cm_id cm_id; 345 struct wlan_cm_disconnect_req req; 346 }; 347 348 /* 349 * enum wlan_cm_connect_fail_reason: connection manager connect fail reason 350 * @CM_NO_CANDIDATE_FOUND: No candidate found 351 * @CM_ABORT_DUE_TO_NEW_REQ_RECVD: Aborted as new command is received and 352 * @CM_BSS_SELECT_IND_FAILED: Failed BSS select indication 353 * State machine is not able to handle as state has changed due to new command. 354 * @CM_PEER_CREATE_FAILED: peer create failed 355 * @CM_JOIN_FAILED: Failed in joining state 356 * (BSS peer creation or other handling) 357 * @CM_JOIN_TIMEOUT: Did not receive beacon or probe response after unicast 358 * probe request 359 * @CM_AUTH_FAILED: Auth rejected by AP 360 * @CM_AUTH_TIMEOUT: No Auth resp from AP 361 * @CM_ASSOC_FAILED: Assoc rejected by AP 362 * @CM_ASSOC_TIMEOUT: No Assoc resp from AP 363 * @CM_HW_MODE_FAILURE: failed to change HW mode 364 * @CM_SER_FAILURE: Failed to serialize command 365 * @CM_SER_TIMEOUT: Serialization cmd timeout 366 * @CM_GENERIC_FAILURE: Generic failure apart from above 367 */ 368 enum wlan_cm_connect_fail_reason { 369 CM_NO_CANDIDATE_FOUND, 370 CM_ABORT_DUE_TO_NEW_REQ_RECVD, 371 CM_BSS_SELECT_IND_FAILED, 372 CM_PEER_CREATE_FAILED, 373 CM_JOIN_FAILED, 374 CM_JOIN_TIMEOUT, 375 CM_AUTH_FAILED, 376 CM_AUTH_TIMEOUT, 377 CM_ASSOC_FAILED, 378 CM_ASSOC_TIMEOUT, 379 CM_HW_MODE_FAILURE, 380 CM_SER_FAILURE, 381 CM_SER_TIMEOUT, 382 CM_GENERIC_FAILURE, 383 }; 384 385 #ifdef WLAN_FEATURE_FILS_SK 386 #define CM_FILS_MAX_HLP_DATA_LEN 2048 387 #define MAX_TK_LENGTH 32 388 #define MAX_GTK_LENGTH 255 389 390 /** 391 * struct fils_connect_rsp_params - fils related connect rsp params 392 * @fils_pmk: fils pmk 393 * @fils_pmk_len: fils pmk length 394 * @fils_pmkid: fils pmkid 395 * @kek: kek 396 * @kek_len: kek length 397 * @tk: tk 398 * @tk_len: tk length 399 * @gtk: gtk 400 * @gtk_len: gtk length 401 * @dst_mac: dst mac 402 * @src_mac: src mac 403 * @hlp_data: hlp data 404 * @hlp_data_len: hlp data length 405 * @fils_seq_num: FILS sequence number 406 */ 407 struct fils_connect_rsp_params { 408 uint8_t *fils_pmk; 409 uint8_t fils_pmk_len; 410 uint8_t fils_pmkid[PMKID_LEN]; 411 uint8_t kek[MAX_KEK_LENGTH]; 412 uint8_t kek_len; 413 uint8_t tk[MAX_TK_LENGTH]; 414 uint8_t tk_len; 415 uint8_t gtk[MAX_GTK_LENGTH]; 416 uint8_t gtk_len; 417 struct qdf_mac_addr dst_mac; 418 struct qdf_mac_addr src_mac; 419 uint8_t hlp_data[CM_FILS_MAX_HLP_DATA_LEN]; 420 uint16_t hlp_data_len; 421 uint16_t fils_seq_num; 422 }; 423 #endif 424 425 /** 426 * struct connect_rsp_ies - connect rsp ies stored in vdev filled during connect 427 * @bcn_probe_rsp: Raw beacon or probe rsp of connected AP 428 * @link_bcn_probe_rsp: Raw beacon or probe rsp of connected non-assoc link 429 * @assoc_req: assoc req IE pointer send during connect 430 * @assoc_rsq: assoc rsp IE received during connection 431 * @fills_ie: fills connection ie received during connection 432 */ 433 struct wlan_connect_rsp_ies { 434 struct element_info bcn_probe_rsp; 435 struct element_info link_bcn_probe_rsp; 436 struct element_info assoc_req; 437 struct element_info assoc_rsp; 438 #ifdef WLAN_FEATURE_FILS_SK 439 struct fils_connect_rsp_params *fils_ie; 440 #endif 441 }; 442 443 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 444 /** 445 * struct wlan_roam_sync_info - roam sync information populated 446 * from roam sync indication struct 447 * @auth_status: roam auth status (authenticated or connected) 448 * @kck_len: kck length 449 * @kck: kck info in roam sync 450 * @kek_len: kek length 451 * @kek: kek info in roam sync 452 * @replay_ctr: replay counter 453 * @subnet_change_status: if subnet has changed. 454 * 0 = unchanged 455 * 1 = changed 456 * 2 = unknown 457 * @roam_reason: reason of roaming 458 * @pmk_len: fils pmk length 459 * @pmk: fils pmk info 460 * @pmkid: fils pmkid 461 * @update_erp_next_seq_num: if seq update required 462 * @next_erp_seq_num: next seq number 463 */ 464 struct wlan_roam_sync_info { 465 uint8_t auth_status; 466 uint8_t kck_len; 467 uint8_t kck[MAX_KCK_LEN]; 468 uint8_t kek_len; 469 uint8_t kek[MAX_KEK_LENGTH]; 470 uint8_t replay_ctr[REPLAY_CTR_LEN]; 471 uint8_t subnet_change_status; 472 uint16_t roam_reason; 473 uint32_t pmk_len; 474 uint8_t pmk[MAX_PMK_LEN]; 475 uint8_t pmkid[PMKID_LEN]; 476 bool update_erp_next_seq_num; 477 uint16_t next_erp_seq_num; 478 }; 479 #endif 480 481 /** 482 * struct wlan_cm_connect_rsp - connect resp from VDEV mgr and will be sent to 483 * OSIF 484 * @vdev_id: vdev id 485 * @is_wps_connection: if its wps connection 486 * @is_osen_connection: if its osen connection 487 * @is_reassoc: if response is for reassoc/roam 488 * @is_ft: is FT reassoc 489 * @is_assoc: if response is for assoc 490 * @send_disconnect: if disconnect needed to sent to kernel, for reassoc 491 * received in non connected state, this is to cleanup kernel 492 * @cm_id: Connect manager id 493 * @bssid: BSSID of the ap 494 * @ssid: SSID of the connection 495 * @freq: Channel frequency 496 * @connect_status: connect status success or failure 497 * @reason: connect fail reason, valid only in case of failure 498 * @status_code: protocol status code received in auth/assoc resp 499 * @aid: aid 500 * @connect_ies: connect related IE required by osif to send to kernel 501 * @roaming_info: roam sync info received 502 * @is_fils_connection: is fils connection 503 * @ml_parnter_info: ml partner link info 504 */ 505 struct wlan_cm_connect_resp { 506 uint8_t vdev_id; 507 uint8_t is_wps_connection:1, 508 is_osen_connection:1, 509 is_reassoc:1, 510 is_ft:1, 511 is_assoc:1, 512 send_disconnect:1; 513 wlan_cm_id cm_id; 514 struct qdf_mac_addr bssid; 515 struct wlan_ssid ssid; 516 qdf_freq_t freq; 517 QDF_STATUS connect_status; 518 enum wlan_cm_connect_fail_reason reason; 519 enum wlan_status_code status_code; 520 uint8_t aid; 521 struct wlan_connect_rsp_ies connect_ies; 522 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 523 struct wlan_roam_sync_info *roaming_info; 524 #endif 525 #ifdef WLAN_FEATURE_FILS_SK 526 bool is_fils_connection; 527 #endif 528 #ifdef WLAN_FEATURE_11BE_MLO 529 struct mlo_partner_info ml_parnter_info; 530 #endif 531 }; 532 533 #ifdef WLAN_VENDOR_HANDOFF_CONTROL 534 /* As per enum WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID */ 535 #define MAX_VENDOR_CONTROL_PARAMS 8 536 /* 537 * struct roam_param_info: vendor handoff related parameters 538 * @param_id : vendor control Param ID from enum 539 * WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID 540 * @param_value : vendor control param value 541 */ 542 struct roam_param_info { 543 uint32_t param_id; 544 uint32_t param_value; 545 }; 546 547 /* 548 * struct roam_vendor_handoff_params: vendor handoff parameters 549 * @vdev_id : vdev id 550 * @num_entries: num of tlv present in vendor handoff event 551 * @param_info: vendor handoff related parameters 552 */ 553 struct roam_vendor_handoff_params { 554 uint32_t vdev_id; 555 uint32_t num_entries; 556 struct roam_param_info param_info[MAX_VENDOR_CONTROL_PARAMS]; 557 }; 558 559 #endif 560 561 #ifdef WLAN_FEATURE_PREAUTH_ENABLE 562 /** 563 * struct wlan_preauth_req - preauth request 564 * @vdev_id: vdev id 565 * @entry: scan entry for the candidate 566 */ 567 struct wlan_preauth_req { 568 uint8_t vdev_id; 569 struct scan_cache_entry *entry; 570 }; 571 572 /** 573 * struct wlan_cm_preauth_fail - connection manager preauth fail 574 * @cm_id: connection id 575 * @reason: connect fail reason 576 */ 577 struct wlan_cm_preauth_fail { 578 wlan_cm_id cm_id; 579 enum wlan_cm_connect_fail_reason reason; 580 }; 581 582 #define CM_MAX_FTIE_SIZE 384 583 584 /** 585 * struct wlan_preauth_rsp - preauth response 586 * @psoc: psoc object 587 * @vdev_id: vdev id 588 * @cm_id: connection manager ID 589 * @pre_auth_bssid: bssid to preauth to 590 * @status: QDF_STATUS 591 * @ft_ie_length: ft ie length 592 * @ft_ie: ft ie 593 * @ric_ies_length: ric ies length 594 * @ric_ies: ric ies 595 * @timestamp: time stamp 596 */ 597 struct wlan_preauth_rsp { 598 struct wlan_objmgr_psoc *psoc; 599 uint8_t vdev_id; 600 wlan_cm_id cm_id; 601 struct qdf_mac_addr pre_auth_bssid; 602 QDF_STATUS status; 603 uint16_t ft_ie_length; 604 uint8_t ft_ie[CM_MAX_FTIE_SIZE]; 605 uint16_t ric_ies_length; 606 uint8_t ric_ies[CM_MAX_FTIE_SIZE]; 607 #ifdef FEATURE_WLAN_ESE 608 uint32_t timestamp[2]; 609 #endif 610 }; 611 #endif 612 613 /** 614 * struct wlan_cm_discon_rsp - disconnect resp from VDEV mgr and will be sent to 615 * OSIF 616 * @req: disconnect req sent to vdev mgr 617 * @ap_discon_ie: disconnect IE sent by AP 618 */ 619 struct wlan_cm_discon_rsp { 620 struct wlan_cm_vdev_discon_req req; 621 struct element_info ap_discon_ie; 622 }; 623 624 /* 625 * enum wlan_cm_active_request_type: CM active req type 626 * @CM_NONE: No active serialisation command 627 * @CM_CONNECT_ACTIVE: Connect active in serialisation 628 * @CM_DISCONNECT_ACTIVE: DicConnect active in serialisation 629 * @CM_ROAM_ACTIVE: Roam active in serialisation 630 */ 631 enum wlan_cm_active_request_type { 632 CM_NONE, 633 CM_CONNECT_ACTIVE, 634 CM_DISCONNECT_ACTIVE, 635 CM_ROAM_ACTIVE, 636 }; 637 638 #endif /* __WLAN_CM_PUBLIC_STRUCT_H__ */ 639