1  /*
2   * Copyright (c) 2011-2014, 2016, 2018-2021 The Linux Foundation. All rights reserved.
3   * Copyright (c) 2022, 2024 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  /*
21   *
22   * This file lim_prop_exts_utils.h contains the definitions
23   * used by all LIM modules to support proprietary features.
24   * Author:        Chandra Modumudi
25   * Date:          12/11/02
26   * History:-
27   * Date           Modified by    Modification Information
28   * --------------------------------------------------------------------
29   *
30   */
31  
32  #ifndef __LIM_PROP_EXTS_UTILS_H
33  #define __LIM_PROP_EXTS_UTILS_H
34  
35  #define LIM_ADAPTIVE_11R_OUI      "\x00\x40\x96\x2C"
36  #define LIM_ADAPTIVE_11R_OUI_SIZE 4
37  
38  /**
39   * lim_extract_ap_capability() - extract AP's HCF/WME/WSM capability
40   * @mac_ctx: Pointer to Global MAC structure
41   * @p_ie: Pointer to starting IE in Beacon/Probe Response
42   * @ie_len: Length of all IEs combined
43   * @qos_cap: Bits are set according to capabilities
44   * @uapsd: pointer to uapsd
45   * @local_constraint: Pointer to local power constraint.
46   * @session: A pointer to session entry.
47   * @is_pwr_constraint: Check for Power constraint bit in beacon
48   *
49   * This function is called to extract AP's HCF/WME/WSM capability
50   * from the IEs received from it in Beacon/Probe Response frames
51   *
52   * Return: None
53   */
54  void
55  lim_extract_ap_capability(struct mac_context *mac_ctx, uint8_t *p_ie,
56  			  uint16_t ie_len, uint8_t *qos_cap, uint8_t *uapsd,
57  			  int8_t *local_constraint, struct pe_session *session,
58  			  bool *is_pwr_constraint);
59  
60  #ifdef WLAN_FEATURE_11BE
61  /**
62   * lim_extract_eht_op() - Extract EHT operation IE into session
63   * @session: Pointer to pe_session
64   * @beacon_struct: Pointer to extracted beacon/probe response of the
65   * AP
66   *
67   * Return: None
68   */
69  void lim_extract_eht_op(struct pe_session *session,
70  			tSirProbeRespBeacon *beacon_struct);
71  #else
72  static inline void
lim_extract_eht_op(struct pe_session * session,tSirProbeRespBeacon * beacon_struct)73  lim_extract_eht_op(struct pe_session *session,
74  		   tSirProbeRespBeacon *beacon_struct)
75  {}
76  #endif
77  
78  ePhyChanBondState lim_get_htcb_state(ePhyChanBondState aniCBMode);
79  
80  /**
81   * lim_objmgr_update_vdev_nss() - update nss in vdev object
82   * @psoc: Pointer to Global MAC structure
83   * @vdev_id: vdev id
84   * @nss: nss
85   *
86   * Return: None
87   */
88  void lim_objmgr_update_vdev_nss(struct wlan_objmgr_psoc *psoc,
89  				uint8_t vdev_id, uint8_t nss);
90  
91  /**
92   * lim_update_he_mcs_12_13_map() - update he_mcs_12_13_map in vdev object
93   * @psoc: Pointer to Global MAC structure
94   * @vdev_id: vdev id
95   * @he_mcs_12_13_map: he mcs 12/13 map
96   *
97   * Return: None
98   */
99  void lim_update_he_mcs_12_13_map(struct wlan_objmgr_psoc *psoc,
100  				 uint8_t vdev_id, uint16_t he_mcs_12_13_map);
101  
102  #ifdef WLAN_FEATURE_11BE_MLO
103  void lim_objmgr_update_emlsr_caps(struct wlan_objmgr_psoc *psoc,
104  				  uint8_t vdev_id, tpSirAssocRsp assoc_rsp);
105  #else
106  static inline
lim_objmgr_update_emlsr_caps(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,tpSirAssocRsp assoc_rsp)107  void lim_objmgr_update_emlsr_caps(struct wlan_objmgr_psoc *psoc,
108  				  uint8_t vdev_id, tpSirAssocRsp assoc_rsp)
109  {
110  }
111  #endif /* WLAN_FEATURE_11BE_MLO */
112  #endif /* __LIM_PROP_EXTS_UTILS_H */
113