xref: /wlan-dirver/qcacld-3.0/components/umac/mlme/sap/ll_sap/dispatcher/inc/wlan_ll_sap_api.h (revision 522f7f2a380901f03280351179c17096d70d465a)
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
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
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
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
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 #else
166 static inline wlan_bs_req_id
167 wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev)
168 {
169 	return 0;
170 }
171 
172 static inline QDF_STATUS
173 wlan_ll_lt_sap_switch_bearer_to_ble(
174 				struct wlan_objmgr_psoc *psoc,
175 				struct wlan_bearer_switch_request *bs_request)
176 {
177 	return QDF_STATUS_E_FAILURE;
178 }
179 
180 static inline QDF_STATUS
181 wlan_ll_sap_switch_bearer_on_sta_connect_start(struct wlan_objmgr_psoc *psoc,
182 					       qdf_list_t *scan_list,
183 					       uint8_t vdev_id,
184 					       wlan_cm_id cm_id)
185 
186 {
187 	return QDF_STATUS_E_ALREADY;
188 }
189 
190 static inline QDF_STATUS
191 wlan_ll_sap_switch_bearer_on_sta_connect_complete(struct wlan_objmgr_psoc *psoc,
192 						  uint8_t vdev_id)
193 {
194 	return QDF_STATUS_SUCCESS;
195 }
196 
197 static inline
198 QDF_STATUS wlan_ll_lt_sap_get_freq_list(
199 				struct wlan_objmgr_psoc *psoc,
200 				struct wlan_ll_lt_sap_freq_list *freq_list,
201 				uint8_t vdev_id)
202 {
203 	return QDF_STATUS_E_FAILURE;
204 }
205 
206 static inline
207 qdf_freq_t wlan_ll_lt_sap_override_freq(struct wlan_objmgr_psoc *psoc,
208 					uint32_t vdev_id,
209 					qdf_freq_t chan_freq)
210 {
211 	return chan_freq;
212 }
213 #endif /* WLAN_FEATURE_LL_LT_SAP */
214 #endif /* _WLAN_LL_LT_SAP_API_H_ */
215