1 /*
2 * Copyright (c) 2012-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
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(__LIM_SESSION_H)
21 #define __LIM_SESSION_H
22
23 #include "wlan_cm_public_struct.h"
24 /**=========================================================================
25
26 \file lim_session.h
27
28 \brief prototype for lim Session related APIs
29
30 \author Sunit Bhatia
31
32 ========================================================================*/
33
34 /* Master Structure: This will be part of PE Session Entry */
35 typedef struct sPowersaveoffloadInfo {
36 uint8_t bcnmiss;
37 } tPowersaveoffloadInfo, tpPowersaveoffloadInfo;
38
39 struct comeback_timer_info {
40 struct mac_context *mac;
41 uint8_t vdev_id;
42 uint8_t retried;
43 tLimMlmStates lim_prev_mlm_state; /* Previous MLM State */
44 tLimMlmStates lim_mlm_state; /* MLM State */
45 };
46 /*--------------------------------------------------------------------------
47 Include Files
48 ------------------------------------------------------------------------*/
49
50 /*--------------------------------------------------------------------------
51 Preprocessor definitions and constants
52 ------------------------------------------------------------------------*/
53 #define SCH_PROTECTION_RESET_TIME 4000
54
55 /*--------------------------------------------------------------------------
56 Type declarations
57 ------------------------------------------------------------------------*/
58 typedef struct {
59 tSirMacBeaconInterval beaconInterval;
60 uint8_t fShortPreamble;
61 uint8_t llaCoexist;
62 uint8_t llbCoexist;
63 uint8_t llgCoexist;
64 uint8_t ht20Coexist;
65 uint8_t llnNonGFCoexist;
66 uint8_t fRIFSMode;
67 uint8_t fLsigTXOPProtectionFullSupport;
68 uint8_t gHTObssMode;
69 } tBeaconParams, *tpBeaconParams;
70
71 typedef struct join_params {
72 uint16_t prot_status_code;
73 uint16_t pe_session_id;
74 tSirResultCodes result_code;
75 } join_params;
76
77 struct reassoc_params {
78 uint16_t prot_status_code;
79 tSirResultCodes result_code;
80 struct pe_session *session;
81 };
82
83 #ifdef WLAN_FEATURE_11AX_BSS_COLOR
84 #define MAX_BSS_COLOR_VALUE 63
85 #define TIME_BEACON_NOT_UPDATED 30000
86 #define BSS_COLOR_SWITCH_COUNTDOWN 5
87 #define OBSS_COLOR_COLLISION_DETECTION_STA_PERIOD_MS 120000
88 #define OBSS_COLOR_COLLISION_DETECTION_AP_PERIOD_MS 120000
89 /*
90 * Have OBSS scan duration as 1200 seconds(20 minutes) when there is an active
91 * NDP to avoid glitches during NDP traffic due the scan.
92 */
93 #define OBSS_COLOR_COLLISION_DETECTION_NDP_PERIOD_MS 1200000
94 #define OBSS_COLOR_COLLISION_SCAN_PERIOD_MS 200
95 #define OBSS_COLOR_COLLISION_FREE_SLOT_EXPIRY_MS 50000
96 struct bss_color_info {
97 qdf_time_t timestamp;
98 uint64_t seen_count;
99 };
100 #endif
101
102 /**
103 * struct obss_detection_cfg - current obss detection cfg set to firmware
104 * @obss_11b_ap_detect_mode: detection mode for 11b access point.
105 * @obss_11b_sta_detect_mode: detection mode for 11b station.
106 * @obss_11g_ap_detect_mode: detection mode for 11g access point.
107 * @obss_11a_detect_mode: detection mode for 11a access point.
108 * @obss_ht_legacy_detect_mode: detection mode for ht ap with legacy mode.
109 * @obss_ht_mixed_detect_mode: detection mode for ht ap with mixed mode.
110 * @obss_ht_20mhz_detect_mode: detection mode for ht ap with 20mhz mode.
111 */
112 struct obss_detection_cfg {
113 uint8_t obss_11b_ap_detect_mode;
114 uint8_t obss_11b_sta_detect_mode;
115 uint8_t obss_11g_ap_detect_mode;
116 uint8_t obss_11a_detect_mode;
117 uint8_t obss_ht_legacy_detect_mode;
118 uint8_t obss_ht_mixed_detect_mode;
119 uint8_t obss_ht_20mhz_detect_mode;
120 };
121
122 #define ADAPTIVE_11R_STA_IE_LEN 0x0B
123 #define ADAPTIVE_11R_STA_OUI "\x00\x00\x0f\x22"
124 #define ADAPTIVE_11R_OUI_LEN 0x04
125 #define ADAPTIVE_11R_OUI_SUBTYPE 0x00
126 #define ADAPTIVE_11R_OUI_VERSION 0x01
127 #define ADAPTIVE_11R_DATA_LEN 0x04
128 #define ADAPTIVE_11R_OUI_DATA "\x00\x00\x00\x01"
129
130 #ifdef WLAN_FEATURE_11BE_MLO
131 #define WLAN_STA_PROFILE_MAX_LEN 514
132 #define WLAN_MLO_IE_COM_MAX_LEN 257
133
134 /**
135 * struct wlan_mlo_sta_profile - Per STA profile structure
136 * @num_data: the length of data
137 * @data: the Per STA profile subelement data. Subelement ID + LEN + others,
138 * if num_data more than 257, it includes the frag IE for tx; it does not
139 * include the frag IE since it has been skipped when store the IE.
140 */
141 struct wlan_mlo_sta_profile {
142 uint16_t num_data;
143 uint8_t data[WLAN_STA_PROFILE_MAX_LEN];
144 };
145
146 /**
147 * struct medium_sync_delay - medium sync delay info
148 * @medium_sync_duration: medium sync duration
149 * @medium_sync_ofdm_ed_thresh: medium sync OFDM ED threshold
150 * @medium_sync_max_txop_num: medium sync max txop num
151 */
152 struct medium_sync_delay {
153 uint16_t medium_sync_duration:8;
154 uint16_t medium_sync_ofdm_ed_thresh:4;
155 uint16_t medium_sync_max_txop_num:4;
156 };
157
158 /**
159 * struct eml_capabilities - EML capability info
160 * @emlsr_support: EMLSR support
161 * @emlsr_padding_delay: EMLSR padding delay
162 * @emlsr_transition_delay: EMLSR transition delay
163 * @emlmr_support: EMLSR support
164 * @emlmr_delay: EMLSR delay
165 * @transition_timeout: transition timeout
166 * @reserved: reserve
167 */
168 struct eml_capabilities {
169 uint16_t emlsr_support:1;
170 uint16_t emlsr_padding_delay:3;
171 uint16_t emlsr_transition_delay:3;
172 uint16_t emlmr_support:1;
173 uint16_t emlmr_delay:3;
174 uint16_t transition_timeout:4;
175 uint16_t reserved:1;
176 };
177
178 /**
179 * struct mld_capab_and_op - MLD capability and operations info
180 * @max_simultaneous_link_num: MAX simultaneous link num
181 * @srs_support: SRS support
182 * @tid_link_map_supported: TID link map support
183 * @str_freq_separation: STR freq separation
184 * @aar_support: AAR support
185 * @reserved: reserve
186 */
187 struct mld_capab_and_op {
188 uint16_t max_simultaneous_link_num:4;
189 uint16_t srs_support:1;
190 uint16_t tid_link_map_supported:2;
191 uint16_t str_freq_separation:5;
192 uint16_t aar_support:1;
193 uint16_t reserved:3;
194 };
195
196 /**
197 * struct ext_mld_capab_and_op - EXT MLD capability and operations info
198 * @op_parameter_update_support: operation parameter update support
199 * @rec_max_simultaneous_links: recommended max simultaneous links
200 * @reserved: reserved
201 */
202 struct ext_mld_capab_and_op {
203 uint16_t op_parameter_update_support:1;
204 uint16_t rec_max_simultaneous_links:3;
205 uint16_t reserved:11;
206 };
207
208 /**
209 * struct wlan_mlo_ie - wlan ML IE info
210 * @type: the variant of the ML IE
211 * @reserved: reserved
212 * @link_id_info_present: the present flag of link id info
213 * @bss_param_change_cnt_present: the present flag of bss prarm change cnt
214 * @medium_sync_delay_info_present: the present flag of medium sync delay info
215 * @eml_capab_present: the present flag of EML capability
216 * @mld_capab_and_op_present: the present flag of MLD capability and operation
217 * @mld_id_present: the present flag of MLD ID
218 * @ext_mld_capab_and_op_present: Extended MLD Capabilities And
219 * Operations Present
220 * @reserved_1: reserved
221 * @common_info_length: common info length
222 * @mld_mac_addr: MLD mac address
223 * @link_id: link id
224 * @bss_param_change_count: bss param change count
225 * @medium_sync_delay_info: structure of medium_sync_delay
226 * @eml_capabilities_info: structure of eml_capabilities
227 * @mld_capab_and_op_info: structure of mld_capabilities and operations
228 * @mld_id_info: MLD ID
229 * @ext_mld_capab_and_op_info: structure of ext_mld_capab_and operations
230 * @num_sta_profile: the number of sta profile
231 * @sta_profile: structure of wlan_mlo_sta_profile
232 * @num_data: the length of data
233 * @data: the ML IE data, includes element ID + length + extension element ID +
234 * multi-link control and common info.
235 */
236 struct wlan_mlo_ie {
237 uint16_t type:3;
238 uint16_t reserved:1;
239 uint16_t link_id_info_present:1;
240 uint16_t bss_param_change_cnt_present:1;
241 uint16_t medium_sync_delay_info_present:1;
242 uint16_t eml_capab_present:1;
243 uint16_t mld_capab_and_op_present: 1;
244 uint16_t mld_id_present: 1;
245 uint16_t ext_mld_capab_and_op_present: 1;
246 uint16_t reserved_1:5;
247 uint8_t common_info_length;
248 uint8_t mld_mac_addr[6];
249 uint8_t link_id;
250 uint8_t bss_param_change_count;
251 struct medium_sync_delay medium_sync_delay_info;
252 struct eml_capabilities eml_capabilities_info;
253 struct mld_capab_and_op mld_capab_and_op_info;
254 uint8_t mld_id_info;
255 struct ext_mld_capab_and_op ext_mld_capab_and_op_info;
256 uint16_t num_sta_profile;
257 struct wlan_mlo_sta_profile sta_profile[WLAN_MLO_MAX_VDEVS];
258 uint16_t num_data;
259 uint8_t data[WLAN_MLO_IE_COM_MAX_LEN];
260 };
261
262 /**
263 * struct mlo_link_ie - IE per link to populate mlo ie
264 * @link_ds: DS IE
265 * @link_edca: ecsa IE
266 * @link_wmm_params: wmm params IE
267 * @link_wmm_caps: wmm caps IE
268 * @link_csa: csa IE
269 * @link_ecsa:ecsa IE
270 * @link_swt_time: switch time IE
271 * @link_quiet: quiet IE
272 * @link_ht_cap: ht cap IE
273 * @link_ht_info: ht info IE
274 * @link_cap: link caps IE
275 * @link_ext_cap: link extend cap IE
276 * @link_vht_cap: vht cap IE
277 * @link_vht_op: vht op IE
278 * @link_qcn_ie: qcn IE
279 * @link_he_cap: he cap IE
280 * @link_he_op: he op IE
281 * @link_he_6ghz_band_cap: 6G band cap IE
282 * @link_eht_cap: eht cap IE
283 * @link_eht_op: eht op IE
284 * @max_chan_swt_time: MLOTD
285 * @bss_param_change_cnt: bss param change count
286 */
287 struct mlo_link_ie {
288 tDot11fIEDSParams link_ds;
289 tDot11fIEEDCAParamSet link_edca;
290 tDot11fIEWMMParams link_wmm_params;
291 tDot11fIEWMMCaps link_wmm_caps;
292 tDot11fIEChanSwitchAnn link_csa;
293 tDot11fIEext_chan_switch_ann link_ecsa;
294 tDot11fIEmax_chan_switch_time link_swt_time;
295 tDot11fIEQuiet link_quiet;
296 tDot11fIEHTCaps link_ht_cap;
297 tDot11fIEHTInfo link_ht_info;
298 tDot11fFfCapabilities link_cap;
299 tDot11fIEExtCap link_ext_cap;
300 tDot11fIEVHTCaps link_vht_cap;
301 tDot11fIEVHTOperation link_vht_op;
302 tDot11fIEqcn_ie link_qcn_ie;
303 tDot11fIEhe_cap link_he_cap;
304 tDot11fIEhe_op link_he_op;
305 tDot11fIEhe_6ghz_band_cap link_he_6ghz_band_cap;
306 tDot11fIEeht_cap link_eht_cap;
307 tDot11fIEeht_op link_eht_op;
308 uint32_t max_chan_swt_time;
309 uint8_t bss_param_change_cnt;
310 };
311
312 /**
313 * struct mlo_link_ie_info - information per link to populate mlo ie
314 * @upt_bcn_mlo_ie: notify partner links to update their mlo ie of bcn temp
315 * @bss_param_change: bss param changed
316 * @bcn_tmpl_exist: bcn template is generated or not
317 * @link_ie: IEs which will be used for generating partner mlo IE
318 */
319 struct mlo_link_ie_info {
320 bool upt_bcn_mlo_ie;
321 bool bss_param_change;
322 bool bcn_tmpl_exist;
323 struct mlo_link_ie link_ie;
324 };
325
326 /**
327 * struct wlan_mlo_ie_info - struct for mlo IE information
328 * @mld_mac_addr: MLD MAC address
329 * @common_info_length: Common Info Length
330 * @reserved_1: reserved bits
331 * @mld_id_present: MLD ID present
332 * @mld_capab_and_op_present: MLD capability and operations present
333 * @eml_capab_present: EML capability present
334 * @medium_sync_delay_info_present: Medium sync delay information present
335 * @bss_param_change_cnt_present: BSS parameter change count present
336 * @link_id_info_present: Link ID information present
337 * @ext_mld_capab_and_op_present: Extended MLD Capabilities And
338 * Operations Present
339 * @reserved: reserved bit
340 * @type: Type bits
341 */
342 struct wlan_mlo_ie_info {
343 #ifndef ANI_LITTLE_BIT_ENDIAN
344 uint8_t mld_mac_addr[6];
345 uint8_t common_info_length;
346 uint16_t reserved_1:5;
347 uint16_t ext_mld_capab_and_op_present:1;
348 uint16_t mld_id_present:1;
349 uint16_t mld_capab_and_op_present:1;
350 uint16_t eml_capab_present:1;
351 uint16_t medium_sync_delay_info_present:1;
352 uint16_t bss_param_change_cnt_present:1;
353 uint16_t link_id_info_present:1;
354 uint16_t reserved:1;
355 uint16_t type:3;
356 #else
357 uint16_t type:3;
358 uint16_t reserved:1;
359 uint16_t link_id_info_present:1;
360 uint16_t bss_param_change_cnt_present:1;
361 uint16_t medium_sync_delay_info_present:1;
362 uint16_t eml_capab_present:1;
363 uint16_t mld_capab_and_op_present:1;
364 uint16_t mld_id_present:1;
365 uint16_t ext_mld_capab_and_op_present:1;
366 uint16_t reserved_1:5;
367 uint8_t common_info_length;
368 uint8_t mld_mac_addr[6];
369 #endif
370 } qdf_packed;
371
372 #endif
373
374 /**
375 * struct pe_session - per-vdev PE context
376 * @available: true if the entry is available, false if it is in use
377 * @cm_id:
378 * @peSessionId: unique ID assigned to the entry
379 * @smeSessionId: ID of the session (legacy nomenclature)
380 * @vdev_id: ID of the vdev for which this entry is applicable
381 * @vdev: the actual vdev for which this entry is applicable
382 * @bssId: BSSID of the session
383 * @self_mac_addr: self MAC address
384 * * In AP role: BSSID and self_mac_addr will be the same.
385 * * In STA role: they will be different
386 * @ssId:
387 * @valid:
388 * @limMlmState: MLM State
389 * @limPrevMlmState: Previous MLM State
390 * @limSmeState: SME State
391 * @limPrevSmeState: Previous SME State
392 * @limSystemRole:
393 * @bssType:
394 * @nwType:
395 * @pLimStartBssReq:
396 * @lim_join_req: handle to sme join req
397 * @pLimReAssocReq: handle to sme reassoc req
398 * @pLimMlmJoinReq: handle to MLM join Req
399 * @pLimMlmReassocRetryReq: keep reasoc req for retry
400 * @pLimMlmReassocReq: handle to MLM reassoc Req
401 * @channelChangeReasonCode:
402 * @dot11mode:
403 * @htCapability:
404 * @connected_akm: AKM of current connection
405 * @htSupportedChannelWidthSet: HT Supported Channel Width Set:
406 * * 0 - 20MHz
407 * * 1 - 40MHz
408 * @htRecommendedTxWidthSet: Recommended Tx Width Set:
409 * * 0 - use 20 MHz channel (control channel)
410 * * 1 - use channel width enabled under Supported Channel Width Set
411 * @htSecondaryChannelOffset: Identifies the 40 MHz extension channel
412 * @limRFBand:
413 * @limCurrentAuthType:
414 * @limCurrentBssCaps:
415 * @limCurrentBssQosCaps:
416 * @limSentCapsChangeNtf:
417 * @limAID:
418 * @limReAssocbssId:
419 * @lim_reassoc_chan_freq:
420 * @reAssocHtSupportedChannelWidthSet:
421 * @reAssocHtRecommendedTxWidthSet:
422 * @reAssocHtSecondaryChannelOffset:
423 * @limReassocSSID:
424 * @limReassocBssCaps:
425 * @limReassocBssQosCaps:
426 * @limAssocResponseData: Assoc or ReAssoc Response Data/Frame
427 * @statypeForBss: to know session is for PEER or SELF
428 * @shortSlotTimeSupported:
429 * @dtimPeriod:
430 * @rateSet:
431 * @extRateSet:
432 * @htOperMode:
433 * @curr_op_freq:
434 * @curr_req_chan_freq:
435 * @LimRxedBeaconCntDuringHB:
436 * @lastBeaconTimeStamp: Time stamp of the last beacon received from the BSS
437 * to which STA is connected.
438 * @currentBssBeaconCnt: RX Beacon count for the current BSS to which STA
439 * is connected.
440 * @bcon_dtim_period: Beacon DTIM period
441 * @bcnLen: Length of @beacon
442 * @beacon: Used to store last beacon / probe response before assoc.
443 * @assocReqLen: Length of @assoc_req
444 * @assoc_req: Used to store association request frame
445 * @assocRspLen: Length of @assocRsp
446 * @assocRsp: Used to store association response received while associating
447 * @dph:
448 * @parsedAssocReq: Used to store parsed assoc req from various requesting
449 * station
450 * @RICDataLen: Length of @ricData
451 * @ricData: Used to store the Ric data received in the assoc response
452 * @tspecLen: Length of @tspecIes
453 * @tspecIes: Used to store the TSPEC IEs received in the assoc response
454 * @encryptType:
455 * @gLimProtectionControl: used for 11n protection
456 * @gHTNonGFDevicesPresent:
457 * @cfgProtection: protection related config cache
458 * @gLim11bParams: Number of legacy STAs associated
459 * @gLim11aParams: Number of 11A STAs associated
460 * @gLim11gParams: Number of non-ht non-legacy STAs associated
461 * @gLimNonGfParams: Number of nonGf STA associated
462 * @gLimHt20Params: Number of HT 20 STAs associated
463 * @gLimLsigTxopParams: Number of Lsig Txop not supported STAs associated
464 * @gLimNoShortParams: Number of STAs that do not support short preamble
465 * @gLimNoShortSlotParams: Number of STAs that do not support short slot time
466 * @gLimOlbcParams: OLBC parameters
467 * @gLimOverlap11gParams: OLBC parameters
468 * @gLimOverlap11aParams:
469 * @gLimOverlapHt20Params:
470 * @gLimOverlapNonGfParams:
471 * @protStaCache: cache for each overlap
472 * @privacy:
473 * @authType:
474 * @WEPKeyMaterial:
475 * @wmm_params:
476 * @gStartBssRSNIe:
477 * @gStartBssWPAIe:
478 * @APWPSIEs:
479 * @apUapsdEnable:
480 * @pAPWPSPBCSession:
481 * @DefProbeRspIeBitmap:
482 * @proxyProbeRspEn:
483 * @probeRespFrame:
484 * @ssidHidden:
485 * @fwdWPSPBCProbeReq:
486 * @wps_state:
487 * @wps_registration:
488 * @limQosEnabled: Is 802.11e QoS enabled
489 * @limWmeEnabled: Is WME enabled
490 * @limWsmEnabled: Is WSM enabled
491 * @limHcfEnabled: Is HCF enabled
492 * @limRmfEnabled: Is 802.11w RMF enabled
493 * @lim11hEnable: Is 802.11h enabled
494 * @maxTxPower: Max transmit power, the minimum of Regulatory and local
495 * power constraint)
496 * @min_11h_pwr:
497 * @max_11h_pwr:
498 * @opmode:
499 * @txMgmtPower:
500 * @is11Rconnection:
501 * @is_adaptive_11r_connection: flag to check if we are connecting
502 * @isESEconnection:
503 * @eseContext:
504 * @isFastTransitionEnabled:
505 * @isFastRoamIniFeatureEnabled:
506 * @p2pGoPsUpdate:
507 * @defaultAuthFailureTimeout:
508 * @gLimEdcaParams: These EDCA parameters are used locally on AP or STA.
509 * If STA, then these are values taken from the Assoc Rsp when associating,
510 * or Beacons/Probe Response after association. If AP, then these are
511 * values originally set locally on AP.
512 * @gLimEdcaParamsBC: These EDCA parameters are use by AP to broadcast
513 * to other STATIONs in the BSS.
514 * @gLimEdcaParamsActive: These EDCA parameters are what's actively being
515 * used on station. Specific AC values may be downgraded depending on
516 * admission control for that particular AC.
517 * @gLimEdcaParamSetCount:
518 * @beaconParams:
519 * @vhtCapability:
520 * @gLimOperatingMode:
521 * @vhtCapabilityPresentInBeacon:
522 * @ch_center_freq_seg0: center freq number as advertised OTA
523 * @ch_width: Session max channel width
524 * @ap_ch_width: AP advertised channel width
525 * @puncture_bitmap:
526 * @ch_center_freq_seg1:
527 * @enableVhtpAid:
528 * @enableVhtGid:
529 * @gLimWiderBWChannelSwitch:
530 * @enableAmpduPs:
531 * @send_smps_action:
532 * @spectrumMgtEnabled:
533 * @gLimSpecMgmt:
534 * @gLimChannelSwitch: CB Primary/Secondary Channel Switch Info
535 * @gLimPhyMode:
536 * @txLdpcIniFeatureEnabled:
537 * @gpLimPeerIdxpool: free peer index pool. A non-zero value indicates that
538 * peer index is available for assignment.
539 * @freePeerIdxHead:
540 * @freePeerIdxTail:
541 * @gLimNumOfCurrentSTAs:
542 * @peerAIDBitmap:
543 * @tdls_send_set_state_disable:
544 * @fWaitForProbeRsp:
545 * @fIgnoreCapsChange:
546 * @fDeauthReceived:
547 * @rssi:
548 * @max_amsdu_num:
549 * @ht_config:
550 * @vht_config:
551 * @gLimCurrentBssUapsd:
552 * @gUapsdPerAcBitmask: Used on STA, this is a static UAPSD mask setting
553 * derived from SME_JOIN_REQ and SME_REASSOC_REQ. If a
554 * particular AC bit is set, it means the AC is both
555 * trigger enabled and delivery enabled.
556 * @gUapsdPerAcTriggerEnableMask: Used on STA, this is a dynamic UPASD mask
557 * setting derived from AddTS Rsp and DelTS
558 * frame. If a particular AC bit is set, it
559 * means AC is trigger enabled.
560 * @gUapsdPerAcDeliveryEnableMask: Used on STA, dynamic UPASD mask setting
561 * derived from AddTS Rsp and DelTs frame. If
562 * a particular AC bit is set, it means AC is
563 * delivery enabled.
564 * @csaOffloadEnable: Flag to skip CSA IE processing when CSA offload is
565 * enabled.
566 * @gAcAdmitMask: Used on STA for AC downgrade. This is a dynamic mask
567 * setting which keep tracks of ACs being admitted.
568 * If bit is set to 0: That particular AC is not admitted
569 * If bit is set to 1: That particular AC is admitted
570 * @pmmOffloadInfo: Power Save Off load Parameters
571 * @smpsMode: SMPS mode
572 * @chainMask:
573 * @dfsIncludeChanSwIe: Flag to indicate Chan Sw announcement is required
574 * @dfsIncludeChanWrapperIe: Flag to indicate Chan Wrapper Element is required
575 * @bw_update_include_ch_sw_ie: Flag to indicate chan switch Element is required
576 * due to bandwidth update
577 * @cc_switch_mode:
578 * @isCiscoVendorAP:
579 * @add_ie_params:
580 * @pSchProbeRspTemplate:
581 * @pSchBeaconFrameBegin: Beginning portion of the beacon frame to be written
582 * to TFP
583 * @pSchBeaconFrameEnd: Trailing portion of the beacon frame to be written
584 * to TFP
585 * @schBeaconOffsetBegin: Size of the beginning portion
586 * @schBeaconOffsetEnd: Size of the trailing portion
587 * @isOSENConnection:
588 * @QosMapSet: DSCP to UP mapping for HS 2.0
589 * @bRoamSynchInProgress:
590 * @ftPEContext: Fast Transition (FT) Context
591 * @isNonRoamReassoc:
592 * @pmf_retry_timer:
593 * @pmf_retry_timer_info:
594 * @protection_fields_reset_timer: timer for resetting protection fields
595 * at regular intervals
596 * @ap_ecsa_timer: timer to decrement CSA/ECSA count
597 * @ap_ecsa_wakelock: wakelock to complete CSA operation.
598 * @ap_ecsa_runtime_lock: runtime lock to complete SAP CSA operation.
599 * to Adaptive 11R network
600 * @mac_ctx: MAC context
601 * @old_protection_state: variable to store state of various protection
602 * struct like gLimOlbcParams, gLimOverlap11gParams,
603 * gLimOverlapHt20Params etc
604 * @prev_ap_bssid:
605 * @sap_advertise_avoid_ch_ie: tells if Q2Q IE, from another MDM device in
606 * AP MCC mode was received
607 * @is_ese_version_ie_present:
608 * @sap_dot11mc:
609 * @is_vendor_specific_vhtcaps:
610 * @vendor_specific_vht_ie_sub_type:
611 * @vendor_vht_sap:
612 * @hs20vendor_ie: HS 2.0 Indication
613 * @country_info_present: flag to indicate country code in beacon
614 * @nss:
615 * @nss_forced_1x1:
616 * @add_bss_failed:
617 * @obss_ht40_scanparam: OBSS Scan IE Parameters
618 * @vdev_nss:
619 * @supported_nss_1x1: Supported NSS is intersection of self and peer NSS
620 * @is_ext_caps_present:
621 * @beacon_tx_rate:
622 * @access_policy_vendor_ie:
623 * @access_policy:
624 * @send_p2p_conf_frame:
625 * @process_ho_fail:
626 * @lim_non_ecsa_cap_num: Number of STAs that do not support ECSA capability
627 * @he_capable:
628 * @he_config:
629 * @he_op:
630 * @he_sta_obsspd:
631 * @he_6ghz_band:
632 * @he_bss_color_change:
633 * @bss_color_info:
634 * @bss_color_changing:
635 * @deauth_retry:
636 * @enable_bcast_probe_rsp:
637 * @ht_client_cnt:
638 * @ch_switch_in_progress:
639 * @he_with_wep_tkip:
640 * @fils_info:
641 * @prev_auth_seq_num: Sequence number of previously received auth frame to
642 * detect duplicate frames.
643 * @prev_auth_mac_addr: mac_addr of the sta correspond to @prev_auth_seq_num
644 * @obss_offload_cfg:
645 * @current_obss_detection:
646 * @is_session_obss_offload_enabled:
647 * @is_obss_reset_timer_initialized:
648 * @sae_pmk_cached:
649 * @recvd_deauth_while_roaming:
650 * @recvd_disassoc_while_roaming:
651 * @deauth_disassoc_rc:
652 * @obss_color_collision_dec_evt:
653 * @is_session_obss_color_collision_det_enabled:
654 * @ap_mu_edca_params:
655 * @mu_edca_present:
656 * @def_max_tx_pwr:
657 * @active_ba_64_session:
658 * @is_mbssid_enabled:
659 * @peer_twt_requestor:
660 * @peer_twt_responder:
661 * @enable_session_twt_support:
662 * @cac_duration_ms:
663 * @stop_bss_reason:
664 * @prot_status_code:
665 * @result_code:
666 * @dfs_regdomain:
667 * @ap_defined_power_type_6g: 6 GHz power type advertised by AP
668 * @best_6g_power_type: best 6 GHz power type
669 * @sta_follows_sap_power:
670 * @eht_capable:
671 * @eht_config:
672 * @eht_op:
673 * @mlo_link_info:
674 * @ml_partner_info:
675 * @mlo_ie_total_len:
676 * @mlo_ie:
677 * @user_edca_set:
678 * @is_oui_auth_assoc_6mbps_2ghz_enable: send auth/assoc req with 6 Mbps rate
679 * @is_unexpected_peer_error: true if unexpected peer error
680 * on 2.4 GHz
681 * @join_probe_cnt: join probe request count
682 */
683 struct pe_session {
684 uint8_t available;
685 wlan_cm_id cm_id;
686 uint16_t peSessionId;
687 union {
688 uint8_t smeSessionId;
689 uint8_t vdev_id;
690 };
691 struct wlan_objmgr_vdev *vdev;
692
693 tSirMacAddr bssId;
694 tSirMacAddr self_mac_addr;
695 tSirMacSSid ssId;
696 uint8_t valid;
697 tLimMlmStates limMlmState;
698 tLimMlmStates limPrevMlmState;
699 tLimSmeStates limSmeState;
700 tLimSmeStates limPrevSmeState;
701 tLimSystemRole limSystemRole;
702 enum bss_type bssType;
703 tSirNwType nwType;
704 struct start_bss_config *pLimStartBssReq;
705 struct join_req *lim_join_req;
706 struct join_req *pLimReAssocReq;
707 tpLimMlmJoinReq pLimMlmJoinReq;
708 void *pLimMlmReassocRetryReq;
709 void *pLimMlmReassocReq;
710 uint16_t channelChangeReasonCode;
711 uint8_t dot11mode;
712 uint8_t htCapability;
713 enum ani_akm_type connected_akm;
714
715 uint8_t htSupportedChannelWidthSet;
716 uint8_t htRecommendedTxWidthSet;
717 ePhyChanBondState htSecondaryChannelOffset;
718 enum reg_wifi_band limRFBand;
719
720 tAniAuthType limCurrentAuthType;
721 uint16_t limCurrentBssCaps;
722 uint8_t limCurrentBssQosCaps;
723 uint8_t limSentCapsChangeNtf;
724 uint16_t limAID;
725
726 tSirMacAddr limReAssocbssId;
727 uint32_t lim_reassoc_chan_freq;
728 uint8_t reAssocHtSupportedChannelWidthSet;
729 uint8_t reAssocHtRecommendedTxWidthSet;
730 ePhyChanBondState reAssocHtSecondaryChannelOffset;
731 tSirMacSSid limReassocSSID;
732 uint16_t limReassocBssCaps;
733 uint8_t limReassocBssQosCaps;
734
735 void *limAssocResponseData;
736
737 uint16_t statypeForBss;
738 uint8_t shortSlotTimeSupported;
739 uint8_t dtimPeriod;
740 tSirMacRateSet rateSet;
741 tSirMacRateSet extRateSet;
742 tSirMacHTOperatingMode htOperMode;
743 qdf_freq_t curr_op_freq;
744 uint32_t curr_req_chan_freq;
745 uint8_t LimRxedBeaconCntDuringHB;
746 uint64_t lastBeaconTimeStamp;
747 uint32_t currentBssBeaconCnt;
748 uint8_t bcon_dtim_period;
749
750 uint32_t bcnLen;
751 uint8_t *beacon;
752
753 uint32_t assocReqLen;
754 uint8_t *assoc_req;
755
756 uint32_t assocRspLen;
757 uint8_t *assocRsp;
758 tAniSirDph dph;
759 void **parsedAssocReq;
760 uint32_t RICDataLen;
761 uint8_t *ricData;
762 #ifdef FEATURE_WLAN_ESE
763 uint32_t tspecLen;
764 uint8_t *tspecIes;
765 #endif
766 uint32_t encryptType;
767
768 uint8_t gLimProtectionControl;
769
770 uint8_t gHTNonGFDevicesPresent;
771
772 tCfgProtection cfgProtection;
773 tLimProtStaParams gLim11bParams;
774 tLimProtStaParams gLim11aParams;
775 tLimProtStaParams gLim11gParams;
776 tLimProtStaParams gLimNonGfParams;
777 tLimProtStaParams gLimHt20Params;
778 tLimProtStaParams gLimLsigTxopParams;
779 tLimNoShortParams gLimNoShortParams;
780 tLimNoShortSlotParams gLimNoShortSlotParams;
781 tLimProtStaParams gLimOlbcParams;
782 tLimProtStaParams gLimOverlap11gParams;
783 tLimProtStaParams gLimOverlap11aParams;
784 tLimProtStaParams gLimOverlapHt20Params;
785 tLimProtStaParams gLimOverlapNonGfParams;
786
787 tCacheParams protStaCache[LIM_PROT_STA_CACHE_SIZE];
788
789 uint8_t privacy;
790 tAniAuthType authType;
791 tDot11fIEWMMParams wmm_params;
792 tDot11fIERSN gStartBssRSNIe;
793 tDot11fIEWPA gStartBssWPAIe;
794 tSirAPWPSIEs APWPSIEs;
795 uint8_t apUapsdEnable;
796 tSirWPSPBCSession *pAPWPSPBCSession;
797 uint32_t DefProbeRspIeBitmap[8];
798 uint32_t proxyProbeRspEn;
799 tDot11fProbeResponse probeRespFrame;
800 uint8_t ssidHidden;
801 bool fwdWPSPBCProbeReq;
802 uint8_t wps_state;
803 bool wps_registration;
804
805 uint8_t limQosEnabled:1;
806 uint8_t limWmeEnabled:1;
807 uint8_t limWsmEnabled:1;
808 uint8_t limHcfEnabled:1;
809 uint8_t limRmfEnabled:1;
810 uint32_t lim11hEnable;
811
812 int8_t maxTxPower;
813 int8_t min_11h_pwr;
814 int8_t max_11h_pwr;
815 enum QDF_OPMODE opmode;
816 int8_t txMgmtPower;
817 bool is11Rconnection;
818 bool is_adaptive_11r_connection;
819
820 #ifdef FEATURE_WLAN_ESE
821 tEsePEContext eseContext;
822 #endif
823 tSirP2PNoaAttr p2pGoPsUpdate;
824 uint32_t defaultAuthFailureTimeout;
825
826 tSirMacEdcaParamRecord gLimEdcaParams[QCA_WLAN_AC_ALL];
827 tSirMacEdcaParamRecord gLimEdcaParamsBC[QCA_WLAN_AC_ALL];
828 tSirMacEdcaParamRecord gLimEdcaParamsActive[QCA_WLAN_AC_ALL];
829
830 uint8_t gLimEdcaParamSetCount;
831
832 tBeaconParams beaconParams;
833 uint8_t vhtCapability;
834 tLimOperatingModeInfo gLimOperatingMode;
835 uint8_t vhtCapabilityPresentInBeacon;
836 uint8_t ch_center_freq_seg0;
837 enum phy_ch_width ch_width;
838 enum phy_ch_width ap_ch_width;
839 #ifdef WLAN_FEATURE_11BE
840 uint16_t puncture_bitmap;
841 #endif
842 uint8_t ch_center_freq_seg1;
843 uint8_t enableVhtpAid;
844 uint8_t enableVhtGid;
845 tLimWiderBWChannelSwitchInfo gLimWiderBWChannelSwitch;
846 uint8_t enableAmpduPs;
847 bool send_smps_action;
848 uint8_t spectrumMgtEnabled;
849
850 tLimSpecMgmtInfo gLimSpecMgmt;
851 tLimChannelSwitchInfo gLimChannelSwitch;
852
853 uint32_t gLimPhyMode;
854 uint8_t txLdpcIniFeatureEnabled;
855 uint8_t *gpLimPeerIdxpool;
856 uint8_t freePeerIdxHead;
857 uint8_t freePeerIdxTail;
858 uint16_t gLimNumOfCurrentSTAs;
859 #ifdef FEATURE_WLAN_TDLS
860 uint32_t peerAIDBitmap[2];
861 bool tdls_send_set_state_disable;
862 #endif
863 bool fWaitForProbeRsp;
864 bool fIgnoreCapsChange;
865 bool fDeauthReceived;
866 #ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM
867 int8_t rssi;
868 #endif
869 uint8_t max_amsdu_num;
870 struct mlme_ht_capabilities_info ht_config;
871 struct wlan_vht_config vht_config;
872 uint8_t gLimCurrentBssUapsd;
873 uint8_t gUapsdPerAcBitmask;
874 uint8_t gUapsdPerAcTriggerEnableMask;
875 uint8_t gUapsdPerAcDeliveryEnableMask;
876 uint8_t csaOffloadEnable;
877 uint8_t gAcAdmitMask[SIR_MAC_DIRECTION_DIRECT];
878
879 tPowersaveoffloadInfo pmmOffloadInfo;
880 uint8_t smpsMode;
881
882 uint8_t chainMask;
883
884 uint8_t dfsIncludeChanSwIe;
885
886 uint8_t dfsIncludeChanWrapperIe;
887 uint8_t bw_update_include_ch_sw_ie;
888
889 #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
890 uint8_t cc_switch_mode;
891 #endif
892
893 bool isCiscoVendorAP;
894
895 struct add_ie_params add_ie_params;
896
897 uint8_t *pSchProbeRspTemplate;
898 uint8_t *pSchBeaconFrameBegin;
899 uint8_t *pSchBeaconFrameEnd;
900 uint16_t schBeaconOffsetBegin;
901 uint16_t schBeaconOffsetEnd;
902 bool isOSENConnection;
903 struct qos_map_set QosMapSet;
904
905 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
906 bool bRoamSynchInProgress;
907 #endif
908
909 tftPEContext ftPEContext;
910 bool isNonRoamReassoc;
911 qdf_mc_timer_t pmf_retry_timer;
912 struct comeback_timer_info pmf_retry_timer_info;
913 qdf_mc_timer_t protection_fields_reset_timer;
914 qdf_mc_timer_t ap_ecsa_timer;
915 qdf_wake_lock_t ap_ecsa_wakelock;
916 qdf_runtime_lock_t ap_ecsa_runtime_lock;
917 struct mac_context *mac_ctx;
918 uint16_t old_protection_state;
919 tSirMacAddr prev_ap_bssid;
920 #ifdef FEATURE_AP_MCC_CH_AVOIDANCE
921 bool sap_advertise_avoid_ch_ie;
922 #endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
923 #ifdef FEATURE_WLAN_ESE
924 uint8_t is_ese_version_ie_present;
925 #endif
926 bool sap_dot11mc;
927 bool is_vendor_specific_vhtcaps;
928 uint8_t vendor_specific_vht_ie_sub_type;
929 bool vendor_vht_sap;
930 tDot11fIEhs20vendor_ie hs20vendor_ie;
931 uint8_t country_info_present;
932 uint8_t nss;
933 bool nss_forced_1x1;
934 bool add_bss_failed;
935 struct obss_scanparam obss_ht40_scanparam;
936 uint8_t vdev_nss;
937 bool supported_nss_1x1;
938 bool is_ext_caps_present;
939 uint16_t beacon_tx_rate;
940 uint8_t *access_policy_vendor_ie;
941 uint8_t access_policy;
942 bool send_p2p_conf_frame;
943 bool process_ho_fail;
944 uint8_t lim_non_ecsa_cap_num;
945 #ifdef WLAN_FEATURE_11AX
946 bool he_capable;
947 tDot11fIEhe_cap he_config;
948 tDot11fIEhe_op he_op;
949 uint32_t he_sta_obsspd;
950 bool he_6ghz_band;
951 #ifdef WLAN_FEATURE_11AX_BSS_COLOR
952 tDot11fIEbss_color_change he_bss_color_change;
953 struct bss_color_info bss_color_info[MAX_BSS_COLOR_VALUE];
954 uint8_t bss_color_changing;
955 #endif
956 #endif
957 struct deauth_retry_params deauth_retry;
958 bool enable_bcast_probe_rsp;
959 uint8_t ht_client_cnt;
960 bool ch_switch_in_progress;
961 bool he_with_wep_tkip;
962 #ifdef WLAN_FEATURE_FILS_SK
963 struct pe_fils_session *fils_info;
964 #endif
965
966 uint16_t prev_auth_seq_num;
967 tSirMacAddr prev_auth_mac_addr;
968 struct obss_detection_cfg obss_offload_cfg;
969 struct obss_detection_cfg current_obss_detection;
970 bool is_session_obss_offload_enabled;
971 bool is_obss_reset_timer_initialized;
972 bool sae_pmk_cached;
973 bool recvd_deauth_while_roaming;
974 bool recvd_disassoc_while_roaming;
975 uint16_t deauth_disassoc_rc;
976 enum wmi_obss_color_collision_evt_type obss_color_collision_dec_evt;
977 bool is_session_obss_color_collision_det_enabled;
978 tSirMacEdcaParamRecord ap_mu_edca_params[QCA_WLAN_AC_ALL];
979 bool mu_edca_present;
980 int8_t def_max_tx_pwr;
981 bool active_ba_64_session;
982 bool is_mbssid_enabled;
983 #ifdef WLAN_SUPPORT_TWT
984 uint8_t peer_twt_requestor;
985 uint8_t peer_twt_responder;
986 #endif
987 bool enable_session_twt_support;
988 uint32_t cac_duration_ms;
989 tSirResultCodes stop_bss_reason;
990 uint16_t prot_status_code;
991 tSirResultCodes result_code;
992 uint32_t dfs_regdomain;
993 uint8_t ap_defined_power_type_6g;
994 uint8_t best_6g_power_type;
995 bool sta_follows_sap_power;
996 #ifdef WLAN_FEATURE_11BE
997 bool eht_capable;
998 tDot11fIEeht_cap eht_config;
999 tDot11fIEeht_op eht_op;
1000 #ifdef WLAN_FEATURE_11BE_MLO
1001 struct mlo_link_ie_info mlo_link_info;
1002 struct mlo_partner_info ml_partner_info;
1003 uint16_t mlo_ie_total_len;
1004 struct wlan_mlo_ie mlo_ie;
1005 #endif
1006 #endif /* WLAN_FEATURE_11BE */
1007 uint8_t user_edca_set;
1008 bool is_oui_auth_assoc_6mbps_2ghz_enable;
1009 bool is_unexpected_peer_error;
1010 uint8_t join_probe_cnt;
1011 };
1012
1013 /*-------------------------------------------------------------------------
1014 Function declarations and documentation
1015 ------------------------------------------------------------------------*/
1016
1017 #ifdef WLAN_ALLOCATE_GLOBAL_BUFFERS_DYNAMICALLY
1018 /**
1019 * pe_allocate_dph_node_array_buffer() - Allocate g_dph_node_array
1020 * memory dynamically
1021 *
1022 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_NOMEM on failure
1023 */
1024 QDF_STATUS pe_allocate_dph_node_array_buffer(void);
1025
1026 /**
1027 * pe_free_dph_node_array_buffer() - Free memory allocated dynamically
1028 *
1029 * Return: None
1030 */
1031 void pe_free_dph_node_array_buffer(void);
1032 #else /* WLAN_ALLOCATE_GLOBAL_BUFFERS_DYNAMICALLY */
pe_allocate_dph_node_array_buffer(void)1033 static inline QDF_STATUS pe_allocate_dph_node_array_buffer(void)
1034 {
1035 return QDF_STATUS_SUCCESS;
1036 }
1037
pe_free_dph_node_array_buffer(void)1038 static inline void pe_free_dph_node_array_buffer(void)
1039 {
1040 }
1041 #endif /* WLAN_ALLOCATE_GLOBAL_BUFFERS_DYNAMICALLY */
1042
1043 /**
1044 * pe_create_session() - Creates a new PE session given the BSSID
1045 * @mac: pointer to global adapter context
1046 * @bssid: BSSID of the new session
1047 * @sessionId: PE session ID is returned here, if PE session is created.
1048 * @numSta: number of stations
1049 * @bssType: bss type of new session to do conditional memory allocation.
1050 * @vdev_id: vdev_id
1051 *
1052 * This function returns the session context and the session ID if the session
1053 * corresponding to the passed BSSID is found in the PE session table.
1054 *
1055 * Return: ptr to the session context or NULL if session can not be created.
1056 */
1057 struct pe_session *pe_create_session(struct mac_context *mac,
1058 uint8_t *bssid, uint8_t *sessionId,
1059 uint16_t numSta, enum bss_type bssType,
1060 uint8_t vdev_id);
1061
1062 /**
1063 * pe_find_session_by_bssid() - looks up the PE session given the BSSID.
1064 *
1065 * @mac: pointer to global adapter context
1066 * @bssid: BSSID of the new session
1067 * @sessionId: session ID is returned here, if session is created.
1068 *
1069 * This function returns the session context and the session ID if the session
1070 * corresponding to the given BSSID is found in the PE session table.
1071 *
1072 * Return: pointer to the session context or NULL if session is not found.
1073 */
1074 struct pe_session *pe_find_session_by_bssid(struct mac_context *mac, uint8_t *bssid,
1075 uint8_t *sessionId);
1076
1077 /**
1078 * pe_find_session_by_vdev_id() - looks up the PE session given the vdev_id.
1079 * @mac: pointer to global adapter context
1080 * @vdev_id: vdev id the session
1081 *
1082 * Return: pointer to the session context or NULL if session is not found.
1083 */
1084 struct pe_session *pe_find_session_by_vdev_id(struct mac_context *mac,
1085 uint8_t vdev_id);
1086
1087 /**
1088 * pe_find_session_by_vdev_id_and_state() - Find PE session by vdev_id and
1089 * mlm state.
1090 * @mac: pointer to global adapter context
1091 * @vdev_id: vdev id the session
1092 * @lim_state: LIM state of the session
1093 *
1094 * During LFR2 roaming, new pe session is created before old pe session
1095 * deleted, the 2 pe sessions have different pe session id, but same vdev id,
1096 * can't get correct pe session by vdev id at this time.
1097 *
1098 * Return: pointer to the session context or NULL if session is not found.
1099 */
1100 struct pe_session
1101 *pe_find_session_by_vdev_id_and_state(struct mac_context *mac,
1102 uint8_t vdev_id,
1103 enum eLimMlmStates lim_state);
1104
1105 /**
1106 * pe_find_session_by_bssid_and_vdev_id() - looks up the PE session given
1107 * the BSSID and vdev id.
1108 * @mac: pointer to global adapter context
1109 * @bssid: BSSID of the new session
1110 * @vdev_id: vdev id the session
1111 * @sessionId: session ID is returned here, if session is created.
1112 *
1113 * This function returns the session context and the session ID if the session
1114 * corresponding to the given BSSID and vdev id is found in the PE
1115 * session table.
1116 *
1117 * Return: pointer to the session context or NULL if session is not found.
1118 */
1119 struct pe_session *pe_find_session_by_bssid_and_vdev_id(struct mac_context *mac,
1120 uint8_t *bssid,
1121 uint8_t vdev_id,
1122 uint8_t *sessionId);
1123
1124 /**
1125 * pe_find_session_by_peer_sta() - looks up the PE session given the Peer
1126 * Station Address.
1127 *
1128 * @mac: pointer to global adapter context
1129 * @sa: Peer STA Address of the session
1130 * @sessionId: session ID is returned here, if session is found.
1131 *
1132 * This function returns the session context and the session ID if the session
1133 * corresponding to the given destination address is found in the PE session
1134 * table.
1135 *
1136 * Return: pointer to the session context or NULL if session is not found.
1137 */
1138 struct pe_session *pe_find_session_by_peer_sta(struct mac_context *mac, uint8_t *sa,
1139 uint8_t *sessionId);
1140
1141 /**
1142 * pe_find_session_by_session_id() - looks up the PE session given the session
1143 * ID.
1144 *
1145 * @mac: pointer to global adapter context
1146 * @sessionId: session ID for which session context needs to be looked up.
1147 *
1148 * This function returns the session context if the session corresponding to
1149 * the given session ID is found in the PE session table.
1150 *
1151 * Return: pointer to the session context or NULL if session is not found.
1152 */
1153 struct pe_session *pe_find_session_by_session_id(struct mac_context *mac,
1154 uint8_t sessionId);
1155
1156 /**
1157 * pe_delete_session() - deletes the PE session given the session ID.
1158 *
1159 * @mac: pointer to global adapter context
1160 * @pe_session: session to delete
1161 *
1162 * Return: void
1163 */
1164 void pe_delete_session(struct mac_context *mac, struct pe_session *pe_session);
1165
1166 /**
1167 * pe_find_session_by_scan_id() - looks up the PE session for given scan id
1168 * @mac_ctx: pointer to global adapter context
1169 * @scan_id: scan id
1170 *
1171 * looks up the PE session for given scan id
1172 *
1173 * Return: pe session entry for given scan id if found else NULL
1174 */
1175 struct pe_session *pe_find_session_by_scan_id(struct mac_context *mac_ctx,
1176 uint32_t scan_id);
1177
1178 uint8_t pe_get_active_session_count(struct mac_context *mac_ctx);
1179
1180 /**
1181 * lim_dump_session_info() - Dump the key parameters of PE session
1182 * @mac_ctx: Global MAC context
1183 * @pe_session: PE session
1184 *
1185 * Dumps the fields from the @pe_session for debugging.
1186 *
1187 * Return: void
1188 */
1189 void lim_dump_session_info(struct mac_context *mac_ctx,
1190 struct pe_session *pe_session);
1191
1192 #ifdef WLAN_FEATURE_11AX
1193 /**
1194 * lim_dump_he_info() - Dump HE fields in PE session
1195 * @mac: Global MAC context
1196 * @session: PE session
1197 *
1198 * Dumps the fields related to HE from the @session for debugging
1199 *
1200 * Return: void
1201 */
1202 void lim_dump_he_info(struct mac_context *mac, struct pe_session *session);
1203 #else
lim_dump_he_info(struct mac_context * mac,struct pe_session * session)1204 static inline void lim_dump_he_info(struct mac_context *mac,
1205 struct pe_session *session)
1206 {
1207 }
1208 #endif
1209
1210 #ifdef WLAN_FEATURE_11BE_MLO
1211 /**
1212 * lim_dump_eht_info() - Dump EHT fields in PE session
1213 * @session: PE session
1214 *
1215 * Dumps the fields related to EHT from @session for debugging
1216 *
1217 * Return: void
1218 */
1219 void lim_dump_eht_info(struct pe_session *session);
1220 #else
lim_dump_eht_info(struct pe_session * session)1221 static inline void lim_dump_eht_info(struct pe_session *session)
1222 {
1223 }
1224 #endif
1225
1226 #ifdef WLAN_FEATURE_FILS_SK
1227 /**
1228 * pe_delete_fils_info: API to delete fils session info
1229 * @session: pe session
1230 *
1231 * Return: void
1232 */
1233 void pe_delete_fils_info(struct pe_session *session);
1234 #endif
1235
1236 /**
1237 * lim_set_bcn_probe_filter - set the beacon/probe filter in mac context
1238 *
1239 * @mac_ctx: pointer to global mac context
1240 * @session: pointer to the PE session
1241 * @sap_channel: Operating Channel of the session for SAP sessions
1242 *
1243 * Sets the beacon/probe filter in the global mac context to filter
1244 * and drop beacon/probe frames before posting it to PE queue
1245 *
1246 * Return: None
1247 */
1248 void lim_set_bcn_probe_filter(struct mac_context *mac_ctx,
1249 struct pe_session *session,
1250 uint8_t sap_channel);
1251
1252 /**
1253 * lim_reset_bcn_probe_filter - clear the beacon/probe filter in mac context
1254 *
1255 * @mac_ctx: pointer to the global mac context
1256 * @session: pointer to the PE session whose filter is to be cleared
1257 *
1258 * Return: None
1259 */
1260 void lim_reset_bcn_probe_filter(struct mac_context *mac_ctx, struct pe_session *session);
1261
1262 /**
1263 * lim_update_bcn_probe_filter - Update the beacon/probe filter in mac context
1264 *
1265 * @mac_ctx: pointer to the global mac context
1266 * @session: pointer to the PE session whose filter is to be cleared
1267 *
1268 * This API is applicable only for SAP sessions to update the SAP channel
1269 * in the filter during a channel switch
1270 *
1271 * Return: None
1272 */
1273 void lim_update_bcn_probe_filter(struct mac_context *mac_ctx, struct pe_session *session);
1274
1275 #endif /* #if !defined( __LIM_SESSION_H ) */
1276