1 /* 2 * Copyright (c) 2019 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_TXBF_CAPS, 51 WLAN_MLME_CFG_HT_CAPS, 52 WLAN_MLME_CFG_HE_OPS, 53 WLAN_MLME_CFG_RTS_THRESHOLD, 54 WLAN_MLME_CFG_FRAG_THRESHOLD, 55 WLAN_MLME_CFG_PROBE_DELAY, 56 WLAN_MLME_CFG_REPEAT_PROBE_TIME, 57 WLAN_MLME_CFG_DROP_UNENCRY, 58 WLAN_MLME_CFG_TX_PWR_LIMIT, 59 WLAN_MLME_CFG_TX_POWER, 60 WLAN_MLME_CFG_AMPDU, 61 WLAN_MLME_CFG_AMSDU, 62 WLAN_MLME_CFG_SSID, 63 WLAN_MLME_CFG_SSID_LEN, 64 WLAN_MLME_CFG_OP_MODE, 65 WLAN_MLME_CFG_BMISS_FIRST_BCNT, 66 WLAN_MLME_CFG_BMISS_FINAL_BCNT, 67 WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME, 68 WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME, 69 WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME, 70 WLAN_MLME_CFG_RATE_FLAGS, 71 WLAN_MLME_CFG_PER_BAND_TX_MGMT_RATE, 72 WLAN_MLME_CFG_MAX_RATE, 73 WLAN_MLME_CFG_TX_MGMT_RATE, 74 WLAN_MLME_CFG_TX_CHAINMASK, 75 WLAN_MLME_CFG_RX_CHAINMASK, 76 WLAN_MLME_CFG_PKT_POWERSAVE, 77 WLAN_MLME_CFG_MAX_LI_OF_MODDTIM, 78 WLAN_MLME_CFG_DYNDTIM_CNT, 79 WLAN_MLME_CFG_LISTEN_INTERVAL, 80 WLAN_MLME_CFG_MODDTIM_CNT, 81 WLAN_MLME_CFG_BEACON_BUFFER, 82 WLAN_MLME_CFG_BEACON_OFFSETS, 83 WLAN_MLME_CFG_PROILE_IDX, 84 WLAN_MLME_CFG_PROFILE_NUM, 85 WLAN_MLME_CFG_MBSSID_FLAGS, 86 WLAN_MLME_CFG_VDEVID_TRANS, 87 WLAN_MLME_CFG_TRANS_BSSID, 88 WLAN_MLME_CFG_TYPE, 89 WLAN_MLME_CFG_SUBTYPE, 90 WLAN_MLME_CFG_UAPSD, 91 WLAN_MLME_CFG_TX_DECAP_TYPE, 92 WLAN_MLME_CFG_RX_DECAP_TYPE, 93 WLAN_MLME_CFG_RATEMASK_TYPE, 94 WLAN_MLME_CFG_RATEMASK_LOWER32, 95 WLAN_MLME_CFG_RATEMASK_HIGHER32, 96 WLAN_MLME_CFG_RATEMASK_LOWER32_2, 97 WLAN_MLME_CFG_BCN_TX_RATE, 98 WLAN_MLME_CFG_2G_VHT, 99 WLAN_MLME_CFG_11AX_STUB, 100 WLAN_MLME_CFG_MAX 101 }; 102 103 /** 104 * struct wlan_vdev_mgr_cfg - vdev mgr configuration 105 * @value: configuration value 106 * @tsf: tsf adjust value 107 * @trans_bssid: transmission bssid address 108 * @ssid_cfg: ssid configuration 109 */ 110 struct wlan_vdev_mgr_cfg { 111 union { 112 uint32_t value; 113 uint64_t tsf; 114 uint8_t trans_bssid[QDF_MAC_ADDR_SIZE]; 115 struct mlme_mac_ssid ssid_cfg; 116 }; 117 }; 118 119 /** 120 * ucfg_wlan_vdev_mgr_set_param() – ucfg MLME API to 121 * set value into mlme vdev mgr component 122 * @vdev: pointer to vdev object 123 * @param_id: param of type wlan_mlme_cfg_id 124 * @mlme_cfg: value to set into mlme vdev mgr 125 * 126 * Return: QDF_STATUS 127 */ 128 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(struct wlan_objmgr_vdev *vdev, 129 enum wlan_mlme_cfg_id param_id, 130 struct wlan_vdev_mgr_cfg mlme_cfg); 131 132 /** 133 * ucfg_wlan_vdev_mgr_get_param() – ucfg MLME API to 134 * get value from mlme vdev mgr component 135 * @vdev: pointer to vdev object 136 * @param_id: param of type wlan_mlme_cfg_id 137 * @param_value: pointer to store the value of mlme vdev mgr 138 * 139 * Return: void 140 */ 141 void ucfg_wlan_vdev_mgr_get_param(struct wlan_objmgr_vdev *vdev, 142 enum wlan_mlme_cfg_id param_id, 143 uint32_t *param_value); 144 145 /** 146 * ucfg_wlan_vdev_mgr_get_param_ssid() – ucfg MLME API to 147 * get ssid from mlme vdev mgr component 148 * @vdev: pointer to vdev object 149 * @ssid: pointer to store the ssid 150 * @ssid_len: pointer to store the ssid length value 151 * 152 * Return: void 153 */ 154 void ucfg_wlan_vdev_mgr_get_param_ssid(struct wlan_objmgr_vdev *vdev, 155 uint8_t *ssid, 156 uint8_t *ssid_len); 157 158 /** 159 * ucfg_wlan_vdev_mgr_get_param_bssid() – ucfg MLME API to 160 * get bssid from mlme vdev mgr component 161 * @vdev: pointer to vdev object 162 * @bssid: pointer to store the bssid 163 * 164 */ 165 void ucfg_wlan_vdev_mgr_get_param_bssid( 166 struct wlan_objmgr_vdev *vdev, 167 uint8_t *bssid); 168 169 /** 170 * ucfg_wlan_vdev_mgr_get_beacon_buffer() – ucfg MLME API to 171 * get beacon buffer from mlme vdev mgr component 172 * @vdev: pointer to vdev object 173 * @buf: pointer to store the beacon buffer 174 * 175 * Return: void 176 */ 177 void ucfg_wlan_vdev_mgr_get_beacon_buffer(struct wlan_objmgr_vdev *vdev, 178 qdf_nbuf_t buf); 179 180 /** 181 * ucfg_wlan_vdev_mgr_get_trans_bssid() – ucfg MLME API to 182 * get transmission bssid from mlme vdev mgr component 183 * @vdev: pointer to vdev object 184 * @addr: pointer to store the transmission bssid 185 * 186 * Return: void 187 */ 188 void ucfg_wlan_vdev_mgr_get_trans_bssid(struct wlan_objmgr_vdev *vdev, 189 uint8_t *addr); 190 191 /** 192 * ucfg_wlan_vdev_mgr_get_tsf_adjust() – ucfg MLME API to 193 * get tsf_adjust from mlme vdev mgr component 194 * @vdev: pointer to vdev object 195 * @tsf_adjust: pointer to store the tsf adjust value 196 * 197 * Return: void 198 */ 199 void ucfg_wlan_vdev_mgr_get_tsf_adjust(struct wlan_objmgr_vdev *vdev, 200 uint64_t *tsf_adjust); 201 202 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */ 203