1 /* 2 * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 #ifndef _WLAN_CFR_TGT_API_H_ 21 #define _WLAN_CFR_TGT_API_H_ 22 23 #include <wlan_objmgr_peer_obj.h> 24 #include <wlan_objmgr_pdev_obj.h> 25 #include <wlan_objmgr_cmn.h> 26 #include <qdf_types.h> 27 28 /* tgt layer has APIs in application, to access functions in target 29 * through tx_ops. 30 */ 31 32 /** 33 * tgt_cfr_init_pdev() - API that registers CFR to handlers. 34 * @pdev: pointer to pdev_object 35 * 36 * Return: success/failure of init 37 */ 38 QDF_STATUS tgt_cfr_init_pdev(struct wlan_objmgr_pdev *pdev); 39 40 /** 41 * tgt_cfr_deinit_pdev() - API that de-registers CFR to handlers. 42 * @pdev: pointer to pdev_object 43 * 44 * Return: success/failure of de-init 45 */ 46 QDF_STATUS tgt_cfr_deinit_pdev(struct wlan_objmgr_pdev *pdev); 47 48 /** 49 * tgt_cfr_get_target_type() - API to determine target type. 50 * @psoc: pointer to psoc_object 51 * 52 * Return: enum value of target type 53 */ 54 int tgt_cfr_get_target_type(struct wlan_objmgr_psoc *psoc); 55 56 /** 57 * tgt_cfr_start_capture() - API to start cfr capture on a peer. 58 * @pdev: pointer to pdev_object 59 * @peer: pointer to peer_object 60 * @cfr_params: pointer to config cfr_params 61 * 62 * Return: success/failure of start capture 63 */ 64 int tgt_cfr_start_capture(struct wlan_objmgr_pdev *pdev, 65 struct wlan_objmgr_peer *peer, 66 struct cfr_capture_params *cfr_params); 67 68 /** 69 * tgt_cfr_stop_capture() - API to stop cfr capture on a peer. 70 * @pdev: pointer to pdev_object 71 * @peer: pointer to peer_object 72 * 73 * Return: success/failure of stop capture 74 */ 75 int tgt_cfr_stop_capture(struct wlan_objmgr_pdev *pdev, 76 struct wlan_objmgr_peer *peer); 77 78 /** 79 * tgt_cfr_validate_period() - API to validate cfr period configured by user 80 * @psoc: pointer to the psoc object 81 * @period: period value to validate 82 * 83 * Return: success/failure of periodicity validation 84 */ 85 int tgt_cfr_validate_period(struct wlan_objmgr_psoc *psoc, u_int32_t period); 86 87 /** 88 * tgt_cfr_enable_cfr_timer() - API to enable cfr timer 89 * @pdev: pointer to pdev_object 90 * @cfr_timer: Amount of time this timer has to run. If 0, it disables timer. 91 * 92 * Return: success/failure of timer enable 93 */ 94 int 95 tgt_cfr_enable_cfr_timer(struct wlan_objmgr_pdev *pdev, uint32_t cfr_timer); 96 97 /** 98 * tgt_cfr_support_set() - API to set cfr support 99 * @psoc: pointer to psoc_object 100 * @value: value to be set 101 */ 102 void tgt_cfr_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value); 103 104 /** 105 * tgt_cfr_capture_count_support_set() - API to set capture_count support 106 * @psoc: pointer to psoc_object 107 * @value: value to be set 108 * 109 * Return: success/failure 110 */ 111 QDF_STATUS 112 tgt_cfr_capture_count_support_set(struct wlan_objmgr_psoc *psoc, 113 uint32_t value); 114 115 /** 116 * tgt_cfr_mo_marking_support_set() - API to set MO marking support 117 * @psoc: pointer to psoc_object 118 * @value: value to be set 119 * 120 * Return: success/failure 121 */ 122 QDF_STATUS 123 tgt_cfr_mo_marking_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value); 124 125 /** 126 * tgt_cfr_aoa_for_rcc_support_set() - API to set AoA for RCC support 127 * @psoc: pointer to psoc_object 128 * @value: value to be set 129 * 130 * Return: success/failure 131 */ 132 QDF_STATUS 133 tgt_cfr_aoa_for_rcc_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value); 134 135 /** 136 * tgt_cfr_info_send() - API to send cfr info 137 * @pdev: pointer to pdev_object 138 * @head: pointer to cfr info head 139 * @hlen: head len 140 * @data: pointer to cfr info data 141 * @dlen: data len 142 * @tail: pointer to cfr info tail 143 * @tlen: tail len 144 * 145 * Return: success/failure of cfr info send 146 */ 147 uint32_t tgt_cfr_info_send(struct wlan_objmgr_pdev *pdev, void *head, 148 size_t hlen, void *data, size_t dlen, void *tail, 149 size_t tlen); 150 151 #ifdef WLAN_ENH_CFR_ENABLE 152 /** 153 * tgt_cfr_config_rcc() - API to set RCC 154 * @pdev: pointer to pdev_object 155 * @rcc_param: rcc configurations 156 * 157 * Return: success / failure 158 */ 159 QDF_STATUS tgt_cfr_config_rcc(struct wlan_objmgr_pdev *pdev, 160 struct cfr_rcc_param *rcc_param); 161 162 /** 163 * tgt_cfr_start_lut_age_timer() - API to start timer to flush aged out LUT 164 * entries 165 * @pdev: pointer to pdev_object 166 * 167 * Return: None 168 */ 169 void tgt_cfr_start_lut_age_timer(struct wlan_objmgr_pdev *pdev); 170 171 /** 172 * tgt_cfr_stop_lut_age_timer() - API to stop timer to flush aged out LUT 173 * entries 174 * @pdev: pointer to pdev_object 175 * 176 * Return: None 177 */ 178 void tgt_cfr_stop_lut_age_timer(struct wlan_objmgr_pdev *pdev); 179 180 /** 181 * tgt_cfr_default_ta_ra_cfg() - API to configure default values in TA_RA mode 182 * entries 183 * @pdev: pointer to pdev_object 184 * @rcc_param: 185 * @allvalid: 186 * @reset_cfg: 187 * 188 * Return: none 189 */ 190 void tgt_cfr_default_ta_ra_cfg(struct wlan_objmgr_pdev *pdev, 191 struct cfr_rcc_param *rcc_param, 192 bool allvalid, uint16_t reset_cfg); 193 194 /** 195 * tgt_cfr_dump_lut_enh() - Print all LUT entries 196 * @pdev: pointer to pdev_object 197 */ 198 void tgt_cfr_dump_lut_enh(struct wlan_objmgr_pdev *pdev); 199 200 /** 201 * tgt_cfr_rx_tlv_process() - Process PPDU status TLVs 202 * @pdev: pointer to pdev_object 203 * @nbuf: pointer to cdp_rx_indication_ppdu 204 */ 205 void tgt_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf); 206 207 /** 208 * tgt_cfr_update_global_cfg() - Update global config after successful commit 209 * @pdev: pointer to pdev_object 210 */ 211 void tgt_cfr_update_global_cfg(struct wlan_objmgr_pdev *pdev); 212 213 /** 214 * tgt_cfr_subscribe_ppdu_desc() - Target interface to 215 * subscribe/unsubscribe WDI PPDU desc event 216 * @pdev: pointer to pdev_object 217 * @is_subscribe: subscribe or unsubscribei 218 * 219 * return QDF status 220 */ 221 QDF_STATUS tgt_cfr_subscribe_ppdu_desc(struct wlan_objmgr_pdev *pdev, 222 bool is_subscribe); 223 #endif 224 #endif 225