xref: /wlan-driver/qcacld-3.0/components/umac/mlme/sap/ll_sap/dispatcher/inc/wlan_ll_sap_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 /**
18  * DOC: contains ll_lt_sap API definitions specific to the bearer
19  * switch, channel selection functionalities
20  */
21 
22 #ifndef _WLAN_LL_LT_SAP_API_H_
23 #define _WLAN_LL_LT_SAP_API_H_
24 
25 #include <wlan_cmn.h>
26 #include <wlan_objmgr_vdev_obj.h>
27 #include "wlan_objmgr_psoc_obj.h"
28 #include "wlan_ll_sap_public_structs.h"
29 #include "wlan_cm_public_struct.h"
30 #include "wlan_policy_mgr_public_struct.h"
31 
32 #ifdef WLAN_FEATURE_LL_LT_SAP
33 #ifdef WLAN_FEATURE_BEARER_SWITCH
34 /**
35  * wlan_ll_lt_sap_bearer_switch_get_id() - Get the request id for bearer switch
36  * request
37  * @psoc: Pointer to psoc
38  * Return: Bearer switch request id
39  */
40 wlan_bs_req_id
41 wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_psoc *psoc);
42 
43 /**
44  * wlan_ll_lt_sap_switch_bearer_to_ble() - Switch audio transport to BLE
45  * @psoc: Pointer to psoc
46  * @bs_request: Pointer to bearer switch request
47  * Return: QDF_STATUS_SUCCESS on successful bearer switch else failure
48  */
49 QDF_STATUS wlan_ll_lt_sap_switch_bearer_to_ble(
50 				struct wlan_objmgr_psoc *psoc,
51 				struct wlan_bearer_switch_request *bs_request);
52 
53 /**
54  * wlan_ll_sap_switch_bearer_on_sta_connect_start() - Switch bearer during
55  * station connection start
56  * @psoc: Pointer to psoc
57  * @scan_list: Pointer to the candidate list
58  * @vdev_id: Vdev id of the requesting vdev
59  * @cm_id: connection manager id of the current connect request
60  * Return: QDF_STATUS_SUCCESS on successful bearer switch
61  *         QDF_STATUS_E_ALREADY, if bearer switch is not required
62  *         else failure
63  */
64 QDF_STATUS wlan_ll_sap_switch_bearer_on_sta_connect_start(
65 						struct wlan_objmgr_psoc *psoc,
66 						qdf_list_t *scan_list,
67 						uint8_t vdev_id,
68 						wlan_cm_id cm_id);
69 #else
70 static inline wlan_bs_req_id
wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev * vdev)71 wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev)
72 {
73 	return 0;
74 }
75 
76 static inline QDF_STATUS
wlan_ll_lt_sap_switch_bearer_to_ble(struct wlan_objmgr_psoc * psoc,struct wlan_bearer_switch_request * bs_request)77 wlan_ll_lt_sap_switch_bearer_to_ble(
78 				struct wlan_objmgr_psoc *psoc,
79 				struct wlan_bearer_switch_request *bs_request)
80 {
81 	return QDF_STATUS_E_FAILURE;
82 }
83 
84 static inline QDF_STATUS
wlan_ll_sap_switch_bearer_on_sta_connect_start(struct wlan_objmgr_psoc * psoc,qdf_list_t * scan_list,uint8_t vdev_id,wlan_cm_id cm_id)85 wlan_ll_sap_switch_bearer_on_sta_connect_start(struct wlan_objmgr_psoc *psoc,
86 					       qdf_list_t *scan_list,
87 					       uint8_t vdev_id,
88 					       wlan_cm_id cm_id)
89 
90 {
91 	return QDF_STATUS_E_ALREADY;
92 }
93 
94 static inline QDF_STATUS
wlan_ll_sap_switch_bearer_on_sta_connect_complete(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)95 wlan_ll_sap_switch_bearer_on_sta_connect_complete(struct wlan_objmgr_psoc *psoc,
96 						  uint8_t vdev_id)
97 {
98 	return QDF_STATUS_SUCCESS;
99 }
100 #endif
101 
102 /**
103  * wlan_ll_sap_switch_bearer_on_sta_connect_complete() - Switch bearer during
104  * station connection complete
105  * @psoc: Pointer to psoc
106  * @vdev_id: Vdev id of the requesting vdev
107  * Return: QDF_STATUS_SUCCESS on successful bearer switch
108  *         QDF_STATUS_E_ALREADY, if bearer switch is not required
109  *         else failure
110  */
111 QDF_STATUS wlan_ll_sap_switch_bearer_on_sta_connect_complete(
112 						struct wlan_objmgr_psoc *psoc,
113 						uint8_t vdev_id);
114 
115 /**
116  * wlan_ll_lt_sap_get_freq_list() - Get frequency list for LL_LT_SAP
117  * @psoc: Pointer to psoc object
118  * @freq_list: Pointer to wlan_ll_lt_sap_freq_list structure
119  * @vdev_id: Vdev Id
120  *
121  * Return: QDF_STATUS
122  */
123 QDF_STATUS wlan_ll_lt_sap_get_freq_list(
124 				struct wlan_objmgr_psoc *psoc,
125 				struct wlan_ll_lt_sap_freq_list *freq_list,
126 				uint8_t vdev_id);
127 
128 /**
129  * wlan_ll_lt_sap_override_freq() - Return frequency on which LL_LT_SAP can
130  * be started
131  * @psoc: Pointer to psoc object
132  * @vdev_id: Vdev Id of LL_LT_SAP
133  * @chan_freq: current frequency of ll_lt_sap
134  *
135  * This function checks if ll_lt_sap can come up on the given frequency, if it
136  * can come up on given frequency then return same frequency else return a
137  * different frequency on which ll_lt_sap can come up
138  *
139  * Return: valid ll_lt_sap frequency
140  */
141 qdf_freq_t wlan_ll_lt_sap_override_freq(struct wlan_objmgr_psoc *psoc,
142 					uint32_t vdev_id,
143 					qdf_freq_t chan_freq);
144 
145 /**
146  * wlan_get_ll_lt_sap_restart_freq() - Get restart frequency on which LL_LT_SAP
147  * can be re-started
148  * @pdev: Pointer to pdev object
149  * @chan_freq: current frequency of ll_lt_sap
150  * @vdev_id: Vdev Id of LL_LT_SAP
151  * @csa_reason: Reason for the CSA
152  *
153  * This function checks if ll_lt_sap needs to be restarted, if yes, it returns
154  * new valid frequency on which ll_lt_sap can be restarted else return same
155  * frequency.
156  *
157  * Return: valid ll_lt_sap frequency
158  */
159 qdf_freq_t
160 wlan_get_ll_lt_sap_restart_freq(struct wlan_objmgr_pdev *pdev,
161 				qdf_freq_t chan_freq,
162 				uint8_t vdev_id,
163 				enum sap_csa_reason_code *csa_reason);
164 
165 /**
166  * wlan_ll_sap_fw_bearer_switch_req() - FW bearer switch request
167  * @psoc: Pointer to psoc object
168  * @req_type: Bearer switch request type
169  *
170  * Return: QDF_STATUS
171  */
172 QDF_STATUS
173 wlan_ll_sap_fw_bearer_switch_req(struct wlan_objmgr_psoc *psoc,
174 				 enum bearer_switch_req_type req_type);
175 #else
176 static inline wlan_bs_req_id
wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev * vdev)177 wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev)
178 {
179 	return 0;
180 }
181 
182 static inline QDF_STATUS
wlan_ll_lt_sap_switch_bearer_to_ble(struct wlan_objmgr_psoc * psoc,struct wlan_bearer_switch_request * bs_request)183 wlan_ll_lt_sap_switch_bearer_to_ble(
184 				struct wlan_objmgr_psoc *psoc,
185 				struct wlan_bearer_switch_request *bs_request)
186 {
187 	return QDF_STATUS_E_FAILURE;
188 }
189 
190 static inline QDF_STATUS
wlan_ll_sap_switch_bearer_on_sta_connect_start(struct wlan_objmgr_psoc * psoc,qdf_list_t * scan_list,uint8_t vdev_id,wlan_cm_id cm_id)191 wlan_ll_sap_switch_bearer_on_sta_connect_start(struct wlan_objmgr_psoc *psoc,
192 					       qdf_list_t *scan_list,
193 					       uint8_t vdev_id,
194 					       wlan_cm_id cm_id)
195 
196 {
197 	return QDF_STATUS_E_ALREADY;
198 }
199 
200 static inline QDF_STATUS
wlan_ll_sap_switch_bearer_on_sta_connect_complete(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)201 wlan_ll_sap_switch_bearer_on_sta_connect_complete(struct wlan_objmgr_psoc *psoc,
202 						  uint8_t vdev_id)
203 {
204 	return QDF_STATUS_SUCCESS;
205 }
206 
207 static inline
wlan_ll_lt_sap_get_freq_list(struct wlan_objmgr_psoc * psoc,struct wlan_ll_lt_sap_freq_list * freq_list,uint8_t vdev_id)208 QDF_STATUS wlan_ll_lt_sap_get_freq_list(
209 				struct wlan_objmgr_psoc *psoc,
210 				struct wlan_ll_lt_sap_freq_list *freq_list,
211 				uint8_t vdev_id)
212 {
213 	return QDF_STATUS_E_FAILURE;
214 }
215 
216 static inline
wlan_ll_lt_sap_override_freq(struct wlan_objmgr_psoc * psoc,uint32_t vdev_id,qdf_freq_t chan_freq)217 qdf_freq_t wlan_ll_lt_sap_override_freq(struct wlan_objmgr_psoc *psoc,
218 					uint32_t vdev_id,
219 					qdf_freq_t chan_freq)
220 {
221 	return chan_freq;
222 }
223 
224 static inline
wlan_get_ll_lt_sap_restart_freq(struct wlan_objmgr_pdev * pdev,qdf_freq_t chan_freq,uint8_t vdev_id,enum sap_csa_reason_code * csa_reason)225 qdf_freq_t wlan_get_ll_lt_sap_restart_freq(struct wlan_objmgr_pdev *pdev,
226 					   qdf_freq_t chan_freq,
227 					   uint8_t vdev_id,
228 					   enum sap_csa_reason_code *csa_reason)
229 {
230 	return 0;
231 }
232 #endif /* WLAN_FEATURE_LL_LT_SAP */
233 #endif /* _WLAN_LL_LT_SAP_API_H_ */
234