blob: 5ed030da216a6b55681281a4e62cd0183d263c43 [file] [log] [blame]
/*
* Copyright (c) 2016-2020 The Linux Foundation. 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.
*/
/**
* DOC: These APIs are used by DFS core functions to call lmac/offload
* functions.
*/
#ifndef _WLAN_DFS_LMAC_API_H_
#define _WLAN_DFS_LMAC_API_H_
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_pdev_obj.h>
/**
* lmac_get_caps() - Get DFS capabilities.
* @pdev: Pointer to PDEV structure.
* @dfs_caps: Pointer to dfs_caps structure
*/
void lmac_get_caps(struct wlan_objmgr_pdev *pdev,
struct wlan_dfs_caps *dfs_caps);
/**
* lmac_get_tsf64() - Get tsf64 value.
* @pdev: Pointer to PDEV structure.
*
* Return: tsf64 timer value.
*/
uint64_t lmac_get_tsf64(struct wlan_objmgr_pdev *pdev);
/**
* lmac_dfs_disable() - Disable DFS.
* @pdev: Pointer to PDEV structure.
* @no_cac: no_cac flag.
*/
void lmac_dfs_disable(struct wlan_objmgr_pdev *pdev, int no_cac);
/**
* lmac_dfs_enable() - Enable DFS.
* @pdev: Pointer to PDEV structure.
* @is_fastclk: fastclk value.
* @param: Pointer to wlan_dfs_phyerr_param structure.
* @dfsdomain: DFS domain.
*/
void lmac_dfs_enable(struct wlan_objmgr_pdev *pdev,
int *is_fastclk,
struct wlan_dfs_phyerr_param *param,
int dfsdomain);
/**
* lmac_dfs_get_thresholds() - Get thresholds.
* @pdev: Pointer to PDEV structure.
* @param: Pointer to wlan_dfs_phyerr_param structure.
*/
void lmac_dfs_get_thresholds(struct wlan_objmgr_pdev *pdev,
struct wlan_dfs_phyerr_param *param);
/**
* lmac_get_ah_devid() - Get ah devid.
* @pdev: Pointer to PDEV structure.
*/
uint16_t lmac_get_ah_devid(struct wlan_objmgr_pdev *pdev);
/**
* lmac_get_ext_busy() - Get ext_busy.
* @pdev: Pointer to PDEV structure.
*/
uint32_t lmac_get_ext_busy(struct wlan_objmgr_pdev *pdev);
/**
* lmac_set_use_cac_prssi() - Set use_cac_prssi value.
* @pdev: Pointer to PDEV structure.
*/
void lmac_set_use_cac_prssi(struct wlan_objmgr_pdev *pdev);
/**
* lmac_get_target_type() - Get target type.
* @pdev: Pointer to PDEV structure.
*/
uint32_t lmac_get_target_type(struct wlan_objmgr_pdev *pdev);
/**
* lmac_get_phymode_info() - Get phymode info.
* @pdev: Pointer to PDEV structure.
*/
uint32_t lmac_get_phymode_info(struct wlan_objmgr_pdev *pdev,
uint32_t chan_mode);
/**
* lmac_is_host_dfs_check_support_enabled() - Check if Host DFS confirmation
* feature is supported.
* @pdev: Pointer to PDEV structure.
*
* Return: true, host dfs check supported, else false.
*/
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
bool lmac_is_host_dfs_check_support_enabled(struct wlan_objmgr_pdev *pdev);
#else
static inline bool lmac_is_host_dfs_check_support_enabled(
struct wlan_objmgr_pdev *pdev)
{
return false;
}
#endif
/**
* lmac_dfs_is_hw_mode_switch_in_progress() - Check if HW mode switch is in
* progress.
* @pdev: Pointer to PDEV structure.
*
* Return: true if HW mode switch is in progress, else false.
*/
bool lmac_dfs_is_hw_mode_switch_in_progress(struct wlan_objmgr_pdev *pdev);
#endif /* _WLAN_DFS_LMAC_API_H_ */