xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_public_struct.h (revision 2f4b444fb7e689b83a4ab0e7b3b38f0bf4def8e0)
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