xref: /wlan-dirver/qca-wifi-host-cmn/wmi/inc/wmi_unified_vdev_api.h (revision 901120c066e139c7f8a2c8e4820561fdd83c67ef)
1 /*
2  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022 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  * This file contains the API declarations for the Unified Wireless Module
22  * Interface (WMI).
23  */
24 
25 #ifndef _WMI_UNIFIED_VDEV_API_H_
26 #define _WMI_UNIFIED_VDEV_API_H_
27 
28 #include <wmi_unified_api.h>
29 
30 /**
31  *  wmi_unified_peer_filter_set_tx_cmd_send() - WMI set tx peer filter function
32  *  @param wmi_handle: handle to WMI.
33  *  @param macaddr: MAC address
34  *  @param param: pointer to hold peer filter parameter
35  *
36  *  @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
37  */
38 QDF_STATUS
39 wmi_unified_peer_filter_set_tx_cmd_send(struct wmi_unified *wmi_handle,
40 					uint8_t macaddr[],
41 					struct set_tx_peer_filter *param);
42 
43 /**
44  *  wmi_unified_vdev_set_neighbour_rx_cmd_send() - WMI set neighbour rx function
45  *  @param wmi_handle: handle to WMI.
46  *  @param macaddr: MAC address
47  *  @param param: pointer to hold neighbour rx parameter
48  *
49  *  @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
50  */
51 QDF_STATUS wmi_unified_vdev_set_neighbour_rx_cmd_send(
52 				struct wmi_unified *wmi_handle,
53 				uint8_t macaddr[QDF_MAC_ADDR_SIZE],
54 				struct set_neighbour_rx_params *param);
55 
56 /**
57  *  wmi_unified_vdev_config_ratemask_cmd_send() - WMI config ratemask function
58  *  @param wmi_handle: handle to WMI.
59  *  @param param: pointer to hold config ratemask param
60  *
61  *  @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
62  */
63 QDF_STATUS
64 wmi_unified_vdev_config_ratemask_cmd_send(struct wmi_unified *wmi_handle,
65 					  struct config_ratemask_params *param);
66 
67 /**
68  * wmi_unified_send_multiple_vdev_restart_req_cmd() - send multiple vdev restart
69  * @wmi_handle: wmi handle
70  * @param: multiple vdev restart parameter
71  *
72  * Send WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID parameters to fw.
73  *
74  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
75  */
76 QDF_STATUS wmi_unified_send_multiple_vdev_restart_req_cmd(
77 				struct wmi_unified *wmi_handle,
78 				struct multiple_vdev_restart_params *param);
79 
80 /**
81  * wmi_unified_send_multiple_vdev_set_param_cmd() - Send multiple vdev set param
82  *                                                  command
83  * @wmi_handle: wmi handle
84  * @param: multiple vdev restart parameter
85  *
86  * Send WMI_PDEV_MULTIPLE_VDEV_SET_PARAM_CMDID parameters to fw.
87  *
88  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
89  */
90 QDF_STATUS wmi_unified_send_multiple_vdev_set_param_cmd(
91 				struct wmi_unified *wmi_handle,
92 				struct multiple_vdev_set_param *param);
93 
94 /**
95  *  wmi_unified_beacon_send_cmd() - WMI beacon send function
96  *  @param wmi_handle: handle to WMI.
97  *  @param macaddr: MAC address
98  *  @param param: pointer to hold beacon send cmd parameter
99  *
100  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
101  */
102 QDF_STATUS wmi_unified_beacon_send_cmd(struct wmi_unified *wmi_handle,
103 				       struct beacon_params *param);
104 
105 /**
106  * wmi_extract_vdev_start_resp() - extract vdev start response
107  * @wmi_handle: wmi handle
108  * @param evt_buf: pointer to event buffer
109  * @param vdev_rsp: Pointer to hold vdev response
110  *
111  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
112  */
113 QDF_STATUS
114 wmi_extract_vdev_start_resp(struct wmi_unified *wmi_handle, void *evt_buf,
115 			    struct vdev_start_response *vdev_rsp);
116 
117 /**
118  * wmi_extract_vdev_stopped_param() - extract vdev stop param from event
119  * @wmi_handle: wmi handle
120  * @param evt_buf: pointer to event buffer
121  * @param vdev_id: Pointer to hold vdev identifier
122  *
123  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
124  */
125 QDF_STATUS
126 wmi_extract_vdev_stopped_param(struct wmi_unified *wmi_handle, void *evt_buf,
127 			       uint32_t *vdev_id);
128 
129 /**
130  * wmi_extract_vdev_delete_resp() - extract vdev delete response
131  * @wmi_handle: wmi handle
132  * @param evt_buf: pointer to event buffer
133  * @param delete_rsp: Pointer to hold vdev delete response
134  *
135  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
136  */
137 QDF_STATUS
138 wmi_extract_vdev_delete_resp(struct wmi_unified *wmi_handle, void *evt_buf,
139 			     struct vdev_delete_response *vdev_del_resp);
140 
141 /**
142  * wmi_extract_vdev_peer_delete_all_response_event() - extract peer delete all
143  * response
144  * @wmi_handle: wmi handle
145  * @param evt_buf: pointer to event buffer
146  * @param delete_rsp: Pointer to hold peer delete all response
147  *
148  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
149  */
150 QDF_STATUS wmi_extract_vdev_peer_delete_all_response_event(
151 	struct wmi_unified *wmi_handle,
152 	void *evt_buf,
153 	struct peer_delete_all_response *delete_rsp);
154 
155 /**
156  * wmi_extract_ext_tbttoffset_num_vdevs() - extract ext tbtt offset num vdev
157  * @wmi_handle: wmi handle
158  * @param evt_buf: pointer to event buffer
159  * @param vdev_map: Pointer to hold num vdev
160  *
161  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
162  */
163 QDF_STATUS
164 wmi_extract_ext_tbttoffset_num_vdevs(struct wmi_unified *wmi_handle,
165 				     void *evt_buf, uint32_t *num_vdevs);
166 
167 /**
168  * wmi_extract_tbttoffset_num_vdevs() - extract tbtt offset num vdev
169  * @wmi_handle: wmi handle
170  * @param evt_buf: pointer to event buffer
171  * @param vdev_map: Pointer to hold num vdev
172  *
173  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
174  */
175 QDF_STATUS
176 wmi_extract_tbttoffset_num_vdevs(struct wmi_unified *wmi_handle, void *evt_buf,
177 				 uint32_t *num_vdevs);
178 
179 /**
180  * wmi_extract_multi_vdev_restart_resp_event() - extract multi vdev restart
181  * response
182  * @wmi_handle: wmi handle
183  * @evt_buf: pointer to event buffer
184  * @restart_rsp: Pointer to hold multi vdev restart response
185  *
186  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
187  */
188 QDF_STATUS wmi_extract_multi_vdev_restart_resp_event(
189 		struct wmi_unified *wmi_handle,
190 		void *evt_buf,
191 		struct multi_vdev_restart_resp *restart_rsp);
192 
193 /**
194  * wmi_unified_multisoc_tbtt_sync_cmd() - Send cmd to sync tbtt in multisoc case
195  * @wmi_handle: wmi handle
196  * @param: params received in rnr_tbtt_multisoc_sync_param
197  *
198  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
199  */
200 QDF_STATUS
201 wmi_unified_multisoc_tbtt_sync_cmd(wmi_unified_t wmi_handle,
202 				   struct rnr_tbtt_multisoc_sync_param *param);
203 
204 #ifdef WLAN_FEATURE_SR
205 /**
206  * wmi_unified_vdev_param_sr_prohibit_send() - send vdev SR prohibit command
207  * @wmi: wmi handle
208  * @srp_param: SR Prohibit parameters
209  *
210  * Return: QDF_STATUS_SUCCESS for success or error code
211  */
212 QDF_STATUS
213 wmi_unified_vdev_param_sr_prohibit_send(wmi_unified_t wmi_hdl,
214 					struct sr_prohibit_param *srp_param);
215 #else
216 static inline QDF_STATUS
217 wmi_unified_vdev_param_sr_prohibit_send(wmi_unified_t wmi_hdl,
218 					struct sr_prohibit_param *srp_param)
219 {
220 	return QDF_STATUS_SUCCESS;
221 }
222 #endif
223 #endif
224