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