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