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