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