xref: /wlan-dirver/qca-wifi-host-cmn/wmi/src/wmi_unified_11be_api.c (revision c7eaf5ac989ac229214b8317faa3e981d261e7db)
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 #endif /* WLAN_FEATURE_11BE */
133 
134 QDF_STATUS
135 wmi_extract_mgmt_rx_ml_cu_params(wmi_unified_t wmi, void *evt_buf,
136 				 struct mlo_mgmt_ml_info *cu_params)
137 {
138 	if (wmi->ops->extract_mgmt_rx_ml_cu_params)
139 		return wmi->ops->extract_mgmt_rx_ml_cu_params(
140 				wmi, evt_buf, cu_params);
141 
142 	return QDF_STATUS_E_FAILURE;
143 }
144 
145 QDF_STATUS wmi_send_mlo_link_removal_cmd(
146 		wmi_unified_t wmi,
147 		const struct mlo_link_removal_cmd_params *param)
148 {
149 	if (wmi->ops->send_mlo_link_removal_cmd)
150 		return wmi->ops->send_mlo_link_removal_cmd(wmi, param);
151 
152 	return QDF_STATUS_E_FAILURE;
153 }
154 
155 QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param(
156 		struct wmi_unified *wmi,
157 		void *buf,
158 		struct mlo_link_removal_evt_params *params)
159 {
160 	if (wmi->ops->extract_mlo_link_removal_evt_fixed_param)
161 		return wmi->ops->extract_mlo_link_removal_evt_fixed_param(
162 							wmi, buf, params);
163 
164 	return QDF_STATUS_E_FAILURE;
165 }
166 
167 QDF_STATUS wmi_extract_mlo_link_removal_tbtt_update(
168 		struct wmi_unified *wmi,
169 		void *buf,
170 		struct mlo_link_removal_tbtt_info *tbtt_info)
171 {
172 	if (wmi->ops->extract_mlo_link_removal_tbtt_update)
173 		return wmi->ops->extract_mlo_link_removal_tbtt_update(
174 							wmi, buf, tbtt_info);
175 
176 	return QDF_STATUS_E_FAILURE;
177 }
178 
179 QDF_STATUS wmi_extract_mgmt_rx_mlo_link_removal_info(
180 		struct wmi_unified *wmi,
181 		void *buf,
182 		struct mgmt_rx_mlo_link_removal_info *link_removal_info,
183 		int num_link_removal_info)
184 {
185 	if (wmi->ops->extract_mgmt_rx_mlo_link_removal_info)
186 		return wmi->ops->extract_mgmt_rx_mlo_link_removal_info(
187 							wmi, buf,
188 							link_removal_info,
189 							num_link_removal_info);
190 
191 	return QDF_STATUS_E_FAILURE;
192 }
193