xref: /wlan-dirver/qca-wifi-host-cmn/wmi/src/wmi_unified_11be_api.c (revision 6ad49b72b17ddfe0c138968f4a15ca00f1450979)
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  * DOC: Implement API's specific to 11be.
19  */
20 
21 #include "wmi_unified_11be_api.h"
22 
23 /**
24  * wmi_extract_mlo_link_set_active_resp() - extract mlo link set active resp
25  *  from event
26  * @wmi: WMI handle for this pdev
27  * @evt_buf: pointer to event buffer
28  * @resp: Pointer to hold mlo link set active resp
29  *
30  * Return: QDF_STATUS code
31  */
32 QDF_STATUS
33 wmi_extract_mlo_link_set_active_resp(wmi_unified_t wmi,
34 				     void *evt_buf,
35 				     struct mlo_link_set_active_resp *resp)
36 {
37 	if (wmi->ops->extract_mlo_link_set_active_resp) {
38 		return wmi->ops->extract_mlo_link_set_active_resp(wmi,
39 								  evt_buf,
40 								  resp);
41 	}
42 	return QDF_STATUS_E_FAILURE;
43 }
44 
45 /**
46  * wmi_send_mlo_link_set_active_cmd() - send mlo link set active command
47  * @wmi: 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,
54 				 struct mlo_link_set_active_param *param)
55 {
56 	if (wmi->ops->send_mlo_link_set_active_cmd)
57 		return wmi->ops->send_mlo_link_set_active_cmd(wmi, param);
58 
59 	return QDF_STATUS_E_FAILURE;
60 }
61 
62 #ifdef WLAN_FEATURE_11BE
63 QDF_STATUS wmi_send_mlo_peer_tid_to_link_map_cmd(
64 		wmi_unified_t wmi,
65 		struct wmi_host_tid_to_link_map_params *params,
66 		bool t2lm_info)
67 {
68 	if (wmi->ops->send_mlo_peer_tid_to_link_map)
69 		return wmi->ops->send_mlo_peer_tid_to_link_map(wmi, params, t2lm_info);
70 
71 	return QDF_STATUS_E_FAILURE;
72 }
73 
74 QDF_STATUS wmi_send_mlo_vdev_tid_to_link_map_cmd(
75 		wmi_unified_t wmi,
76 		struct wmi_host_tid_to_link_map_ap_params *params)
77 {
78 	if (wmi->ops->send_mlo_vdev_tid_to_link_map)
79 		return wmi->ops->send_mlo_vdev_tid_to_link_map(wmi, params);
80 
81 	return QDF_STATUS_E_FAILURE;
82 }
83 
84 QDF_STATUS wmi_send_mlo_link_state_request_cmd(
85 		wmi_unified_t wmi,
86 		struct wmi_host_link_state_params *params)
87 {
88 	if (wmi->ops->send_mlo_link_state_request)
89 		return wmi->ops->send_mlo_link_state_request(wmi, params);
90 	return QDF_STATUS_E_FAILURE;
91 }
92 
93 QDF_STATUS
94 wmi_extract_mlo_vdev_tid_to_link_map_event(
95 		wmi_unified_t wmi, void *evt_buf,
96 		struct mlo_vdev_host_tid_to_link_map_resp *resp)
97 {
98 	if (wmi->ops->extract_mlo_vdev_tid_to_link_map_event) {
99 		return wmi->ops->extract_mlo_vdev_tid_to_link_map_event(wmi,
100 									evt_buf,
101 									resp);
102 	}
103 	return QDF_STATUS_E_FAILURE;
104 }
105 
106 QDF_STATUS
107 wmi_extract_mlo_vdev_bcast_tid_to_link_map_event(
108 				     wmi_unified_t wmi,
109 				     void *evt_buf,
110 				     struct mlo_bcast_t2lm_info *bcast)
111 {
112 	if (wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event) {
113 		return wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event(
114 						wmi,
115 						evt_buf,
116 						bcast);
117 	}
118 	return QDF_STATUS_E_FAILURE;
119 }
120 
121 QDF_STATUS wmi_extract_mlo_link_state_info_event(
122 		wmi_unified_t wmi,
123 		void *evt_buf,
124 		struct ml_link_state_info_event *params)
125 {
126 	if (wmi->ops->extract_mlo_link_state_event)
127 		return wmi->ops->extract_mlo_link_state_event(
128 				wmi, evt_buf, params);
129 	return QDF_STATUS_E_FAILURE;
130 }
131 
132 QDF_STATUS wmi_extract_mlo_link_disable_request_evt(
133 		struct wmi_unified *wmi,
134 		void *buf,
135 		struct mlo_link_disable_request_evt_params *params)
136 {
137 	if (wmi->ops->extract_mlo_link_disable_request_evt_param)
138 		return wmi->ops->extract_mlo_link_disable_request_evt_param(
139 							wmi, buf, params);
140 
141 	return QDF_STATUS_E_FAILURE;
142 }
143 
144 #endif /* WLAN_FEATURE_11BE */
145 
146 QDF_STATUS
147 wmi_extract_mgmt_rx_ml_cu_params(wmi_unified_t wmi, void *evt_buf,
148 				 struct mlo_mgmt_ml_info *cu_params)
149 {
150 	if (wmi->ops->extract_mgmt_rx_ml_cu_params)
151 		return wmi->ops->extract_mgmt_rx_ml_cu_params(
152 				wmi, evt_buf, cu_params);
153 
154 	return QDF_STATUS_E_FAILURE;
155 }
156 
157 QDF_STATUS wmi_send_mlo_link_removal_cmd(
158 		wmi_unified_t wmi,
159 		const struct mlo_link_removal_cmd_params *param)
160 {
161 	if (wmi->ops->send_mlo_link_removal_cmd)
162 		return wmi->ops->send_mlo_link_removal_cmd(wmi, param);
163 
164 	return QDF_STATUS_E_FAILURE;
165 }
166 
167 QDF_STATUS wmi_send_mlo_vdev_pause(wmi_unified_t wmi,
168 				   struct mlo_vdev_pause *info)
169 {
170 	if (wmi->ops->send_mlo_vdev_pause)
171 		return wmi->ops->send_mlo_vdev_pause(wmi, info);
172 
173 	return QDF_STATUS_E_FAILURE;
174 }
175 
176 QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param(
177 		struct wmi_unified *wmi,
178 		void *buf,
179 		struct mlo_link_removal_evt_params *params)
180 {
181 	if (wmi->ops->extract_mlo_link_removal_evt_fixed_param)
182 		return wmi->ops->extract_mlo_link_removal_evt_fixed_param(
183 							wmi, buf, params);
184 
185 	return QDF_STATUS_E_FAILURE;
186 }
187 
188 QDF_STATUS wmi_extract_mlo_link_removal_tbtt_update(
189 		struct wmi_unified *wmi,
190 		void *buf,
191 		struct mlo_link_removal_tbtt_info *tbtt_info)
192 {
193 	if (wmi->ops->extract_mlo_link_removal_tbtt_update)
194 		return wmi->ops->extract_mlo_link_removal_tbtt_update(
195 							wmi, buf, tbtt_info);
196 
197 	return QDF_STATUS_E_FAILURE;
198 }
199 
200 QDF_STATUS wmi_extract_mgmt_rx_mlo_link_removal_info(
201 		struct wmi_unified *wmi,
202 		void *buf,
203 		struct mgmt_rx_mlo_link_removal_info *link_removal_info,
204 		int num_link_removal_info)
205 {
206 	if (wmi->ops->extract_mgmt_rx_mlo_link_removal_info)
207 		return wmi->ops->extract_mgmt_rx_mlo_link_removal_info(
208 							wmi, buf,
209 							link_removal_info,
210 							num_link_removal_info);
211 
212 	return QDF_STATUS_E_FAILURE;
213 }
214