1 /*
2  * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 #if !defined(WLAN_HDD_ASSOC_H__)
21 #define WLAN_HDD_ASSOC_H__
22 
23 /**
24  * DOC: wlan_hdd_assoc.h
25  *
26  */
27 
28 /* Include files */
29 #include <sme_api.h>
30 #include <wlan_defs.h>
31 #include "cdp_txrx_peer_ops.h"
32 #include <net/cfg80211.h>
33 #include <linux/ieee80211.h>
34 
35 #define HDD_TIME_STRING_LEN 24
36 
37 /* Timeout (in ms) for Link to Up before Registering Station */
38 #define ASSOC_LINKUP_TIMEOUT 60
39 
40 #define INVALID_PEER_IDX -1
41 
42 /**
43  * enum eConnectionState - connection state values at HDD
44  * @eConnectionState_NotConnected: Not associated in Infra
45  * @eConnectionState_NdiDisconnected: NDI in disconnected state - no peers
46  * @eConnectionState_NdiConnected: NDI in connected state - at least one peer
47  */
48 typedef enum {
49 	eConnectionState_NotConnected,
50 	eConnectionState_NdiDisconnected,
51 	eConnectionState_NdiConnected,
52 } eConnectionState;
53 
54 /**
55  * enum peer_status - Peer status
56  * @ePeerConnected: peer connected
57  * @ePeerDisconnected: peer disconnected
58  */
59 enum peer_status {
60 	ePeerConnected = 1,
61 	ePeerDisconnected
62 };
63 
64 /**
65  * struct hdd_conn_flag - connection flags
66  * @ht_present: ht element present or not
67  * @vht_present: vht element present or not
68  * @eht_present: eht element present or not
69  * @hs20_present: hs20 element present or not
70  * @ht_op_present: ht operation present or not
71  * @vht_op_present: vht operation present or not
72  * @he_present: he operation present or not
73  * @eht_op_present: eht operation present or not
74  */
75 struct hdd_conn_flag {
76 	uint8_t ht_present:1;
77 	uint8_t vht_present:1;
78 	uint8_t eht_present:1;
79 	uint8_t hs20_present:1;
80 	uint8_t ht_op_present:1;
81 	uint8_t vht_op_present:1;
82 	uint8_t he_present:1;
83 	uint8_t eht_op_present:1;
84 };
85 
86 /*defines for tx_BF_cap_info */
87 #define TX_BF_CAP_INFO_TX_BF			0x00000001
88 #define TX_BF_CAP_INFO_RX_STAG_RED_SOUNDING	0x00000002
89 #define TX_BF_CAP_INFO_TX_STAG_RED_SOUNDING	0x00000004
90 #define TX_BF_CAP_INFO_RX_ZFL			0x00000008
91 #define TX_BF_CAP_INFO_TX_ZFL			0x00000010
92 #define TX_BF_CAP_INFO_IMP_TX_BF		0x00000020
93 #define TX_BF_CAP_INFO_CALIBRATION		0x000000c0
94 #define TX_BF_CAP_INFO_CALIBRATION_SHIFT	6
95 #define TX_BF_CAP_INFO_EXP_CSIT_BF		0x00000100
96 #define TX_BF_CAP_INFO_EXP_UNCOMP_STEER_MAT	0x00000200
97 #define TX_BF_CAP_INFO_EXP_BF_CSI_FB		0x00001c00
98 #define TX_BF_CAP_INFO_EXP_BF_CSI_FB_SHIFT	10
99 #define TX_BF_CAP_INFO_EXP_UNCMP_STEER_MAT	0x0000e000
100 #define TX_BF_CAP_INFO_EXP_UNCMP_STEER_MAT_SHIFT 13
101 #define TX_BF_CAP_INFO_EXP_CMP_STEER_MAT_FB	0x00070000
102 #define TX_BF_CAP_INFO_EXP_CMP_STEER_MAT_FB_SHIFT 16
103 #define TX_BF_CAP_INFO_CSI_NUM_BF_ANT		0x00180000
104 #define TX_BF_CAP_INFO_CSI_NUM_BF_ANT_SHIFT	18
105 #define TX_BF_CAP_INFO_UNCOMP_STEER_MAT_BF_ANT	0x00600000
106 #define TX_BF_CAP_INFO_UNCOMP_STEER_MAT_BF_ANT_SHIFT 20
107 #define TX_BF_CAP_INFO_COMP_STEER_MAT_BF_ANT	0x01800000
108 #define TX_BF_CAP_INFO_COMP_STEER_MAT_BF_ANT_SHIFT 22
109 #define TX_BF_CAP_INFO_RSVD			0xfe000000
110 
111 /* defines for antenna selection info */
112 #define ANTENNA_SEL_INFO			0x01
113 #define ANTENNA_SEL_INFO_EXP_CSI_FB_TX		0x02
114 #define ANTENNA_SEL_INFO_ANT_ID_FB_TX		0x04
115 #define ANTENNA_SEL_INFO_EXP_CSI_FB		0x08
116 #define ANTENNA_SEL_INFO_ANT_ID_FB		0x10
117 #define ANTENNA_SEL_INFO_RX_AS			0x20
118 #define ANTENNA_SEL_INFO_TX_SOUNDING_PPDU	0x40
119 #define ANTENNA_SEL_INFO_RSVD			0x80
120 
121 /**
122  * struct hdd_connection_info - structure to store connection information
123  * @conn_state: connection state of the NIC
124  * @bssid: BSSID
125  * @ssid: SSID Info
126  * @peer_macaddr:Peer Mac Address of the IBSS Stations
127  * @auth_type: Auth Type
128  * @uc_encrypt_type: Unicast Encryption Type
129  * @is_authenticated: Remembers authenticated state
130  * @dot11mode: dot11mode
131  * @proxy_arp_service: proxy arp service
132  * @ptk_installed: ptk installed state
133  * @gtk_installed: gtk installed state
134  * @nss: number of spatial streams negotiated
135  * @rate_flags: rate flags for current connection
136  * @chan_freq: channel frequency
137  * @txrate: txrate structure holds nss & datarate info
138  * @rxrate: rx rate info
139  * @noise: holds noise information
140  * @ht_caps: holds ht capabilities info
141  * @vht_caps: holds vht capabilities info
142  * @conn_flag: flag conn info params is present or not
143  * @hs20vendor_ie: holds passpoint/hs20 info
144  * @ht_operation: HT operation info
145  * @vht_operation: VHT operation info
146  * @he_operation: HE operation info
147  * @he_oper_len: length of @he_operation
148  * @roam_count: roaming counter
149  * @signal: holds rssi info
150  * @assoc_status_code: holds assoc fail reason
151  * @congestion: holds congestion percentage
152  * @last_ssid: holds last ssid
153  * @last_auth_type: holds last auth type
154  * @auth_time: last authentication established time
155  * @connect_time: last association established time
156  * @ch_width: channel width of operating channel
157  * @max_tx_bitrate: Max tx bitrate supported by the AP
158  * to which currently sta is connected.
159  * @prev_ap_bcn_ie: ap beacon IE information to which sta is currently connected
160  * @ieee_link_id: AP Link Id valid for MLO connection
161  * @eht_operation: EHT operation info
162  * @eht_oper_len: length of @eht_operation
163  */
164 struct hdd_connection_info {
165 	eConnectionState conn_state;
166 	struct qdf_mac_addr bssid;
167 	tCsrSSIDInfo ssid;
168 	struct qdf_mac_addr peer_macaddr[MAX_PEERS];
169 	enum csr_akm_type auth_type;
170 	eCsrEncryptionType uc_encrypt_type;
171 	uint8_t is_authenticated;
172 	uint32_t dot11mode;
173 	uint8_t proxy_arp_service;
174 	bool ptk_installed;
175 	bool gtk_installed;
176 	uint8_t nss;
177 	uint32_t rate_flags;
178 	uint32_t chan_freq;
179 	struct rate_info txrate;
180 	struct rate_info rxrate;
181 	int8_t noise;
182 	struct ieee80211_ht_cap ht_caps;
183 	struct ieee80211_vht_cap vht_caps;
184 	struct hdd_conn_flag conn_flag;
185 	tDot11fIEhs20vendor_ie hs20vendor_ie;
186 	struct ieee80211_ht_operation ht_operation;
187 	struct ieee80211_vht_operation vht_operation;
188 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) \
189      && defined(WLAN_FEATURE_11AX)
190 	struct ieee80211_he_operation *he_operation;
191 	uint32_t he_oper_len;
192 #endif
193 	uint32_t roam_count;
194 	int8_t signal;
195 	int32_t assoc_status_code;
196 	tCsrSSIDInfo last_ssid;
197 	enum csr_akm_type last_auth_type;
198 	char auth_time[HDD_TIME_STRING_LEN];
199 	char connect_time[HDD_TIME_STRING_LEN];
200 	enum phy_ch_width ch_width;
201 	struct rate_info max_tx_bitrate;
202 	struct element_info prev_ap_bcn_ie;
203 #ifdef WLAN_FEATURE_11BE_MLO
204 	int32_t ieee_link_id;
205 #endif
206 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)) && \
207 	defined(WLAN_FEATURE_11BE)
208 	struct ieee80211_eht_operation eht_operation;
209 	uint32_t eht_oper_len;
210 #endif
211 };
212 
213 /* Forward declarations */
214 struct hdd_adapter;
215 struct hdd_station_ctx;
216 struct hdd_context;
217 struct wlan_hdd_link_info;
218 
219 /*
220  * hdd_is_fils_connection: API to determine if connection is FILS
221  * @hdd_ctx: hdd context
222  * @adapter: hdd adapter
223  *
224  * Return: true if fils connection else false
225  */
226 bool hdd_is_fils_connection(struct hdd_context *hdd_ctx,
227 			    struct hdd_adapter *adapter);
228 
229 /**
230  * hdd_conn_set_authenticated() - set authentication state
231  * @link_info: Link info pointer in HDD adapter
232  * @auth_state: authentication state
233  *
234  * This function updates the global HDD station context
235  * authentication state. And to start auto powersave timer
236  * if ptk installed case and open security case.
237  *
238  * Return: none
239  */
240 void hdd_conn_set_authenticated(struct wlan_hdd_link_info *link_info,
241 				uint8_t auth_state);
242 
243 /**
244  * hdd_conn_set_connection_state() - set connection state
245  * @adapter: pointer to the adapter
246  * @conn_state: connection state
247  *
248  * This function updates the global HDD station context connection state.
249  *
250  * Return: none
251  */
252 void hdd_conn_set_connection_state(struct hdd_adapter *adapter,
253 				   eConnectionState conn_state);
254 
255 /**
256  * hdd_conn_get_connected_band() - get current connection radio band
257  * @link_info: pointer to the link_info structure
258  *
259  * Return: BAND_2G or BAND_5G based on current AP connection
260  *      BAND_ALL if not connected
261  */
262 enum band_info
263 hdd_conn_get_connected_band(struct wlan_hdd_link_info *link_info);
264 
265 /**
266  * hdd_get_sta_connection_in_progress() - get STA for which connection
267  *                                        is in progress
268  * @hdd_ctx: hdd context
269  *
270  * Return: Link info pointer in adapter for which connection is in progress
271  */
272 struct wlan_hdd_link_info *
273 hdd_get_sta_connection_in_progress(struct hdd_context *hdd_ctx);
274 
275 /**
276  * hdd_abort_ongoing_sta_connection() - Disconnect the sta for which the
277  * connection is in progress.
278  *
279  * @hdd_ctx: hdd context
280  *
281  * Return: none
282  */
283 void hdd_abort_ongoing_sta_connection(struct hdd_context *hdd_ctx);
284 
285 /**
286  * hdd_abort_ongoing_sta_sae_connection() - Disconnect the sta for which the
287  * sae connection is in progress.
288  *
289  * @hdd_ctx: hdd context
290  *
291  * Return: none
292  */
293 void hdd_abort_ongoing_sta_sae_connection(struct hdd_context *hdd_ctx);
294 
295 /**
296  * hdd_is_any_sta_connected() - check if any sta in connected state
297  * @hdd_ctx: hdd context
298  *
299  * Return: true if any connected sta
300  */
301 bool hdd_is_any_sta_connected(struct hdd_context *hdd_ctx);
302 
303 /**
304  * hdd_get_first_connected_sta_vdev_id() - check if any sta in connected state
305  * and exteact the vdev id of connected STA.
306  * @hdd_ctx: hdd context
307  * @vdev_id: pointer to vdev id
308  *
309  * Return: QDF_STATUS enumeration
310  */
311 QDF_STATUS hdd_get_first_connected_sta_vdev_id(struct hdd_context *hdd_ctx,
312 					       uint32_t *vdev_id);
313 
314 /**
315  * hdd_sme_roam_callback() - hdd sme roam callback
316  * @context: pointer to link info context in HDD adapter
317  * @roam_info: pointer to roam info
318  * @roam_status: roam status
319  * @roam_result: roam result
320  *
321  * Return: QDF_STATUS enumeration
322  */
323 QDF_STATUS hdd_sme_roam_callback(void *context,
324 				 struct csr_roam_info *roam_info,
325 				 eRoamCmdStatus roam_status,
326 				 eCsrRoamResult roam_result);
327 
328 #ifdef FEATURE_WLAN_TDLS
329 /**
330  * hdd_roam_register_tdlssta() - register new TDLS station
331  * @adapter: pointer to adapter
332  * @peerMac: pointer to peer MAC address
333  * @qos: Quality of service
334  *
335  * Construct the txrx_desc and register the new STA with the Data Plane.
336  * This is called as part of ADD_STA in the TDLS setup.
337  *
338  * Return: QDF_STATUS enumeration
339  */
340 QDF_STATUS hdd_roam_register_tdlssta(struct hdd_adapter *adapter,
341 				     const uint8_t *peerMac, uint8_t qos);
342 #endif
343 
344 #ifdef FEATURE_WLAN_ESE
345 /**
346  * hdd_indicate_ese_bcn_report_no_results() - beacon report no scan results
347  * @adapter: pointer to adapter
348  * @measurementToken: measurement token
349  * @flag: flag
350  * @numBss: number of bss
351  *
352  * If the measurement is none and no scan results found,
353  * indicate the supplicant about measurement done.
354  *
355  * Return: none
356  */
357 void
358 hdd_indicate_ese_bcn_report_no_results(const struct hdd_adapter *adapter,
359 					    const uint16_t measurementToken,
360 					    const bool flag,
361 					    const uint8_t numBss);
362 #endif /* FEATURE_WLAN_ESE */
363 
364 /**
365  * hdd_change_peer_state() - change peer state
366  * @link_info: Link info pointer of VDEV in adapter
367  * @peer_mac_addr: Peer MAC address
368  * @sta_state: peer state
369  *
370  * Return: QDF status
371  */
372 QDF_STATUS hdd_change_peer_state(struct wlan_hdd_link_info *link_info,
373 				 uint8_t *peer_mac_addr,
374 				 enum ol_txrx_peer_state sta_state);
375 
376 /**
377  * hdd_update_dp_vdev_flags() - update datapath vdev flags
378  * @cbk_data: callback data
379  * @vdev_id: virtual interface id
380  * @vdev_param: vdev parameter
381  * @is_link_up: link state up or down
382  *
383  * Return: QDF status
384  */
385 QDF_STATUS hdd_update_dp_vdev_flags(void *cbk_data,
386 				    uint8_t vdev_id,
387 				    uint32_t vdev_param,
388 				    bool is_link_up);
389 
390 /**
391  * hdd_roam_register_sta() - register station
392  * @link_info: Link info pointer in HDD adapter
393  * @bssid: bssid of the connection
394  * @is_auth_required: is upper layer authenticatoin required
395  *
396  * Return: QDF_STATUS enumeration
397  */
398 QDF_STATUS hdd_roam_register_sta(struct wlan_hdd_link_info *link_info,
399 				 struct qdf_mac_addr *bssid,
400 				 bool is_auth_required);
401 
402 /**
403  * hdd_save_peer() - Save peer MAC address in adapter peer table.
404  * @sta_ctx: pointer to hdd station context
405  * @peer_mac_addr: mac address of new peer
406  *
407  * This information is passed to iwconfig later. The peer that joined
408  * last is passed as information to iwconfig.
409  *
410  * Return: true if success, false otherwise
411  */
412 bool hdd_save_peer(struct hdd_station_ctx *sta_ctx,
413 		   struct qdf_mac_addr *peer_mac_addr);
414 
415 /**
416  * hdd_delete_peer() - removes peer from hdd station context peer table
417  * @sta_ctx: pointer to hdd station context
418  * @peer_mac_addr: mac address of peer to be deleted
419  *
420  * Return: None
421  */
422 void hdd_delete_peer(struct hdd_station_ctx *sta_ctx,
423 		     struct qdf_mac_addr *peer_mac_addr);
424 
425 /**
426  * hdd_copy_ht_caps()- copy ht caps info from roam ht caps
427  * info to source ht_cap info of type ieee80211_ht_cap.
428  * @hdd_ht_cap: pointer to Source ht_cap info of type ieee80211_ht_cap
429  * @roam_ht_cap: pointer to roam ht_caps info
430  *
431  * Return: None
432  */
433 
434 void hdd_copy_ht_caps(struct ieee80211_ht_cap *hdd_ht_cap,
435 		      tDot11fIEHTCaps *roam_ht_cap);
436 
437 /**
438  * hdd_add_beacon_filter() - add beacon filter
439  * @adapter: Pointer to the hdd adapter
440  *
441  * Return: 0 on success and errno on failure
442  */
443 int hdd_add_beacon_filter(struct hdd_adapter *adapter);
444 
445 /**
446  * hdd_copy_vht_caps()- copy vht caps info from roam vht caps
447  * info to source vht_cap info of type ieee80211_vht_cap.
448  * @hdd_vht_cap: pointer to Source vht_cap info of type ieee80211_vht_cap
449  * @roam_vht_cap: pointer to roam vht_caps info
450  *
451  * Return: None
452  */
453 void hdd_copy_vht_caps(struct ieee80211_vht_cap *hdd_vht_cap,
454 		       tDot11fIEVHTCaps *roam_vht_cap);
455 
456 /**
457  * hdd_roam_profile_init() - initialize adapter roam profile
458  * @link_info: Link info pointer in HDD adapter
459  *
460  * This function initializes the roam profile that is embedded within
461  * the adapter.
462  *
463  * Return: void
464  */
465 void hdd_roam_profile_init(struct wlan_hdd_link_info *link_info);
466 
467 /**
468  * hdd_any_valid_peer_present() - Check if any valid peer is present
469  * @link_info: Pointer of link_info in adapter struct
470  *
471  * Check if there is any peer present with non-zero mac address other than
472  * broadcast address.
473  *
474  * Return: True if there is any valid peer present
475  */
476 bool hdd_any_valid_peer_present(struct wlan_hdd_link_info *link_info);
477 
478 /**
479  * hdd_cm_register_cb() - Sets legacy callbacks to osif
480  *
481  * API to set legacy callbacks to osif
482  * Context: Any context.
483  *
484  * Return: QDF_STATUS
485  */
486 QDF_STATUS hdd_cm_register_cb(void);
487 
488 /**
489  * hdd_cm_unregister_cb - Resets legacy callbacks to osif
490  *
491  * API to reset legacy callbacks to osif
492  * Context: Any context.
493  *
494  * Return: QDF_STATUS
495  */
496 void hdd_cm_unregister_cb(void);
497 
498 /**
499  * hdd_conn_remove_connect_info() - remove connection info
500  * @sta_ctx: pointer to global HDD station context
501  *
502  * Return: none
503  */
504 void hdd_conn_remove_connect_info(struct hdd_station_ctx *sta_ctx);
505 
506 /**
507  * hdd_clear_roam_profile_ie() - Clear Roam Profile IEs
508  * @adapter: adapter who's IEs are to be cleared
509  *
510  * Return: None
511  */
512 void hdd_clear_roam_profile_ie(struct hdd_adapter *adapter);
513 
514 /**
515  * hdd_remove_beacon_filter() - remove beacon filter
516  * @adapter: Pointer to the hdd adapter
517  *
518  * Return: 0 on success and errno on failure
519  */
520 int hdd_remove_beacon_filter(struct hdd_adapter *adapter);
521 
522 /**
523  * hdd_copy_ht_operation()- copy HT operation element to
524  * hdd station context.
525  * @hdd_sta_ctx: pointer to hdd station context
526  * @ht_ops: pointer to ht operation
527  *
528  * Return: None
529  */
530 void hdd_copy_ht_operation(struct hdd_station_ctx *hdd_sta_ctx,
531 			   tDot11fIEHTInfo *ht_ops);
532 
533 /**
534  * hdd_copy_vht_operation()- copy VHT operations element to
535  * hdd station context.
536  * @hdd_sta_ctx: pointer to hdd station context
537  * @vht_ops: pointer to vht operation
538  *
539  * Return: None
540  */
541 void hdd_copy_vht_operation(struct hdd_station_ctx *hdd_sta_ctx,
542 			    tDot11fIEVHTOperation *vht_ops);
543 
544 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)) && \
545 	defined(WLAN_FEATURE_11BE)
546 /**
547  * hdd_copy_eht_operation()- copy EHT operations element to
548  * hdd station context.
549  * @hdd_sta_ctx: pointer to hdd station context
550  * @eht_ops: pointer to eht operation
551  *
552  * Return: None
553  */
554 void hdd_copy_eht_operation(struct hdd_station_ctx *hdd_sta_ctx,
555 			    tDot11fIEeht_op *eht_ops);
556 
557 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)) && \
558 	defined(WLAN_FEATURE_11BE)
559 void hdd_copy_eht_operation(struct hdd_station_ctx *hdd_sta_ctx,
560 			    tDot11fIEeht_op *eht_ops);
561 #else
hdd_copy_eht_operation(struct hdd_station_ctx * hdd_sta_ctx,tDot11fIEeht_op * eht_ops)562 static inline void hdd_copy_eht_operation(struct hdd_station_ctx *hdd_sta_ctx,
563 					  tDot11fIEeht_op *eht_ops)
564 {
565 }
566 #endif
567 
568 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) && \
569      defined(WLAN_FEATURE_11AX)
570 /**
571  * hdd_copy_he_operation()- copy HE operations element to
572  * hdd station context.
573  * @hdd_sta_ctx: pointer to hdd station context
574  * @he_operation: pointer to he operation
575  *
576  * Return: None
577  */
578 void hdd_copy_he_operation(struct hdd_station_ctx *hdd_sta_ctx,
579 			   tDot11fIEhe_op *he_operation);
580 #else
hdd_copy_he_operation(struct hdd_station_ctx * hdd_sta_ctx,tDot11fIEhe_op * he_operation)581 static inline void hdd_copy_he_operation(struct hdd_station_ctx *hdd_sta_ctx,
582 					 tDot11fIEhe_op *he_operation)
583 {
584 }
585 #endif
586 
587 /**
588  * hdd_is_roam_sync_in_progress()- Check if roam offloaded
589  * @hdd_ctx: Pointer to hdd context
590  * @vdev_id: Vdev id
591  *
592  * Return: roam sync status if roaming offloaded else false
593  */
594 bool hdd_is_roam_sync_in_progress(struct hdd_context *hdd_ctx, uint8_t vdev_id);
595 
596 #ifdef WLAN_FEATURE_HOST_ROAM
597 /**
598  * wlan_hdd_ft_set_key_delay() - hdd set key delayed for FT mode
599  * @vdev: vdev
600  *
601  * Return: void
602  */
603 void wlan_hdd_ft_set_key_delay(struct wlan_objmgr_vdev *vdev);
604 #else
605 static inline void
wlan_hdd_ft_set_key_delay(struct wlan_objmgr_vdev * vdev)606 wlan_hdd_ft_set_key_delay(struct wlan_objmgr_vdev *vdev)
607 {
608 }
609 #endif
610 
611 #ifdef FEATURE_WLAN_WAPI
612 /**
613  * hdd_translate_wapi_to_csr_auth_type() - Translate WAPI to CSR auth type
614  * @auth_suite: auth suite
615  *
616  * Return: enum csr_akm_type enumeration
617  */
618 enum csr_akm_type hdd_translate_wapi_to_csr_auth_type(uint8_t auth_suite[4]);
619 
620 /**
621  * hdd_translate_wapi_to_csr_encryption_type() -
622  *	Translate WAPI to CSR encryption type
623  * @cipher_suite: cipher suite
624  *
625  * Return: eCsrEncryptionType enumeration
626  */
627 eCsrEncryptionType
628 hdd_translate_wapi_to_csr_encryption_type(uint8_t cipher_suite[4]);
629 #else
hdd_translate_wapi_to_csr_auth_type(uint8_t auth_suite[4])630 enum csr_akm_type hdd_translate_wapi_to_csr_auth_type(uint8_t auth_suite[4])
631 {
632 	return eCSR_AUTH_TYPE_UNKNOWN;
633 }
634 
635 eCsrEncryptionType
hdd_translate_wapi_to_csr_encryption_type(uint8_t cipher_suite[4])636 hdd_translate_wapi_to_csr_encryption_type(uint8_t cipher_suite[4])
637 {
638 	return eCSR_AUTH_TYPE_UNKNOWN;
639 }
640 #endif
641 
642 /**
643  * hdd_convert_ch_width_to_cdp_peer_bw() - Convert ch_width to DP format
644  * @ch_width: ch_width
645  *
646  * Return: cdp_peer_bw enumeration
647  */
648 enum cdp_peer_bw
649 hdd_convert_ch_width_to_cdp_peer_bw(enum phy_ch_width ch_width);
650 
651 #endif
652