1 /* 2 * Copyright (c) 2021, The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 /* 18 * This file contains the API definitions for the Unified Wireless Module 19 * Interface (WMI) specific to 11be. 20 */ 21 22 #ifndef _WMI_UNIFIED_11BE_API_H_ 23 #define _WMI_UNIFIED_11BE_API_H_ 24 25 #include <wmi_unified_api.h> 26 #include <wmi_unified_priv.h> 27 28 #ifdef WLAN_FEATURE_11BE_MLO 29 /** 30 * wmi_extract_mlo_link_set_active_resp() - extract mlo link set active 31 * response event 32 * @wmi: wmi handle 33 * @evt_buf: pointer to event buffer 34 * @evt: Pointer to hold mlo link set active response event 35 * 36 * This function gets called to extract mlo link set active response event 37 * 38 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 39 */ 40 QDF_STATUS 41 wmi_extract_mlo_link_set_active_resp(wmi_unified_t wmi, 42 void *evt_buf, 43 struct mlo_link_set_active_resp *evt); 44 45 /** 46 * wmi_send_mlo_link_set_active_cmd() - send mlo link set active command 47 * @wmi_handle: WMI handle for this pdev 48 * @param: Pointer to mlo link set active param 49 * 50 * Return: QDF_STATUS code 51 */ 52 QDF_STATUS 53 wmi_send_mlo_link_set_active_cmd(wmi_unified_t wmi_handle, 54 struct mlo_link_set_active_param *param); 55 56 /** 57 * wmi_extract_mgmt_rx_ml_cu_params() - extract mlo cu params from event 58 * @wmi_handle: wmi handle 59 * @evt_buf: pointer to event buffer 60 * @cu_params: Pointer to mlo CU params 61 * 62 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 63 */ 64 QDF_STATUS 65 wmi_extract_mgmt_rx_ml_cu_params(wmi_unified_t wmi_handle, void *evt_buf, 66 struct mlo_mgmt_ml_info *cu_params); 67 68 /** 69 * wmi_send_mlo_link_removal_cmd() - Send WMI command for MLO link removal 70 * @wmi: wmi handle 71 * @param: MLO link removal command parameters 72 * 73 * Return: QDF_STATUS_SUCCESS of operation 74 */ 75 QDF_STATUS wmi_send_mlo_link_removal_cmd( 76 wmi_unified_t wmi, 77 const struct mlo_link_removal_cmd_params *param); 78 79 /** 80 * wmi_send_mlo_vdev_pause() - Send WMI command for MLO vdev pause 81 * @wmi: wmi handle 82 * @info: MLO vdev pause information 83 * 84 * Return: QDF_STATUS_SUCCESS of operation 85 */ 86 QDF_STATUS wmi_send_mlo_vdev_pause(wmi_unified_t wmi, 87 struct mlo_vdev_pause *info); 88 89 /** 90 * wmi_extract_mlo_link_removal_evt_fixed_param() - Extract fixed parameters TLV 91 * from the MLO link removal WMI event 92 * @wmi_handle: wmi handle 93 * @buf: pointer to event buffer 94 * @params: MLO link removal event parameters 95 * 96 * Return: QDF_STATUS_SUCCESS of operation 97 */ 98 QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param( 99 struct wmi_unified *wmi_handle, 100 void *buf, 101 struct mlo_link_removal_evt_params *params); 102 103 /** 104 * wmi_extract_mlo_link_removal_tbtt_update() - Extract TBTT update TLV 105 * from the MLO link removal WMI event 106 * @wmi_handle: wmi handle 107 * @buf: pointer to event buffer 108 * @tbtt_info: TBTT information 109 * 110 * Return: QDF_STATUS of operation 111 */ 112 QDF_STATUS wmi_extract_mlo_link_removal_tbtt_update( 113 struct wmi_unified *wmi_handle, 114 void *buf, 115 struct mlo_link_removal_tbtt_info *tbtt_info); 116 117 /** 118 * wmi_extract_mgmt_rx_mlo_link_removal_info() - Extract MLO link removal info 119 * from MGMT Rx event 120 * @wmi: wmi handle 121 * @buf: event buffer 122 * @link_removal_info: link removal information array to be populated 123 * @num_link_removal_info: Number of elements in @link_removal_info 124 * 125 * Return: QDF_STATUS of operation 126 */ 127 QDF_STATUS wmi_extract_mgmt_rx_mlo_link_removal_info( 128 struct wmi_unified *wmi, 129 void *buf, 130 struct mgmt_rx_mlo_link_removal_info *link_removal_info, 131 int num_link_removal_info); 132 #endif /*WLAN_FEATURE_11BE_MLO*/ 133 134 #ifdef WLAN_FEATURE_11BE 135 /** 136 * wmi_send_mlo_peer_tid_to_link_map_cmd() - send TID-to-link mapping command 137 * @wmi: WMI handle for this pdev 138 * @params: Pointer to TID-to-link mapping params 139 * @t2lm_info: T2LM info presence flag 140 */ 141 QDF_STATUS wmi_send_mlo_peer_tid_to_link_map_cmd( 142 wmi_unified_t wmi, 143 struct wmi_host_tid_to_link_map_params *params, 144 bool t2lm_info); 145 146 /** 147 * wmi_send_mlo_vdev_tid_to_link_map_cmd() - send TID-to-link mapping command 148 * per vdev 149 * @wmi: WMI handle for this pdev 150 * @params: Pointer to TID-to-link mapping params 151 */ 152 QDF_STATUS wmi_send_mlo_vdev_tid_to_link_map_cmd( 153 wmi_unified_t wmi, 154 struct wmi_host_tid_to_link_map_ap_params *params); 155 /** 156 * wmi_send_mlo_link_state_request_cmd - send mlo link status command 157 * @wmi: wmi handle 158 * @params: Pointer to link state params 159 */ 160 QDF_STATUS wmi_send_mlo_link_state_request_cmd( 161 wmi_unified_t wmi, 162 struct wmi_host_link_state_params *params); 163 164 /** 165 * wmi_send_link_set_bss_params_cmd - send link set bss cmd 166 * @wmi: wmi handler 167 * @params: pointer to link bss param 168 */ 169 QDF_STATUS wmi_send_link_set_bss_params_cmd( 170 wmi_unified_t wmi, 171 struct wmi_host_link_bss_params *params); 172 173 /** 174 * wmi_extract_mlo_vdev_tid_to_link_map_event() - extract mlo t2lm info for vdev 175 * @wmi: wmi handle 176 * @evt_buf: pointer to event buffer 177 * @resp: Pointer to host structure to get the t2lm info 178 * 179 * This function gets called to extract mlo t2lm info for particular pdev 180 * 181 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 182 */ 183 QDF_STATUS 184 wmi_extract_mlo_vdev_tid_to_link_map_event( 185 wmi_unified_t wmi, void *evt_buf, 186 struct mlo_vdev_host_tid_to_link_map_resp *resp); 187 188 /** 189 * wmi_extract_mlo_vdev_bcast_tid_to_link_map_event() - extract bcast mlo t2lm 190 * info for vdev 191 * @wmi: wmi handle 192 * @evt_buf: pointer to event buffer 193 * @bcast: Pointer to host structure to get the t2lm bcast info 194 * 195 * This function gets called to extract bcast mlo t2lm info for particular pdev 196 * 197 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 198 */ 199 QDF_STATUS 200 wmi_extract_mlo_vdev_bcast_tid_to_link_map_event( 201 wmi_unified_t wmi, 202 void *evt_buf, 203 struct mlo_bcast_t2lm_info *bcast); 204 205 /** 206 * wmi_extract_mlo_link_state_info_event - extract mlo link status info 207 * @wmi: wmi handle 208 * @evt_buf: pointer to event buffer 209 * @params: pointer to host struct to get mlo link state 210 */ 211 QDF_STATUS wmi_extract_mlo_link_state_info_event( 212 wmi_unified_t wmi, 213 void *evt_buf, 214 struct ml_link_state_info_event *params); 215 216 #ifdef WLAN_FEATURE_11BE_MLO_ADV_FEATURE 217 /** 218 * wmi_send_mlo_link_switch_req_cnf_cmd() - Send WMI command to FW on 219 * status of Link switch request received. 220 * @wmi: wmi handle 221 * @params: Params to send to FW. 222 * 223 * Return: QDF_STATUS. 224 */ 225 QDF_STATUS 226 wmi_send_mlo_link_switch_req_cnf_cmd(wmi_unified_t wmi, 227 struct wlan_mlo_link_switch_cnf *params); 228 229 /** 230 * wmi_extract_mlo_link_switch_request_evt() - Extract fixed params TLV 231 * from the MLO link switch request WMI event. 232 * @wmi: wmi handle 233 * @buf: pointer to event buffer 234 * @req: MLO link switch request event params. 235 * 236 * Return: QDF_STATUS 237 */ 238 QDF_STATUS 239 wmi_extract_mlo_link_switch_request_evt(struct wmi_unified *wmi, void *buf, 240 struct wlan_mlo_link_switch_req *req); 241 #else 242 static inline QDF_STATUS 243 wmi_send_mlo_link_switch_req_cnf_cmd(wmi_unified_t wmi, 244 struct wlan_mlo_link_switch_cnf *params) 245 { 246 return QDF_STATUS_SUCCESS; 247 } 248 249 static inline QDF_STATUS 250 wmi_extract_mlo_link_switch_request_evt(struct wmi_unified *wmi, void *buf, 251 struct wlan_mlo_link_switch_req *req) 252 { 253 return QDF_STATUS_SUCCESS; 254 } 255 #endif 256 257 /** 258 * wmi_extract_mlo_link_disable_request_evt() - Extract fixed parameters TLV 259 * from the MLO link disable request WMI event 260 * @wmi: wmi handle 261 * @buf: pointer to event buffer 262 * @params: MLO link disable request event parameters 263 * 264 * Return: QDF_STATUS_SUCCESS of operation 265 */ 266 QDF_STATUS wmi_extract_mlo_link_disable_request_evt( 267 struct wmi_unified *wmi, 268 void *buf, 269 struct mlo_link_disable_request_evt_params *params); 270 271 /** 272 * wmi_extract_mlo_link_state_switch_evt() - Extract the MLO link switch state 273 * event parameters 274 * @wmi: wmi handle 275 * @buf: pointer to event buffer 276 * @len: event data length 277 * @info: Info on link switch state change event 278 * 279 * Return: QDF_STATUS 280 */ 281 QDF_STATUS 282 wmi_extract_mlo_link_state_switch_evt(struct wmi_unified *wmi, void *buf, 283 uint8_t len, 284 struct mlo_link_switch_state_info *info); 285 #endif /* WLAN_FEATURE_11BE */ 286 287 #ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE 288 /** 289 * wmi_unified_peer_ptqm_migrate_send() - send PEER ptqm migrate command to fw 290 * @wmi_hdl: wmi handle 291 * @param: pointer to hold peer ptqm migrate parameters 292 * 293 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 294 */ 295 QDF_STATUS wmi_unified_peer_ptqm_migrate_send( 296 wmi_unified_t wmi_hdl, 297 struct peer_ptqm_migrate_params *param); 298 299 /** 300 * wmi_extract_peer_ptqm_migrate_event() - extract peer ptqm migrate event params 301 * @wmi: wmi handle 302 * @evt_buf: pointer to event buffer 303 * @resp: Pointer to host structure to get the event params 304 * 305 * This function gets called to extract peer ptqm migrate event params 306 * 307 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 308 */ 309 QDF_STATUS 310 wmi_extract_peer_ptqm_migrate_event( 311 wmi_unified_t wmi, void *evt_buf, 312 struct peer_ptqm_migrate_event_params *resp); 313 314 /** 315 * wmi_extract_peer_ptqm_entry_param() - extract peer entry ptqm migrate param 316 * @wmi_handle: wmi handle 317 * @evt_buf: pointer to event buffer 318 * @index: Index into pdev stats 319 * @entry: Pointer to peer entry params 320 * 321 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 322 */ 323 QDF_STATUS 324 wmi_extract_peer_ptqm_entry_param( 325 wmi_unified_t wmi_handle, void *evt_buf, 326 uint32_t index, 327 struct peer_entry_ptqm_migrate_event_params *entry); 328 #endif /* QCA_SUPPORT_PRIMARY_LINK_MIGRATE */ 329 #endif /*_WMI_UNIFIED_11BE_API_H_*/ 330