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