1 /* 2 * Copyright (c) 2019-2020 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_ops.h 22 * 23 * This header file provides API declarations for filling data structures 24 * and sending vdev mgmt commands to target_if/mlme/vdev_mgr 25 */ 26 27 #ifndef __VDEV_MGR_OPS_H__ 28 #define __VDEV_MGR_OPS_H__ 29 30 #include <wlan_objmgr_vdev_obj.h> 31 #include <wlan_vdev_mgr_tgt_if_tx_defs.h> 32 #include <wlan_mlme_dbg.h> 33 #include "include/wlan_vdev_mlme.h" 34 35 /** 36 * vdev_mgr_create_send() – MLME API to create command to 37 * target_if 38 * @mlme_obj: pointer to vdev_mlme_obj 39 * 40 * Return: QDF_STATUS - Success or Failure 41 */ 42 QDF_STATUS vdev_mgr_create_send(struct vdev_mlme_obj *mlme_obj); 43 44 /** 45 * vdev_mgr_start_send() – MLME API to send start request to 46 * target_if 47 * @mlme_obj: pointer to vdev_mlme_obj 48 * @restart: flag to indicate type of request START/RESTART 49 * 50 * Return: QDF_STATUS - Success or Failure 51 */ 52 QDF_STATUS vdev_mgr_start_send(struct vdev_mlme_obj *mlme_obj, bool restart); 53 54 /** 55 * vdev_mgr_delete_send() – MLME API to send delete request to 56 * target_if 57 * @mlme_obj: pointer to vdev_mlme_obj 58 * 59 * Return: QDF_STATUS - Success or Failure 60 */ 61 QDF_STATUS vdev_mgr_delete_send(struct vdev_mlme_obj *mlme_obj); 62 63 /** 64 * vdev_mgr_peer_flush_tids_send () – MLME API to setup peer flush tids 65 * @mlme_obj: pointer to vdev_mlme_obj 66 * @mac: pointer to peer mac address 67 * @peer_tid_bitmap: peer tid bitmap 68 * 69 * Return: QDF_STATUS - Success or Failure 70 */ 71 QDF_STATUS vdev_mgr_peer_flush_tids_send(struct vdev_mlme_obj *mlme_obj, 72 uint8_t *mac, 73 uint32_t peer_tid_bitmap); 74 /** 75 * vdev_mgr_stop_send () – MLME API to send STOP request 76 * @mlme_obj: pointer to vdev_mlme_obj 77 * 78 * Return: QDF_STATUS - Success or Failure 79 */ 80 QDF_STATUS vdev_mgr_stop_send(struct vdev_mlme_obj *mlme_obj); 81 82 /** 83 * vdev_mgr_up_send () – MLME API to send UP command 84 * @mlme_obj: pointer to vdev_mlme_obj 85 * 86 * Return: QDF_STATUS - Success or Failure 87 */ 88 QDF_STATUS vdev_mgr_up_send(struct vdev_mlme_obj *mlme_obj); 89 90 /** 91 * vdev_mgr_down_send () – MLME API to send down command 92 * @mlme_obj: pointer to vdev_mlme_obj 93 * 94 * Return: QDF_STATUS - Success or Failure 95 */ 96 QDF_STATUS vdev_mgr_down_send(struct vdev_mlme_obj *mlme_obj); 97 98 /** 99 * vdev_mgr_set_param_send() – MLME API to send vdev param 100 * @mlme_obj: pointer to vdev_mlme_obj 101 * @param_id: parameter id 102 * @param_value: value corresponding to parameter id 103 * 104 * Return: QDF_STATUS - Success or Failure 105 */ 106 QDF_STATUS vdev_mgr_set_param_send(struct vdev_mlme_obj *mlme_obj, 107 uint32_t param_id, 108 uint32_t param_value); 109 110 /** 111 * vdev_mgr_set_neighbour_rx_cmd_send() – MLME API to send neighbour Rx 112 * cmd 113 * @mlme_obj: pointer to vdev_mlme_obj 114 * @param: pointer to set neighbour rx params 115 * 116 * Return: QDF_STATUS - Success or Failure 117 */ 118 QDF_STATUS vdev_mgr_set_neighbour_rx_cmd_send( 119 struct vdev_mlme_obj *mlme_obj, 120 struct set_neighbour_rx_params *param); 121 122 /** 123 * vdev_mgr_set_nac_rssi_send() – MLME API to send nac rssi 124 * @mlme_obj: pointer to vdev_mlme_obj 125 * @param: pointer to vdev_scan_nac_rssi_params 126 * 127 * Return: QDF_STATUS - Success or Failure 128 */ 129 QDF_STATUS vdev_mgr_nac_rssi_send( 130 struct vdev_mlme_obj *mlme_obj, 131 struct vdev_scan_nac_rssi_params *param); 132 133 /** 134 * vdev_mgr_sifs_trigger_send() – MLME API to send SIFS trigger 135 * @mlme_obj: pointer to vdev_mlme_obj 136 * @param_value: parameter value 137 * 138 * Return: QDF_STATUS - Success or Failure 139 */ 140 QDF_STATUS vdev_mgr_sifs_trigger_send( 141 struct vdev_mlme_obj *mlme_obj, 142 uint32_t param_value); 143 144 /** 145 * vdev_mgr_set_custom_aggr_size_cmd_send() – MLME API to send custom aggr 146 * size 147 * @mlme_obj: pointer to vdev_mlme_obj 148 * @is_amsdu: boolean to indicate value corresponds to amsdu/ampdu 149 * 150 * Return: QDF_STATUS - Success or Failure 151 */ 152 QDF_STATUS vdev_mgr_set_custom_aggr_size_send( 153 struct vdev_mlme_obj *mlme_obj, bool is_amsdu); 154 155 /** 156 * vdev_mgr_onfig_ratemask_cmd_send() – MLME API to send ratemask 157 * @mlme_obj: pointer to vdev_mlme_obj 158 * @type: type of ratemask configuration 159 * @lower32: Lower 32 bits in the 1st 64-bit value 160 * @higher32: Higher 32 bits in the 1st 64-bit value 161 * @lower32_2: Lower 32 bits in the 2nd 64-bit value 162 * 163 * Return: QDF_STATUS - Success or Failure 164 */ 165 QDF_STATUS vdev_mgr_config_ratemask_cmd_send( 166 struct vdev_mlme_obj *mlme_obj, 167 uint8_t type, 168 uint32_t lower32, 169 uint32_t higher32, 170 uint32_t lower32_2); 171 172 /** 173 * vdev_mgr_beacon_stop() – MLME API to stop beacon 174 * @mlme_obj: pointer to vdev_mlme_obj 175 * 176 * Return: QDF_STATUS - Success or Failure 177 */ 178 QDF_STATUS vdev_mgr_beacon_stop(struct vdev_mlme_obj *mlme_obj); 179 180 /** 181 * vdev_mgr_beacon_free() – MLME API to free beacon 182 * @mlme_obj: pointer to vdev_mlme_obj 183 * 184 * Return: QDF_STATUS - Success or Failure 185 */ 186 QDF_STATUS vdev_mgr_beacon_free(struct vdev_mlme_obj *mlme_obj); 187 188 /** 189 * vdev_mgr_beacon_send() – MLME API to send beacon 190 * @mlme_obj: pointer to vdev_mlme_obj 191 * @param: pointer to beacon_params 192 * 193 * Return: QDF_STATUS - Success or Failure 194 */ 195 QDF_STATUS vdev_mgr_beacon_send(struct vdev_mlme_obj *mlme_obj, 196 struct beacon_params *param); 197 198 /** 199 * vdev_mgr_beacon_tmpl_send() – MLME API to send beacon template 200 * @mlme_obj: pointer to vdev_mlme_obj 201 * @param: pointer to beacon_tmpl_params 202 * 203 * Return: QDF_STATUS - Success or Failure 204 */ 205 QDF_STATUS vdev_mgr_beacon_tmpl_send(struct vdev_mlme_obj *mlme_obj, 206 struct beacon_tmpl_params *param); 207 208 /** 209 * vdev_mgr_bcn_miss_offload_send() – MLME API to send bcn miss offload 210 * @mlme_obj: pointer to vdev_mlme_obj 211 * 212 * Return: QDF_STATUS - Success or Failure 213 */ 214 QDF_STATUS vdev_mgr_bcn_miss_offload_send(struct vdev_mlme_obj *mlme_obj); 215 216 /** 217 * vdev_mgr_multiple_restart_send() – MLME API to send multiple vdev restart 218 * @pdev: pointer to pdev object 219 * @chan: pointer to channel param structure 220 * @disable_hw_ack: ddisable hw ack value 221 * @vdev_ids: pointer to list of vdev ids which require restart 222 * @num_vdevs: number of vdevs in list 223 * @mvr_param: multiple vdev restart param 224 * 225 * Return: QDF_STATUS - Success or Failure 226 */ 227 QDF_STATUS vdev_mgr_multiple_restart_send( 228 struct wlan_objmgr_pdev *pdev, 229 struct mlme_channel_param *chan, 230 uint32_t disable_hw_ack, 231 uint32_t *vdev_ids, 232 uint32_t num_vdevs, 233 struct vdev_mlme_mvr_param *mvr_param); 234 235 /** 236 * vdev_mgr_peer_delete_all_send() – MLME API to send peer delete all request 237 * @mlme_obj: pointer to vdev_mlme_obj 238 * 239 * Return: QDF_STATUS - Success or Failure 240 */ 241 QDF_STATUS vdev_mgr_peer_delete_all_send(struct vdev_mlme_obj *mlme_obj); 242 243 #ifdef WLAN_BCN_RATECODE_ENABLE 244 static inline uint32_t vdev_mgr_fetch_ratecode(struct vdev_mlme_obj *mlme_obj) 245 { 246 return mlme_obj->mgmt.rate_info.bcn_tx_rate_code; 247 } 248 #else 249 static inline uint32_t vdev_mgr_fetch_ratecode(struct vdev_mlme_obj *mlme_obj) 250 { 251 return mlme_obj->mgmt.rate_info.bcn_tx_rate; 252 } 253 #endif 254 255 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 256 /** 257 * vdev_mgr_send_set_mac_addr() - Send set MAC address command to FW 258 * @mac_addr: VDEV MAC address 259 * @mld_addr: VDEV MLD address 260 * @vdev: Pointer to object manager VDEV 261 * 262 * API to send set MAC address request to FW 263 * 264 * Return: QDF_STATUS 265 */ 266 QDF_STATUS vdev_mgr_send_set_mac_addr(struct qdf_mac_addr mac_addr, 267 struct qdf_mac_addr mld_addr, 268 struct wlan_objmgr_vdev *vdev); 269 #endif 270 #endif /* __VDEV_MGR_OPS_H__ */ 271