xref: /wlan-dirver/qca-wifi-host-cmn/wmi/src/wmi_unified_11be_api.c (revision 70a19e16789e308182f63b15c75decec7bf0b342)
1 /*
2  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2022 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 {
67 	if (wmi->ops->send_mlo_peer_tid_to_link_map)
68 		return wmi->ops->send_mlo_peer_tid_to_link_map(wmi, params);
69 
70 	return QDF_STATUS_E_FAILURE;
71 }
72 
73 QDF_STATUS wmi_send_mlo_vdev_tid_to_link_map_cmd(
74 		wmi_unified_t wmi,
75 		struct wmi_host_tid_to_link_map_ap_params *params)
76 {
77 	if (wmi->ops->send_mlo_vdev_tid_to_link_map)
78 		return wmi->ops->send_mlo_vdev_tid_to_link_map(wmi, params);
79 
80 	return QDF_STATUS_E_FAILURE;
81 }
82 
83 QDF_STATUS
84 wmi_extract_mlo_vdev_tid_to_link_map_event(
85 		wmi_unified_t wmi, void *evt_buf,
86 		struct mlo_vdev_host_tid_to_link_map_resp *resp)
87 {
88 	if (wmi->ops->extract_mlo_vdev_tid_to_link_map_event) {
89 		return wmi->ops->extract_mlo_vdev_tid_to_link_map_event(wmi,
90 									evt_buf,
91 									resp);
92 	}
93 	return QDF_STATUS_E_FAILURE;
94 }
95 
96 QDF_STATUS
97 wmi_extract_mlo_vdev_bcast_tid_to_link_map_event(
98 				     wmi_unified_t wmi,
99 				     void *evt_buf,
100 				     struct mlo_bcast_t2lm_info *bcast)
101 {
102 	if (wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event) {
103 		return wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event(
104 						wmi,
105 						evt_buf,
106 						bcast);
107 	}
108 	return QDF_STATUS_E_FAILURE;
109 }
110 #endif /* WLAN_FEATURE_11BE */
111 
112 QDF_STATUS
113 wmi_extract_mgmt_rx_ml_cu_params(wmi_unified_t wmi, void *evt_buf,
114 				 struct mlo_mgmt_ml_info *cu_params)
115 {
116 	if (wmi->ops->extract_mgmt_rx_ml_cu_params)
117 		return wmi->ops->extract_mgmt_rx_ml_cu_params(
118 				wmi, evt_buf, cu_params);
119 
120 	return QDF_STATUS_E_FAILURE;
121 }
122 
123 QDF_STATUS wmi_send_mlo_link_removal_cmd(
124 		wmi_unified_t wmi,
125 		const struct mlo_link_removal_cmd_params *param)
126 {
127 	if (wmi->ops->send_mlo_link_removal_cmd)
128 		return wmi->ops->send_mlo_link_removal_cmd(wmi, param);
129 
130 	return QDF_STATUS_E_FAILURE;
131 }
132 
133 QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param(
134 		struct wmi_unified *wmi,
135 		void *buf,
136 		struct mlo_link_removal_evt_params *params)
137 {
138 	if (wmi->ops->extract_mlo_link_removal_evt_fixed_param)
139 		return wmi->ops->extract_mlo_link_removal_evt_fixed_param(
140 							wmi, buf, params);
141 
142 	return QDF_STATUS_E_FAILURE;
143 }
144 
145 QDF_STATUS wmi_extract_mlo_link_removal_tbtt_update(
146 		struct wmi_unified *wmi,
147 		void *buf,
148 		struct mlo_link_removal_tbtt_info *tbtt_info)
149 {
150 	if (wmi->ops->extract_mlo_link_removal_tbtt_update)
151 		return wmi->ops->extract_mlo_link_removal_tbtt_update(
152 							wmi, buf, tbtt_info);
153 
154 	return QDF_STATUS_E_FAILURE;
155 }
156 
157 QDF_STATUS wmi_extract_mgmt_rx_mlo_link_removal_info(
158 		struct wmi_unified *wmi,
159 		void *buf,
160 		struct mgmt_rx_mlo_link_removal_info *link_removal_info,
161 		int num_link_removal_info)
162 {
163 	if (wmi->ops->extract_mgmt_rx_mlo_link_removal_info)
164 		return wmi->ops->extract_mgmt_rx_mlo_link_removal_info(
165 							wmi, buf,
166 							link_removal_info,
167 							num_link_removal_info);
168 
169 	return QDF_STATUS_E_FAILURE;
170 }
171