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