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