1 /* 2 * Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021 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: vdev_mgr_iface_api.h 22 * 23 * API declarations required for following 24 * - get/set common mlme data structure fields 25 * - send WMI command using Tx Ops 26 */ 27 28 #ifndef __WLAN_VDEV_MGR_TX_OPS_API_H__ 29 #define __WLAN_VDEV_MGR_TX_OPS_API_H__ 30 31 #include <wlan_objmgr_vdev_obj.h> 32 #include <wlan_vdev_mgr_tgt_if_tx_defs.h> 33 #include <include/wlan_vdev_mlme.h> 34 35 /** 36 * tgt_vdev_mgr_create_send() – API to send create command 37 * @mlme_obj: pointer to vdev_mlme_obj 38 * @param: pointer to vdev_create_params 39 * 40 * Return: QDF_STATUS - Success or Failure 41 */ 42 QDF_STATUS tgt_vdev_mgr_create_send( 43 struct vdev_mlme_obj *mlme_obj, 44 struct vdev_create_params *param); 45 46 /** 47 * tgt_vdev_mgr_create_complete() – API to send wmi cfg corresponding 48 * to create command 49 * @mlme_obj: pointer to vdev_mlme_obj 50 * 51 * Return: QDF_STATUS - Success or Failure 52 */ 53 QDF_STATUS tgt_vdev_mgr_create_complete(struct vdev_mlme_obj *mlme_obj); 54 55 /** 56 * tgt_vdev_mgr_start_send() – API to send start command 57 * @mlme_obj: pointer to vdev_mlme_obj 58 * @param: pointer to vdev_start_params 59 * 60 * Return: QDF_STATUS - Success or Failure 61 */ 62 QDF_STATUS tgt_vdev_mgr_start_send( 63 struct vdev_mlme_obj *mlme_obj, 64 struct vdev_start_params *param); 65 66 /** 67 * tgt_vdev_mgr_delete_send() – API to send delete 68 * @mlme_obj: pointer to vdev_mlme_obj 69 * @param: pointer to vdev_delete_params 70 * 71 * Return: QDF_STATUS - Success or Failure 72 */ 73 QDF_STATUS tgt_vdev_mgr_delete_send( 74 struct vdev_mlme_obj *mlme_obj, 75 struct vdev_delete_params *param); 76 77 /** 78 * tgt_vdev_mgr_peer_flush_tids_send() – API to send peer flush tids in FW 79 * @mlme_obj: pointer to vdev_mlme_obj 80 * @param: pointer to peer_flush_params 81 * 82 * Return: QDF_STATUS - Success or Failure 83 */ 84 QDF_STATUS tgt_vdev_mgr_peer_flush_tids_send( 85 struct vdev_mlme_obj *mlme_obj, 86 struct peer_flush_params *param); 87 88 /** 89 * tgt_vdev_mgr_stop_send() – API to send stop command 90 * @mlme_obj: pointer to vdev_mlme_obj 91 * @param: pointer to vdev_stop_params 92 * 93 * Return: QDF_STATUS - Success or Failure 94 */ 95 QDF_STATUS tgt_vdev_mgr_stop_send( 96 struct vdev_mlme_obj *mlme_obj, 97 struct vdev_stop_params *param); 98 99 /** 100 * tgt_vdev_mgr_beacon_stop() – API to handle beacon buffer 101 * @mlme_obj: pointer to vdev_mlme_obj 102 * 103 * Return: QDF_STATUS - Success or Failure 104 */ 105 QDF_STATUS tgt_vdev_mgr_beacon_stop(struct vdev_mlme_obj *mlme_obj); 106 107 /** 108 * tgt_vdev_mgr_beacon_free() – API to free beacon buffer 109 * @mlme_obj: pointer to vdev_mlme_obj 110 * 111 * Return: QDF_STATUS - Success or Failure 112 */ 113 QDF_STATUS tgt_vdev_mgr_beacon_free(struct vdev_mlme_obj *mlme_obj); 114 115 /** 116 * tgt_vdev_mgr_up_send() – API to send up 117 * @mlme_obj: pointer to vdev_mlme_obj 118 * @param: pointer to vdev_up_params 119 * 120 * Return: QDF_STATUS - Success or Failure 121 */ 122 QDF_STATUS tgt_vdev_mgr_up_send( 123 struct vdev_mlme_obj *mlme_obj, 124 struct vdev_up_params *param); 125 126 /** 127 * tgt_vdev_mgr_down_send() – API to send down 128 * @mlme_obj: pointer to vdev_mlme_obj 129 * @param: pointer to vdev_down_params 130 * 131 * Return: QDF_STATUS - Success or Failure 132 */ 133 QDF_STATUS tgt_vdev_mgr_down_send( 134 struct vdev_mlme_obj *mlme_obj, 135 struct vdev_down_params *param); 136 137 /** 138 * tgt_vdev_mgr_set_neighbour_rx_cmd_send() – API to send neighbour rx 139 * @mlme_obj: pointer to vdev_mlme_obj 140 * @param: pointer to set_neighbour_rx_params 141 * 142 * Return: QDF_STATUS - Success or Failure 143 */ 144 QDF_STATUS tgt_vdev_mgr_set_neighbour_rx_cmd_send( 145 struct vdev_mlme_obj *mlme_obj, 146 struct set_neighbour_rx_params *param); 147 148 /** 149 * tgt_vdev_mgr_nac_rssi_send() – API to send NAC RSSI 150 * @mlme_obj: pointer to vdev_mlme_obj 151 * @param: pointer to vdev_scan_nac_rssi_params 152 * 153 * Return: QDF_STATUS - Success or Failure 154 */ 155 QDF_STATUS tgt_vdev_mgr_nac_rssi_send( 156 struct vdev_mlme_obj *mlme_obj, 157 struct vdev_scan_nac_rssi_params *param); 158 159 /** 160 * tgt_vdev_mgr_sifs_trigger_send() – API to send SIFS trigger 161 * @mlme_obj: pointer to vdev_mlme_obj 162 * @param: pointer to sifs_trigger_param 163 * 164 * Return: QDF_STATUS - Success or Failure 165 */ 166 QDF_STATUS tgt_vdev_mgr_sifs_trigger_send( 167 struct vdev_mlme_obj *mlme_obj, 168 struct sifs_trigger_param *param); 169 170 /** 171 * tgt_vdev_mgr_set_custom_aggr_size_send() – API to send custom aggr size 172 * @mlme_obj: pointer to vdev_mlme_obj 173 * @param: pointer to set_custom_aggr_size_params 174 * 175 * Return: QDF_STATUS - Success or Failure 176 */ 177 QDF_STATUS tgt_vdev_mgr_set_custom_aggr_size_send( 178 struct vdev_mlme_obj *mlme_obj, 179 struct set_custom_aggr_size_params *param); 180 181 /** 182 * tgt_vdev_mgr_config_ratemask_cmd_send() – API to configure ratemask 183 * @mlme_obj: pointer to vdev_mlme_obj 184 * @param: pointer to config_ratemask_params 185 * 186 * Return: QDF_STATUS - Success or Failure 187 */ 188 QDF_STATUS tgt_vdev_mgr_config_ratemask_cmd_send( 189 struct vdev_mlme_obj *mlme_obj, 190 struct config_ratemask_params *param); 191 192 /** 193 * tgt_vdev_mgr_sta_ps_param_send() – API to send sta power save configuration 194 * @mlme_obj: pointer to vdev_mlme_obj 195 * @param: pointer to sta_ps_params 196 * 197 * Return: QDF_STATUS - Success or Failure 198 */ 199 QDF_STATUS tgt_vdev_mgr_sta_ps_param_send( 200 struct vdev_mlme_obj *mlme_obj, 201 struct sta_ps_params *param); 202 203 /** 204 * tgt_vdev_mgr_beacon_cmd_send() – API to send beacon 205 * @mlme_obj: pointer to vdev_mlme_obj 206 * @param: pointer to beacon_params 207 * 208 * Return: QDF_STATUS - Success or Failure 209 */ 210 QDF_STATUS tgt_vdev_mgr_beacon_cmd_send( 211 struct vdev_mlme_obj *mlme_obj, 212 struct beacon_params *param); 213 214 /** 215 * tgt_vdev_mgr_beacon_tmpl_send() – API to send beacon template 216 * @mlme_obj: pointer to vdev_mlme_obj 217 * @param: pointer to beacon_tmpl_params 218 * 219 * Return: QDF_STATUS - Success or Failure 220 */ 221 QDF_STATUS tgt_vdev_mgr_beacon_tmpl_send( 222 struct vdev_mlme_obj *mlme_obj, 223 struct beacon_tmpl_params *param); 224 225 #if defined(WLAN_SUPPORT_FILS) || defined(CONFIG_BAND_6GHZ) 226 /** 227 * tgt_vdev_mgr_fils_enable_send()- API to send fils enable command 228 * @mlme_obj: pointer to vdev_mlme_obj 229 * @param: pointer to config_fils_params struct 230 * 231 * Return: QDF_STATUS - Success or Failure 232 */ 233 QDF_STATUS tgt_vdev_mgr_fils_enable_send( 234 struct vdev_mlme_obj *mlme_obj, 235 struct config_fils_params *param); 236 #else 237 /** 238 * tgt_vdev_mgr_fils_enable_send()- API to send fils enable command 239 * @mlme_obj: pointer to vdev_mlme_obj 240 * @param: pointer to config_fils_params struct 241 * 242 * Return: QDF_STATUS - Success or Failure 243 */ 244 static inline QDF_STATUS tgt_vdev_mgr_fils_enable_send( 245 struct vdev_mlme_obj *mlme_obj, 246 struct config_fils_params *param) 247 { 248 return QDF_STATUS_SUCCESS; 249 } 250 #endif 251 252 /** 253 * tgt_vdev_mgr_multiple_vdev_restart_send() – API to send multiple vdev 254 * restart 255 * @pdev: pointer to pdev 256 * @param: pointer to multiple_vdev_restart_params 257 * 258 * Return: QDF_STATUS - Success or Failure 259 */ 260 QDF_STATUS tgt_vdev_mgr_multiple_vdev_restart_send( 261 struct wlan_objmgr_pdev *pdev, 262 struct multiple_vdev_restart_params *param); 263 264 /** 265 * tgt_vdev_mgr_multiple_vdev_set_param() – API to send multiple vdev 266 * param 267 * @pdev: pointer to pdev 268 * @param: pointer to multiple_vdev_set_param 269 * 270 * Return: QDF_STATUS - Success or Failure 271 */ 272 QDF_STATUS tgt_vdev_mgr_multiple_vdev_set_param( 273 struct wlan_objmgr_pdev *pdev, 274 struct multiple_vdev_set_param *param); 275 276 /** 277 * tgt_vdev_mgr_set_tx_rx_decap_type() – API to send tx rx decap type 278 * @mlme_obj: pointer to vdev mlme obj 279 * @param_id: param id 280 * value: value to set for param id 281 * 282 * Return: QDF_STATUS - Success or Failure 283 */ 284 QDF_STATUS tgt_vdev_mgr_set_tx_rx_decap_type(struct vdev_mlme_obj *mlme_obj, 285 enum wlan_mlme_cfg_id param_id, 286 uint32_t value); 287 288 /** 289 * tgt_vdev_mgr_set_param_send() – API to send parameter cfg 290 * @mlme_obj: pointer to vdev_mlme_obj 291 * @param: pointer to vdev_set_params 292 * 293 * Return: QDF_STATUS - Success or Failure 294 */ 295 QDF_STATUS tgt_vdev_mgr_set_param_send( 296 struct vdev_mlme_obj *mlme_obj, 297 struct vdev_set_params *param); 298 299 /** 300 * tgt_vdev_mgr_bcn_miss_offload_send() – API to send beacon miss offload 301 * @mlme_obj: pointer to vdev_mlme_obj 302 * 303 * Return: QDF_STATUS - Success or Failure 304 */ 305 QDF_STATUS tgt_vdev_mgr_bcn_miss_offload_send(struct vdev_mlme_obj *mlme_obj); 306 307 /** 308 * tgt_vdev_mgr_peer_delete_all_send() – API to send peer delete all request 309 * @mlme_obj: pointer to vdev_mlme_obj 310 * @param: pointer to peer_delete_all_params 311 * 312 * Return: QDF_STATUS - Success or Failure 313 */ 314 QDF_STATUS tgt_vdev_mgr_peer_delete_all_send( 315 struct vdev_mlme_obj *mlme_obj, 316 struct peer_delete_all_params *param); 317 318 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 319 /** 320 * tgt_vdev_mgr_send_set_mac_addr() - Send set MAC address command to FW 321 * @mac_addr: VDEV MAC address 322 * @mld_addr: VDEV MLD address 323 * @vdev: Pointer to object manager VDEV 324 * 325 * API to send set MAC address request to FW 326 * 327 * Return: QDF_STATUS 328 */ 329 QDF_STATUS tgt_vdev_mgr_send_set_mac_addr(struct qdf_mac_addr mac_addr, 330 struct qdf_mac_addr mld_addr, 331 struct wlan_objmgr_vdev *vdev); 332 333 /** 334 * tgt_vdev_mgr_cdp_vdev_attach() - API to send CDP VDEV attach 335 * @mlme_obj: pointer to vdev_mlme_obj 336 * 337 * Return: QDF_STATUS - Success or Failure 338 */ 339 QDF_STATUS tgt_vdev_mgr_cdp_vdev_attach(struct vdev_mlme_obj *mlme_obj); 340 341 /** 342 * tgt_vdev_mgr_cdp_vdev_detach() - API to send CDP VDEV detach 343 * @mlme_obj: pointer to vdev_mlme_obj 344 * 345 * Return: QDF_STATUS - Success or Failure 346 */ 347 QDF_STATUS tgt_vdev_mgr_cdp_vdev_detach(struct vdev_mlme_obj *mlme_obj); 348 #endif 349 #endif /* __WLAN_VDEV_MGR_TX_OPS_API_H__ */ 350