1 /* 2 * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 /** 20 * DOC: wlan_vdev_mgr_ucfg_api.h 21 * 22 * This header file provides definitions to data structures required 23 * for mlme ucfg and declarations for ucfg public APIs 24 */ 25 26 #ifndef __WLAN_VDEV_MGR_UCFG_API_H__ 27 #define __WLAN_VDEV_MGR_UCFG_API_H__ 28 29 #include <wlan_objmgr_vdev_obj.h> 30 #include <wlan_vdev_mgr_tgt_if_tx_defs.h> 31 #include <qdf_nbuf.h> 32 #include <include/wlan_vdev_mlme.h> 33 34 enum wlan_mlme_cfg_id { 35 WLAN_MLME_CFG_DTIM_PERIOD, 36 WLAN_MLME_CFG_SLOT_TIME, 37 WLAN_MLME_CFG_PROTECTION_MODE, 38 WLAN_MLME_CFG_BEACON_INTERVAL, 39 WLAN_MLME_CFG_LDPC, 40 WLAN_MLME_CFG_NSS, 41 WLAN_MLME_CFG_TSF_ADJUST, 42 WLAN_MLME_CFG_ASSOC_ID, 43 WLAN_MLME_CFG_VHT_CAPS, 44 WLAN_MLME_CFG_SUBFER, 45 WLAN_MLME_CFG_MUBFER, 46 WLAN_MLME_CFG_SUBFEE, 47 WLAN_MLME_CFG_MUBFEE, 48 WLAN_MLME_CFG_IMLICIT_BF, 49 WLAN_MLME_CFG_SOUNDING_DIM, 50 WLAN_MLME_CFG_BFEE_STS_CAP, 51 WLAN_MLME_CFG_TXBF_CAPS, 52 WLAN_MLME_CFG_HT_CAPS, 53 WLAN_MLME_CFG_HE_OPS, 54 WLAN_MLME_CFG_RTS_THRESHOLD, 55 WLAN_MLME_CFG_FRAG_THRESHOLD, 56 WLAN_MLME_CFG_PROBE_DELAY, 57 WLAN_MLME_CFG_REPEAT_PROBE_TIME, 58 WLAN_MLME_CFG_DROP_UNENCRY, 59 WLAN_MLME_CFG_TX_PWR_LIMIT, 60 WLAN_MLME_CFG_TX_POWER, 61 WLAN_MLME_CFG_AMPDU, 62 WLAN_MLME_CFG_AMPDU_SIZE, 63 WLAN_MLME_CFG_AMSDU, 64 WLAN_MLME_CFG_AMSDU_SIZE, 65 WLAN_MLME_CFG_SSID, 66 WLAN_MLME_CFG_SSID_LEN, 67 WLAN_MLME_CFG_OP_MODE, 68 WLAN_MLME_CFG_BMISS_FIRST_BCNT, 69 WLAN_MLME_CFG_BMISS_FINAL_BCNT, 70 WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME, 71 WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME, 72 WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME, 73 WLAN_MLME_CFG_RATE_FLAGS, 74 WLAN_MLME_CFG_PER_BAND_TX_MGMT_RATE, 75 WLAN_MLME_CFG_MAX_RATE, 76 WLAN_MLME_CFG_TX_MGMT_RATE, 77 WLAN_MLME_CFG_TX_MGMT_RATE_CODE, 78 WLAN_MLME_CFG_TX_RTSCTS_RATE, 79 WLAN_MLME_CFG_TX_CHAINMASK, 80 WLAN_MLME_CFG_RX_CHAINMASK, 81 WLAN_MLME_CFG_PKT_POWERSAVE, 82 WLAN_MLME_CFG_MAX_LI_OF_MODDTIM, 83 WLAN_MLME_CFG_DYNDTIM_CNT, 84 WLAN_MLME_CFG_LISTEN_INTERVAL, 85 WLAN_MLME_CFG_MODDTIM_CNT, 86 WLAN_MLME_CFG_BEACON_BUFFER, 87 WLAN_MLME_CFG_BEACON_OFFSETS, 88 WLAN_MLME_CFG_PROFILE_IDX, 89 WLAN_MLME_CFG_PROFILE_NUM, 90 WLAN_MLME_CFG_MBSSID_FLAGS, 91 WLAN_MLME_CFG_VDEVID_TRANS, 92 WLAN_MLME_CFG_TRANS_BSSID, 93 WLAN_MLME_CFG_TYPE, 94 WLAN_MLME_CFG_SUBTYPE, 95 WLAN_MLME_CFG_UAPSD, 96 WLAN_MLME_CFG_TX_ENCAP_TYPE, 97 WLAN_MLME_CFG_RX_DECAP_TYPE, 98 WLAN_MLME_CFG_RATEMASK_TYPE, 99 WLAN_MLME_CFG_RATEMASK_LOWER32, 100 WLAN_MLME_CFG_RATEMASK_HIGHER32, 101 WLAN_MLME_CFG_RATEMASK_LOWER32_2, 102 WLAN_MLME_CFG_BCN_TX_RATE, 103 WLAN_MLME_CFG_BCN_TX_RATE_CODE, 104 WLAN_MLME_CFG_RATEMASK_CAPS, 105 WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY, 106 WLAN_MLME_CFG_MAX_GROUP_KEYS, 107 WLAN_MLME_CFG_MAX 108 }; 109 110 /** 111 * struct wlan_vdev_mgr_cfg - vdev mgr configuration 112 * @value: configuration value 113 * @tsf: tsf adjust value 114 * @trans_bssid: transmission bssid address 115 * @ssid_cfg: ssid configuration 116 */ 117 struct wlan_vdev_mgr_cfg { 118 union { 119 uint32_t value; 120 uint64_t tsf; 121 uint8_t trans_bssid[QDF_MAC_ADDR_SIZE]; 122 struct wlan_ssid ssid_cfg; 123 }; 124 }; 125 126 /** 127 * ucfg_wlan_vdev_mgr_set_param() – ucfg MLME API to 128 * set value into mlme vdev mgr component 129 * @vdev: pointer to vdev object 130 * @param_id: param of type wlan_mlme_cfg_id 131 * @mlme_cfg: value to set into mlme vdev mgr 132 * 133 * Return: QDF_STATUS 134 */ 135 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(struct wlan_objmgr_vdev *vdev, 136 enum wlan_mlme_cfg_id param_id, 137 struct wlan_vdev_mgr_cfg mlme_cfg); 138 139 /** 140 * ucfg_wlan_vdev_mgr_get_param() – ucfg MLME API to 141 * get value from mlme vdev mgr component 142 * @vdev: pointer to vdev object 143 * @param_id: param of type wlan_mlme_cfg_id 144 * @param_value: pointer to store the value of mlme vdev mgr 145 * 146 * Return: void 147 */ 148 void ucfg_wlan_vdev_mgr_get_param(struct wlan_objmgr_vdev *vdev, 149 enum wlan_mlme_cfg_id param_id, 150 uint32_t *param_value); 151 152 /** 153 * ucfg_wlan_vdev_mgr_get_param_ssid() – ucfg MLME API to 154 * get ssid from mlme vdev mgr component 155 * @vdev: pointer to vdev object 156 * @ssid: pointer to store the ssid 157 * @ssid_len: pointer to store the ssid length value 158 * 159 * Return: void 160 */ 161 void ucfg_wlan_vdev_mgr_get_param_ssid(struct wlan_objmgr_vdev *vdev, 162 uint8_t *ssid, 163 uint8_t *ssid_len); 164 165 /** 166 * ucfg_wlan_vdev_mgr_get_param_bssid() – ucfg MLME API to 167 * get bssid from mlme vdev mgr component 168 * @vdev: pointer to vdev object 169 * @bssid: pointer to store the bssid 170 * 171 */ 172 void ucfg_wlan_vdev_mgr_get_param_bssid( 173 struct wlan_objmgr_vdev *vdev, 174 uint8_t *bssid); 175 176 /** 177 * ucfg_wlan_vdev_mgr_get_beacon_buffer() – ucfg MLME API to 178 * get beacon buffer from mlme vdev mgr component 179 * @vdev: pointer to vdev object 180 * @buf: pointer to store the beacon buffer 181 * 182 * Return: void 183 */ 184 void ucfg_wlan_vdev_mgr_get_beacon_buffer(struct wlan_objmgr_vdev *vdev, 185 qdf_nbuf_t buf); 186 187 /** 188 * ucfg_wlan_vdev_mgr_get_trans_bssid() – ucfg MLME API to 189 * get transmission bssid from mlme vdev mgr component 190 * @vdev: pointer to vdev object 191 * @addr: pointer to store the transmission bssid 192 * 193 * Return: void 194 */ 195 void ucfg_wlan_vdev_mgr_get_trans_bssid(struct wlan_objmgr_vdev *vdev, 196 uint8_t *addr); 197 198 /** 199 * ucfg_wlan_vdev_mgr_get_tsf_adjust() – ucfg MLME API to 200 * get tsf_adjust from mlme vdev mgr component 201 * @vdev: pointer to vdev object 202 * @tsf_adjust: pointer to store the tsf adjust value 203 * 204 * Return: void 205 */ 206 void ucfg_wlan_vdev_mgr_get_tsf_adjust(struct wlan_objmgr_vdev *vdev, 207 uint64_t *tsf_adjust); 208 209 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */ 210