xref: /wlan-dirver/qca-wifi-host-cmn/wmi/src/wmi_unified_twt_api.c (revision f4b29f3ad5284b62be9a856132a100beee3c6a6a)
1 /*
2  * Copyright (c) 2018-2021 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  * DOC: Implement API's specific to TWT component.
20  */
21 
22 #include "wmi_unified_priv.h"
23 #include "wmi_unified_twt_api.h"
24 
25 
26 QDF_STATUS
27 wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle,
28 			   struct wmi_twt_enable_param *params)
29 {
30 	if (wmi_handle->ops->send_twt_enable_cmd)
31 		return wmi_handle->ops->send_twt_enable_cmd(
32 				wmi_handle, params);
33 
34 	return QDF_STATUS_E_FAILURE;
35 }
36 
37 QDF_STATUS
38 wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle,
39 			    struct wmi_twt_disable_param *params)
40 {
41 	if (wmi_handle->ops->send_twt_disable_cmd)
42 		return wmi_handle->ops->send_twt_disable_cmd(
43 				wmi_handle, params);
44 
45 	return QDF_STATUS_E_FAILURE;
46 }
47 
48 QDF_STATUS
49 wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle,
50 			       struct wmi_twt_add_dialog_param *params)
51 {
52 	if (wmi_handle->ops->send_twt_add_dialog_cmd)
53 		return wmi_handle->ops->send_twt_add_dialog_cmd(
54 				wmi_handle, params);
55 
56 	return QDF_STATUS_E_FAILURE;
57 }
58 
59 QDF_STATUS
60 wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle,
61 			       struct wmi_twt_del_dialog_param *params)
62 {
63 	if (wmi_handle->ops->send_twt_del_dialog_cmd)
64 		return wmi_handle->ops->send_twt_del_dialog_cmd(
65 				wmi_handle, params);
66 
67 	return QDF_STATUS_E_FAILURE;
68 }
69 
70 QDF_STATUS
71 wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle,
72 				 struct wmi_twt_pause_dialog_cmd_param *params)
73 {
74 	if (wmi_handle->ops->send_twt_pause_dialog_cmd)
75 		return wmi_handle->ops->send_twt_pause_dialog_cmd(
76 				wmi_handle, params);
77 
78 	return QDF_STATUS_E_FAILURE;
79 }
80 
81 QDF_STATUS
82 wmi_unified_twt_nudge_dialog_cmd(wmi_unified_t wmi_handle,
83 				 struct wmi_twt_nudge_dialog_cmd_param *params)
84 {
85 	if (wmi_handle->ops->send_twt_nudge_dialog_cmd)
86 		return wmi_handle->ops->send_twt_nudge_dialog_cmd(
87 				wmi_handle, params);
88 
89 	return QDF_STATUS_E_FAILURE;
90 }
91 
92 QDF_STATUS wmi_unified_twt_resume_dialog_cmd(
93 			wmi_unified_t wmi_handle,
94 			struct wmi_twt_resume_dialog_cmd_param *params)
95 {
96 	if (wmi_handle->ops->send_twt_resume_dialog_cmd)
97 		return wmi_handle->ops->send_twt_resume_dialog_cmd(
98 				wmi_handle, params);
99 
100 	return QDF_STATUS_E_FAILURE;
101 }
102 
103 #ifdef WLAN_SUPPORT_BCAST_TWT
104 QDF_STATUS wmi_unified_twt_btwt_invite_sta_cmd(
105 			wmi_unified_t wmi_handle,
106 			struct wmi_twt_btwt_invite_sta_cmd_param *params)
107 {
108 	if (wmi_handle->ops->send_twt_btwt_invite_sta_cmd)
109 		return wmi_handle->ops->send_twt_btwt_invite_sta_cmd(
110 				wmi_handle, params);
111 
112 	return QDF_STATUS_E_FAILURE;
113 }
114 
115 QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd(
116 			wmi_unified_t wmi_handle,
117 			struct wmi_twt_btwt_remove_sta_cmd_param *params)
118 {
119 	if (wmi_handle->ops->send_twt_btwt_remove_sta_cmd)
120 		return wmi_handle->ops->send_twt_btwt_remove_sta_cmd(
121 				wmi_handle, params);
122 
123 	return QDF_STATUS_E_FAILURE;
124 }
125 #endif
126 
127 QDF_STATUS wmi_extract_twt_enable_comp_event(
128 			wmi_unified_t wmi_handle,
129 			uint8_t *evt_buf,
130 			struct wmi_twt_enable_complete_event_param *params)
131 {
132 	if (wmi_handle->ops->extract_twt_enable_comp_event)
133 		return wmi_handle->ops->extract_twt_enable_comp_event(
134 				wmi_handle, evt_buf, params);
135 
136 	return QDF_STATUS_E_FAILURE;
137 }
138 
139 QDF_STATUS wmi_extract_twt_disable_comp_event(
140 			wmi_unified_t wmi_handle,
141 			uint8_t *evt_buf,
142 			struct wmi_twt_disable_complete_event *params)
143 {
144 	if (wmi_handle->ops->extract_twt_disable_comp_event)
145 		return wmi_handle->ops->extract_twt_disable_comp_event(
146 				wmi_handle, evt_buf, params);
147 
148 	return QDF_STATUS_E_FAILURE;
149 }
150 
151 QDF_STATUS wmi_extract_twt_add_dialog_comp_event(
152 			wmi_unified_t wmi_handle,
153 			uint8_t *evt_buf,
154 			struct wmi_twt_add_dialog_complete_event_param *params)
155 {
156 	if (wmi_handle->ops->extract_twt_add_dialog_comp_event)
157 		return wmi_handle->ops->extract_twt_add_dialog_comp_event(
158 				wmi_handle, evt_buf, params);
159 
160 	return QDF_STATUS_E_FAILURE;
161 }
162 
163 QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params(
164 		wmi_unified_t wmi_handle, uint8_t *evt_buf,
165 		uint32_t evt_buf_len, uint32_t idx,
166 		struct wmi_twt_add_dialog_additional_params *additional_params)
167 {
168 	if (wmi_handle->ops->extract_twt_add_dialog_comp_additional_params)
169 		return wmi_handle->ops->
170 			extract_twt_add_dialog_comp_additional_params(
171 			wmi_handle, evt_buf, evt_buf_len, idx,
172 			additional_params);
173 
174 	return QDF_STATUS_E_FAILURE;
175 }
176 
177 QDF_STATUS wmi_extract_twt_del_dialog_comp_event(
178 		wmi_unified_t wmi_handle,
179 		uint8_t *evt_buf,
180 		struct wmi_twt_del_dialog_complete_event_param *params)
181 {
182 	if (wmi_handle->ops->extract_twt_del_dialog_comp_event)
183 		return wmi_handle->ops->extract_twt_del_dialog_comp_event(
184 				wmi_handle, evt_buf, params);
185 
186 	return QDF_STATUS_E_FAILURE;
187 }
188 
189 QDF_STATUS wmi_extract_twt_pause_dialog_comp_event(
190 		wmi_unified_t wmi_handle,
191 		uint8_t *evt_buf,
192 		struct wmi_twt_pause_dialog_complete_event_param *params)
193 {
194 	if (wmi_handle->ops->extract_twt_pause_dialog_comp_event)
195 		return wmi_handle->ops->extract_twt_pause_dialog_comp_event(
196 				wmi_handle, evt_buf, params);
197 
198 	return QDF_STATUS_E_FAILURE;
199 }
200 
201 QDF_STATUS wmi_extract_twt_nudge_dialog_comp_event(
202 		wmi_unified_t wmi_handle,
203 		uint8_t *evt_buf,
204 		struct wmi_twt_nudge_dialog_complete_event_param *params)
205 {
206 	if (wmi_handle->ops->extract_twt_nudge_dialog_comp_event)
207 		return wmi_handle->ops->extract_twt_nudge_dialog_comp_event(
208 				wmi_handle, evt_buf, params);
209 
210 	return QDF_STATUS_E_FAILURE;
211 }
212 
213 QDF_STATUS wmi_extract_twt_resume_dialog_comp_event(
214 		wmi_unified_t wmi_handle,
215 		uint8_t *evt_buf,
216 		struct wmi_twt_resume_dialog_complete_event_param *params)
217 {
218 	if (wmi_handle->ops->extract_twt_resume_dialog_comp_event)
219 		return wmi_handle->ops->extract_twt_resume_dialog_comp_event(
220 				wmi_handle, evt_buf, params);
221 
222 	return QDF_STATUS_E_FAILURE;
223 }
224 
225 QDF_STATUS wmi_extract_twt_notify_event(
226 		wmi_unified_t wmi_handle,
227 		uint8_t *evt_buf,
228 		struct wmi_twt_notify_event_param *params)
229 {
230 	if (wmi_handle->ops->extract_twt_notify_event)
231 		return wmi_handle->ops->extract_twt_notify_event(wmi_handle,
232 								 evt_buf,
233 								 params);
234 
235 	return QDF_STATUS_E_FAILURE;
236 }
237 
238 #ifdef WLAN_SUPPORT_BCAST_TWT
239 QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event(
240 		wmi_unified_t wmi_handle,
241 		uint8_t *evt_buf,
242 		struct wmi_twt_btwt_invite_sta_complete_event_param *params)
243 {
244 	if (wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event)
245 		return wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event(
246 				wmi_handle, evt_buf, params);
247 
248 	return QDF_STATUS_E_FAILURE;
249 }
250 
251 QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event(
252 		wmi_unified_t wmi_handle,
253 		uint8_t *evt_buf,
254 		struct wmi_twt_btwt_remove_sta_complete_event_param *params)
255 {
256 	if (wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event)
257 		return wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event(
258 				wmi_handle, evt_buf, params);
259 
260 	return QDF_STATUS_E_FAILURE;
261 }
262 #endif
263 
264 QDF_STATUS wmi_extract_twt_session_stats_event(
265 		wmi_unified_t wmi_handle,
266 		uint8_t *evt_buf,
267 		struct wmi_twt_session_stats_event_param *params)
268 {
269 	if (wmi_handle->ops->extract_twt_session_stats_event)
270 		return wmi_handle->ops->extract_twt_session_stats_event(
271 				wmi_handle, evt_buf, params);
272 
273 	return QDF_STATUS_E_FAILURE;
274 }
275 
276 QDF_STATUS wmi_extract_twt_session_stats_data(
277 		wmi_unified_t wmi_handle,
278 		uint8_t *evt_buf,
279 		struct wmi_twt_session_stats_event_param *params,
280 		struct wmi_host_twt_session_stats_info *session,
281 		uint32_t idx)
282 {
283 	if (wmi_handle->ops->extract_twt_session_stats_data)
284 		return wmi_handle->ops->extract_twt_session_stats_data(
285 				wmi_handle, evt_buf, params, session, idx);
286 
287 	return QDF_STATUS_E_FAILURE;
288 }
289 
290 QDF_STATUS wmi_extract_twt_cap_service_ready_ext2(
291 		wmi_unified_t wmi_handle,
292 		uint8_t *evt_buf,
293 		struct wmi_twt_cap_bitmap_params *params)
294 {
295 	if (wmi_handle->ops->extract_twt_cap_service_ready_ext2)
296 		return wmi_handle->ops->extract_twt_cap_service_ready_ext2(
297 				wmi_handle, evt_buf, params);
298 
299 	return QDF_STATUS_E_FAILURE;
300 }
301 
302 QDF_STATUS wmi_extract_twt_ack_comp_event(
303 		wmi_unified_t wmi_handle,
304 		uint8_t *evt_buf,
305 		struct wmi_twt_ack_complete_event_param *params)
306 {
307 	if (wmi_handle->ops->extract_twt_ack_comp_event)
308 		return wmi_handle->ops->extract_twt_ack_comp_event(
309 				wmi_handle, evt_buf, params);
310 
311 	return QDF_STATUS_E_FAILURE;
312 }
313