1 /* 2 * Copyright (c) 2019-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 /** 21 * DOC: wlan_vdev_mgr_ucfg_api.h 22 * 23 * This header file provides definitions to data structures required 24 * for mlme ucfg and declarations for ucfg public APIs 25 */ 26 27 #ifndef __WLAN_VDEV_MGR_UCFG_API_H__ 28 #define __WLAN_VDEV_MGR_UCFG_API_H__ 29 30 #include <wlan_objmgr_vdev_obj.h> 31 #include <wlan_vdev_mgr_tgt_if_tx_defs.h> 32 #include <qdf_nbuf.h> 33 #include <include/wlan_vdev_mlme.h> 34 35 enum wlan_mlme_cfg_id { 36 WLAN_MLME_CFG_DTIM_PERIOD, 37 WLAN_MLME_CFG_SLOT_TIME, 38 WLAN_MLME_CFG_PROTECTION_MODE, 39 WLAN_MLME_CFG_BEACON_INTERVAL, 40 WLAN_MLME_CFG_LDPC, 41 WLAN_MLME_CFG_NSS, 42 WLAN_MLME_CFG_TSF_ADJUST, 43 WLAN_MLME_CFG_ASSOC_ID, 44 WLAN_MLME_CFG_VHT_CAPS, 45 WLAN_MLME_CFG_SUBFER, 46 WLAN_MLME_CFG_MUBFER, 47 WLAN_MLME_CFG_SUBFEE, 48 WLAN_MLME_CFG_MUBFEE, 49 WLAN_MLME_CFG_IMLICIT_BF, 50 WLAN_MLME_CFG_SOUNDING_DIM, 51 WLAN_MLME_CFG_BFEE_STS_CAP, 52 WLAN_MLME_CFG_TXBF_CAPS, 53 WLAN_MLME_CFG_HT_CAPS, 54 WLAN_MLME_CFG_HE_OPS, 55 WLAN_MLME_CFG_RTS_THRESHOLD, 56 WLAN_MLME_CFG_FRAG_THRESHOLD, 57 WLAN_MLME_CFG_PROBE_DELAY, 58 WLAN_MLME_CFG_REPEAT_PROBE_TIME, 59 WLAN_MLME_CFG_DROP_UNENCRY, 60 WLAN_MLME_CFG_TX_PWR_LIMIT, 61 WLAN_MLME_CFG_TX_POWER, 62 WLAN_MLME_CFG_AMPDU, 63 WLAN_MLME_CFG_AMPDU_SIZE, 64 WLAN_MLME_CFG_AMSDU, 65 WLAN_MLME_CFG_AMSDU_SIZE, 66 WLAN_MLME_CFG_SSID, 67 WLAN_MLME_CFG_SSID_LEN, 68 WLAN_MLME_CFG_OP_MODE, 69 WLAN_MLME_CFG_BMISS_FIRST_BCNT, 70 WLAN_MLME_CFG_BMISS_FINAL_BCNT, 71 WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME, 72 WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME, 73 WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME, 74 WLAN_MLME_CFG_RATE_FLAGS, 75 WLAN_MLME_CFG_PER_BAND_TX_MGMT_RATE, 76 WLAN_MLME_CFG_MAX_RATE, 77 WLAN_MLME_CFG_TX_MGMT_RATE, 78 WLAN_MLME_CFG_TX_MGMT_RATE_CODE, 79 WLAN_MLME_CFG_TX_RTSCTS_RATE, 80 WLAN_MLME_CFG_TX_CHAINMASK, 81 WLAN_MLME_CFG_RX_CHAINMASK, 82 WLAN_MLME_CFG_PKT_POWERSAVE, 83 WLAN_MLME_CFG_MAX_LI_OF_MODDTIM, 84 WLAN_MLME_CFG_DYNDTIM_CNT, 85 WLAN_MLME_CFG_LISTEN_INTERVAL, 86 WLAN_MLME_CFG_MODDTIM_CNT, 87 WLAN_MLME_CFG_BEACON_BUFFER, 88 WLAN_MLME_CFG_BEACON_OFFSETS, 89 WLAN_MLME_CFG_PROFILE_IDX, 90 WLAN_MLME_CFG_PROFILE_NUM, 91 WLAN_MLME_CFG_MBSSID_FLAGS, 92 WLAN_MLME_CFG_VDEVID_TRANS, 93 WLAN_MLME_CFG_TRANS_BSSID, 94 WLAN_MLME_CFG_TYPE, 95 WLAN_MLME_CFG_SUBTYPE, 96 WLAN_MLME_CFG_UAPSD, 97 WLAN_MLME_CFG_TX_ENCAP_TYPE, 98 WLAN_MLME_CFG_RX_DECAP_TYPE, 99 WLAN_MLME_CFG_RATEMASK_TYPE, 100 WLAN_MLME_CFG_RATEMASK_LOWER32, 101 WLAN_MLME_CFG_RATEMASK_HIGHER32, 102 WLAN_MLME_CFG_RATEMASK_LOWER32_2, 103 WLAN_MLME_CFG_BCN_TX_RATE, 104 WLAN_MLME_CFG_BCN_TX_RATE_CODE, 105 WLAN_MLME_CFG_RATEMASK_CAPS, 106 WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY, 107 WLAN_MLME_CFG_MAX_GROUP_KEYS, 108 WLAN_MLME_CFG_TX_STREAMS, 109 WLAN_MLME_CFG_RX_STREAMS, 110 WLAN_MLME_CFG_ENABLE_DISABLE_RTT_RESPONDER_ROLE, 111 WLAN_MLME_CFG_ENABLE_DISABLE_RTT_INITIATOR_ROLE, 112 #ifdef WLAN_FEATURE_11BE 113 WLAN_MLME_CFG_EHT_OPS, 114 #endif 115 WLAN_MLME_CFG_MAX 116 }; 117 118 /** 119 * struct ratemask_cfg - ratemask config 120 * @index: index of ratemask parameter array 121 * @value: configuration value 122 */ 123 struct ratemask_cfg { 124 uint8_t index; 125 uint32_t value; 126 }; 127 128 /** 129 * struct wlan_vdev_mgr_cfg - vdev mgr configuration 130 * @value: configuration value 131 * @tsf: tsf adjust value 132 * @trans_bssid: transmission bssid address 133 * @ssid_cfg: ssid configuration 134 * @ratemask: ratemask configuration 135 */ 136 struct wlan_vdev_mgr_cfg { 137 union { 138 uint32_t value; 139 uint64_t tsf; 140 uint8_t trans_bssid[QDF_MAC_ADDR_SIZE]; 141 struct wlan_ssid ssid_cfg; 142 struct ratemask_cfg ratemask; 143 }; 144 }; 145 146 /** 147 * ucfg_wlan_vdev_mgr_set_param() - ucfg MLME API to 148 * set value into mlme vdev mgr component 149 * @vdev: pointer to vdev object 150 * @param_id: param of type wlan_mlme_cfg_id 151 * @mlme_cfg: value to set into mlme vdev mgr 152 * 153 * Return: QDF_STATUS 154 */ 155 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(struct wlan_objmgr_vdev *vdev, 156 enum wlan_mlme_cfg_id param_id, 157 struct wlan_vdev_mgr_cfg mlme_cfg); 158 159 /** 160 * ucfg_wlan_vdev_mgr_get_param() - ucfg MLME API to 161 * get value from mlme vdev mgr component 162 * @vdev: pointer to vdev object 163 * @param_id: param of type wlan_mlme_cfg_id 164 * @param_value: pointer to store the value of mlme vdev mgr 165 * 166 * Return: void 167 */ 168 void ucfg_wlan_vdev_mgr_get_param(struct wlan_objmgr_vdev *vdev, 169 enum wlan_mlme_cfg_id param_id, 170 uint32_t *param_value); 171 172 /** 173 * ucfg_wlan_vdev_mgr_get_param_ssid() - ucfg MLME API to 174 * get ssid from mlme vdev mgr component 175 * @vdev: pointer to vdev object 176 * @ssid: pointer to store the ssid 177 * @ssid_len: pointer to store the ssid length value 178 * 179 * Return: void 180 */ 181 void ucfg_wlan_vdev_mgr_get_param_ssid(struct wlan_objmgr_vdev *vdev, 182 uint8_t *ssid, 183 uint8_t *ssid_len); 184 185 /** 186 * ucfg_wlan_vdev_mgr_get_param_bssid() - ucfg MLME API to 187 * get bssid from mlme vdev mgr component 188 * @vdev: pointer to vdev object 189 * @bssid: pointer to store the bssid 190 * 191 */ 192 void ucfg_wlan_vdev_mgr_get_param_bssid( 193 struct wlan_objmgr_vdev *vdev, 194 uint8_t *bssid); 195 196 /** 197 * ucfg_wlan_vdev_mgr_get_beacon_buffer() - ucfg MLME API to 198 * get beacon buffer from mlme vdev mgr component 199 * @vdev: pointer to vdev object 200 * @buf: pointer to store the beacon buffer 201 * 202 * Return: void 203 */ 204 void ucfg_wlan_vdev_mgr_get_beacon_buffer(struct wlan_objmgr_vdev *vdev, 205 qdf_nbuf_t buf); 206 207 /** 208 * ucfg_wlan_vdev_mgr_get_trans_bssid() - ucfg MLME API to 209 * get transmission bssid from mlme vdev mgr component 210 * @vdev: pointer to vdev object 211 * @addr: pointer to store the transmission bssid 212 * 213 * Return: void 214 */ 215 void ucfg_wlan_vdev_mgr_get_trans_bssid(struct wlan_objmgr_vdev *vdev, 216 uint8_t *addr); 217 218 /** 219 * ucfg_wlan_vdev_mgr_get_tsf_adjust() - ucfg MLME API to 220 * get tsf_adjust from mlme vdev mgr component 221 * @vdev: pointer to vdev object 222 * @tsf_adjust: pointer to store the tsf adjust value 223 * 224 * Return: void 225 */ 226 void ucfg_wlan_vdev_mgr_get_tsf_adjust(struct wlan_objmgr_vdev *vdev, 227 uint64_t *tsf_adjust); 228 229 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 230 /** 231 * ucfg_vdev_mgr_cdp_vdev_attach() - ucfg MLME API to attach CDP vdev 232 * @vdev: pointer to vdev object 233 * 234 * Return: QDF_STATUS - Success or Failure 235 */ 236 QDF_STATUS ucfg_vdev_mgr_cdp_vdev_attach(struct wlan_objmgr_vdev *vdev); 237 238 /** 239 * ucfg_vdev_mgr_cdp_vdev_detach() - ucfg MLME API to detach CDP vdev 240 * @vdev: pointer to vdev object 241 * 242 * Return: QDF_STATUS - Success or Failure 243 */ 244 QDF_STATUS ucfg_vdev_mgr_cdp_vdev_detach(struct wlan_objmgr_vdev *vdev); 245 #endif 246 247 /** 248 * ucfg_util_vdev_mgr_set_acs_mode_for_vdev() - ucfg API to set SAP start mode 249 * @vdev: pointer to vdev object 250 * @is_acs_mode: Carries true if SAP is started in ACS 251 * 252 * Return: None 253 */ 254 void 255 ucfg_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev, 256 bool is_acs_mode); 257 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */ 258