/* * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ #ifndef _WLAN_CFR_TGT_API_H_ #define _WLAN_CFR_TGT_API_H_ #include #include #include #include /* tgt layer has APIs in application, to access functions in target * through tx_ops. */ /** * tgt_cfr_init_pdev() - API that registers CFR to handlers. * @pdev: pointer to pdev_object * * Return: success/failure of init */ QDF_STATUS tgt_cfr_init_pdev(struct wlan_objmgr_pdev *pdev); /** * tgt_cfr_deinit_pdev() - API that de-registers CFR to handlers. * @pdev: pointer to pdev_object * * Return: success/failure of de-init */ QDF_STATUS tgt_cfr_deinit_pdev(struct wlan_objmgr_pdev *pdev); /** * tgt_cfr_get_target_type() - API to determine target type. * @psoc: pointer to psoc_object * * Return: enum value of target type */ int tgt_cfr_get_target_type(struct wlan_objmgr_psoc *psoc); /** * tgt_cfr_start_capture() - API to start cfr capture on a peer. * @pdev: pointer to pdev_object * @peer: pointer to peer_object * @cfr_params: pointer to config cfr_params * * Return: success/failure of start capture */ int tgt_cfr_start_capture(struct wlan_objmgr_pdev *pdev, struct wlan_objmgr_peer *peer, struct cfr_capture_params *cfr_params); /** * tgt_cfr_stop_capture() - API to stop cfr capture on a peer. * @pdev: pointer to pdev_object * @peer: pointer to peer_object * * Return: success/failure of stop capture */ int tgt_cfr_stop_capture(struct wlan_objmgr_pdev *pdev, struct wlan_objmgr_peer *peer); /** * tgt_cfr_validate_period() - API to validate cfr period configured by user * @psoc: pointer to the psoc object * @period: period value to validate * * Return: success/failure of periodicity validation */ int tgt_cfr_validate_period(struct wlan_objmgr_psoc *psoc, u_int32_t period); /** * tgt_cfr_enable_cfr_timer() - API to enable cfr timer * @pdev: pointer to pdev_object * @cfr_timer: Amount of time this timer has to run. If 0, it disables timer. * * Return: success/failure of timer enable */ int tgt_cfr_enable_cfr_timer(struct wlan_objmgr_pdev *pdev, uint32_t cfr_timer); /** * tgt_cfr_support_set() - API to set cfr support * @psoc: pointer to psoc_object * @value: value to be set */ void tgt_cfr_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value); /** * tgt_cfr_capture_count_support_set() - API to set capture_count support * @psoc: pointer to psoc_object * @value: value to be set * * Return: success/failure */ QDF_STATUS tgt_cfr_capture_count_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value); /** * tgt_cfr_mo_marking_support_set() - API to set MO marking support * @psoc: pointer to psoc_object * @value: value to be set * * Return: success/failure */ QDF_STATUS tgt_cfr_mo_marking_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value); /** * tgt_cfr_aoa_for_rcc_support_set() - API to set AoA for RCC support * @psoc: pointer to psoc_object * @value: value to be set * * Return: success/failure */ QDF_STATUS tgt_cfr_aoa_for_rcc_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value); /** * tgt_cfr_info_send() - API to send cfr info * @pdev: pointer to pdev_object * @head: pointer to cfr info head * @hlen: head len * @data: pointer to cfr info data * @dlen: data len * @tail: pointer to cfr info tail * @tlen: tail len * * Return: success/failure of cfr info send */ uint32_t tgt_cfr_info_send(struct wlan_objmgr_pdev *pdev, void *head, size_t hlen, void *data, size_t dlen, void *tail, size_t tlen); #ifdef WLAN_ENH_CFR_ENABLE /** * tgt_cfr_config_rcc() - API to set RCC * @pdev: pointer to pdev_object * @rcc_param: rcc configurations * * Return: success / failure */ QDF_STATUS tgt_cfr_config_rcc(struct wlan_objmgr_pdev *pdev, struct cfr_rcc_param *rcc_param); /** * tgt_cfr_start_lut_age_timer() - API to start timer to flush aged out LUT * entries * @pdev: pointer to pdev_object * * Return: None */ void tgt_cfr_start_lut_age_timer(struct wlan_objmgr_pdev *pdev); /** * tgt_cfr_stop_lut_age_timer() - API to stop timer to flush aged out LUT * entries * @pdev: pointer to pdev_object * * Return: None */ void tgt_cfr_stop_lut_age_timer(struct wlan_objmgr_pdev *pdev); /** * tgt_cfr_default_ta_ra_cfg() - API to configure default values in TA_RA mode * entries * @pdev: pointer to pdev_object * @rcc_param: * @allvalid: * @reset_cfg: * * Return: none */ void tgt_cfr_default_ta_ra_cfg(struct wlan_objmgr_pdev *pdev, struct cfr_rcc_param *rcc_param, bool allvalid, uint16_t reset_cfg); /** * tgt_cfr_dump_lut_enh() - Print all LUT entries * @pdev: pointer to pdev_object */ void tgt_cfr_dump_lut_enh(struct wlan_objmgr_pdev *pdev); /** * tgt_cfr_rx_tlv_process() - Process PPDU status TLVs * @pdev: pointer to pdev_object * @nbuf: pointer to cdp_rx_indication_ppdu */ void tgt_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf); /** * tgt_cfr_update_global_cfg() - Update global config after successful commit * @pdev: pointer to pdev_object */ void tgt_cfr_update_global_cfg(struct wlan_objmgr_pdev *pdev); /** * tgt_cfr_subscribe_ppdu_desc() - Target interface to * subscribe/unsubscribe WDI PPDU desc event * @pdev: pointer to pdev_object * @is_subscribe: subscribe or unsubscribei * * return QDF status */ QDF_STATUS tgt_cfr_subscribe_ppdu_desc(struct wlan_objmgr_pdev *pdev, bool is_subscribe); #endif #endif