blob: 2d7d7fb8252beee3ae5b8cb376288c418c7fd3e2 [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: This file has the DFS dispatcher API which is exposed to outside of DFS
* component.
*/
#ifndef _WLAN_DFS_UCFG_API_H_
#define _WLAN_DFS_UCFG_API_H_
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_pdev_obj.h>
#include <wlan_dfs_ioctl.h>
/**
* struct dfs_to_mlme - These are MLME function pointer used by DFS component.
* @pdev_component_obj_attach: Attach DFS object to PDEV.
* @pdev_component_obj_detach: Detach DFS object from PDEV.
* @pdev_get_comp_private_obj: Get DFS object from PDEV.
* @dfs_start_rcsa: Send RCSA to RootAP.
* @mlme_mark_dfs: Calls dfs_action function.
* @mlme_start_csa: Sends CSA.
* @mlme_proc_cac: Process the CAC completion event.
* @mlme_deliver_event_up_after_cac: Send a CAC timeout, VAP up event to user
* space
* @mlme_get_dfs_ch_nchans: Get number of channels in the channel
* list.
* @mlme_get_extchan: Gets the extension channel.
* @mlme_set_no_chans_available: Sets no_chans_available flag.
* @mlme_ieee2mhz: Gets Channel freq from ieee number.
* @mlme_find_dot11_channel: Find dot11 channel.
* @mlme_get_dfs_ch_channels: Get the channel list.
* @mlme_dfs_ch_flags_ext: Gets channel extension flag.
* @mlme_channel_change_by_precac: Channel change triggered by PreCAC.
* @mlme_precac_chan_change_csa: Channel change triggered by PrCAC using
* Channel Switch Announcement.
* @mlme_nol_timeout_notification: NOL timeout notification.
* @mlme_clist_update: Updates the channel list.
* @mlme_is_opmode_sta: Check if pdev opmode is STA.
* @mlme_get_cac_timeout: Gets the CAC timeout.
* @mlme_rebuild_chan_list_with_non_dfs_channel: Rebuild channels with non-dfs
* channels.
* @mlme_restart_vaps_with_non_dfs_chan: Restart vaps with non-dfs channel.
* @mlme_check_allowed_prim_chanlist: Check whether the given channel is
* present in the primary allowed channel
* list or not.
* @mlme_update_scan_channel_list: Update the scan channel list sent to FW.
* @mlme_bringdown_vaps: Bringdown vaps if no chans is present.
* @mlme_dfs_deliver_event: Deliver DFS events to user space
* @mlme_precac_chan_change_csa_for_freq:Channel change triggered by PrCAC using
* Channel Switch Announcement.
* @mlme_mark_dfs_for_freq: Mark DFS channel frequency as radar.
* @mlme_get_extchan_for_freq: Get the extension channel.
* @mlme_find_dot11_chan_for_freq: Find a channel pointer.
* @mlme_get_dfs_channels_for_freq: Get DFS channels from current channel
* list.
* @mlme_get_cac_timeout_for_freq: Get CAC timeout for a given channel
* frequency.
* @mlme_acquire_radar_mode_switch_lock: Acquire lock for radar processing over
* mode switch.
* @mlme_release_radar_mode_switch_lock: Release lock taken for radar processing
* over mode switch.
*/
struct dfs_to_mlme {
QDF_STATUS (*pdev_component_obj_attach)(struct wlan_objmgr_pdev *pdev,
enum wlan_umac_comp_id id,
void *comp_priv_obj,
QDF_STATUS status);
QDF_STATUS (*pdev_component_obj_detach)(struct wlan_objmgr_pdev *pdev,
enum wlan_umac_comp_id id,
void *comp_priv_obj);
QDF_STATUS (*dfs_start_rcsa)(struct wlan_objmgr_pdev *pdev,
bool *wait_for_csa);
#ifdef CONFIG_CHAN_NUM_API
QDF_STATUS (*mlme_mark_dfs)(struct wlan_objmgr_pdev *pdev,
uint8_t ieee,
uint16_t freq,
uint8_t vhtop_ch_freq_seg2,
uint64_t flags);
#endif
#ifdef CONFIG_CHAN_FREQ_API
QDF_STATUS (*mlme_mark_dfs_for_freq)(struct wlan_objmgr_pdev *pdev,
uint8_t ieee,
uint16_t freq,
uint16_t ic_mhz_freq_seg2,
uint64_t flags);
#endif
#ifdef CONFIG_CHAN_NUM_API
QDF_STATUS (*mlme_start_csa)(struct wlan_objmgr_pdev *pdev,
uint8_t ieee_chan, uint16_t freq,
uint8_t cfreq2, uint64_t flags);
#endif
#ifdef CONFIG_CHAN_FREQ_API
QDF_STATUS (*mlme_start_csa_for_freq)(struct wlan_objmgr_pdev *pdev,
uint8_t ieee_chan, uint16_t freq,
uint16_t cfreq2, uint64_t flags);
#endif
QDF_STATUS (*mlme_proc_cac)(struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*mlme_deliver_event_up_after_cac)(
struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*mlme_get_dfs_ch_nchans)(struct wlan_objmgr_pdev *pdev,
int *nchans);
#ifdef CONFIG_CHAN_NUM_API
QDF_STATUS (*mlme_get_extchan)(struct wlan_objmgr_pdev *pdev,
uint16_t *dfs_ch_freq,
uint64_t *dfs_ch_flags,
uint16_t *dfs_ch_flagext,
uint8_t *dfs_ch_ieee,
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
#endif
#ifdef CONFIG_CHAN_FREQ_API
QDF_STATUS (*mlme_get_extchan_for_freq)(struct wlan_objmgr_pdev *pdev,
uint16_t *dfs_ch_freq,
uint64_t *dfs_ch_flags,
uint16_t *dfs_ch_flagext,
uint8_t *dfs_ch_ieee,
uint8_t *dfs_vhtop_ch_freq_seg1,
uint8_t *dfs_vhtop_ch_freq_seg2,
uint16_t *dfs_ch_mhz_freq_seg1,
uint16_t *dfs_ch_mhz_freq_seg2);
#endif
QDF_STATUS (*mlme_set_no_chans_available)(struct wlan_objmgr_pdev *pdev,
int val);
QDF_STATUS (*mlme_ieee2mhz)(struct wlan_objmgr_pdev *pdev,
int ieee,
uint64_t flag,
int *freq);
#ifdef CONFIG_CHAN_NUM_API
QDF_STATUS (*mlme_find_dot11_channel)(struct wlan_objmgr_pdev *pdev,
uint8_t ieee,
uint8_t des_cfreq2,
int mode,
uint16_t *dfs_ch_freq,
uint64_t *dfs_ch_flags,
uint16_t *dfs_ch_flagext,
uint8_t *dfs_ch_ieee,
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
#endif
#ifdef CONFIG_CHAN_FREQ_API
QDF_STATUS (*mlme_find_dot11_chan_for_freq)(struct wlan_objmgr_pdev *,
uint16_t freq,
uint16_t des_cfreq2_mhz,
int mode,
uint16_t *dfs_ch_freq,
uint64_t *dfs_ch_flags,
uint16_t *dfs_ch_flagext,
uint8_t *dfs_ch_ieee,
uint8_t *dfs_ch_freq_seg1,
uint8_t *dfs_ch_freq_seg2,
uint16_t *dfs_cfreq1_mhz,
uint16_t *dfs_cfreq2_mhz);
#endif
#ifdef CONFIG_CHAN_NUM_API
QDF_STATUS (*mlme_get_dfs_ch_channels)(struct wlan_objmgr_pdev *pdev,
uint16_t *dfs_ch_freq,
uint64_t *dfs_ch_flags,
uint16_t *dfs_ch_flagext,
uint8_t *dfs_ch_ieee,
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
uint8_t *dfs_ch_vhtop_ch_freq_seg2,
int index);
#endif
#ifdef CONFIG_CHAN_FREQ_API
QDF_STATUS (*mlme_get_dfs_channels_for_freq)(
struct wlan_objmgr_pdev *pdev,
uint16_t *dfs_chan_freq,
uint64_t *dfs_chan_flags,
uint16_t *dfs_chan_flagext,
uint8_t *dfs_chan_ieee,
uint8_t *dfs_chan_vhtop_ch_freq_seg1,
uint8_t *dfs_chan_vhtop_ch_freq_seg2,
uint16_t *dfs_chan_mhz_freq_seg1,
uint16_t *dfs_chan_mhz_freq_seg2,
int index);
#endif
QDF_STATUS (*mlme_dfs_ch_flags_ext)(struct wlan_objmgr_pdev *pdev,
uint16_t *flag_ext);
QDF_STATUS (*mlme_channel_change_by_precac)(
struct wlan_objmgr_pdev *pdev);
#ifdef WLAN_DFS_PRECAC_AUTO_CHAN_SUPPORT
#ifdef CONFIG_CHAN_FREQ_API
QDF_STATUS
(*mlme_precac_chan_change_csa_for_freq)(struct wlan_objmgr_pdev *,
uint16_t des_chan_freq,
enum wlan_phymode des_mode);
#endif
#ifdef CONFIG_CHAN_NUM_API
QDF_STATUS
(*mlme_precac_chan_change_csa)(struct wlan_objmgr_pdev *,
uint8_t des_chan,
enum wlan_phymode des_mode);
#endif
#endif
QDF_STATUS (*mlme_nol_timeout_notification)(
struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*mlme_clist_update)(struct wlan_objmgr_pdev *pdev,
void *nollist,
int nentries);
bool (*mlme_is_opmode_sta)(struct wlan_objmgr_pdev *pdev);
#ifdef CONFIG_CHAN_NUM_API
QDF_STATUS (*mlme_get_cac_timeout)(struct wlan_objmgr_pdev *pdev,
uint16_t dfs_ch_freq,
uint8_t c_vhtop_ch_freq_seg2,
uint64_t dfs_ch_flags,
int *cac_timeout);
#endif
#ifdef CONFIG_CHAN_FREQ_API
QDF_STATUS
(*mlme_get_cac_timeout_for_freq)(struct wlan_objmgr_pdev *pdev,
uint16_t dfs_ch_freq,
uint16_t c_vhtop_ch_freq_seg2,
uint64_t dfs_ch_flags,
int *cac_timeout);
#endif
QDF_STATUS (*mlme_rebuild_chan_list_with_non_dfs_channels)
(struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*mlme_restart_vaps_with_non_dfs_chan)
(struct wlan_objmgr_pdev *pdev, int no_chans_avail);
bool (*mlme_check_allowed_prim_chanlist)
(struct wlan_objmgr_pdev *pdev, uint32_t chan);
QDF_STATUS (*mlme_update_scan_channel_list)
(struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*mlme_bringdown_vaps)
(struct wlan_objmgr_pdev *pdev);
void (*mlme_dfs_deliver_event)
(struct wlan_objmgr_pdev *pdev,
uint16_t freq,
enum WLAN_DFS_EVENTS event);
void (*mlme_acquire_radar_mode_switch_lock)
(struct wlan_objmgr_pdev *pdev);
void (*mlme_release_radar_mode_switch_lock)
(struct wlan_objmgr_pdev *pdev);
};
extern struct dfs_to_mlme global_dfs_to_mlme;
/**
* wlan_dfs_pdev_obj_create_notification() - DFS pdev object create handler.
* @pdev: Pointer to DFS pdev object.
*/
QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev,
void *arg);
/**
* wlan_dfs_pdev_obj_destroy_notification() - DFS pdev object delete handler.
* @pdev: Pointer to DFS pdev object.
*/
QDF_STATUS wlan_dfs_pdev_obj_destroy_notification(struct wlan_objmgr_pdev *pdev,
void *arg);
/**
* ucfg_dfs_is_ap_cac_timer_running() - Returns the dfs cac timer.
* @pdev: Pointer to DFS pdev object.
* @is_ap_cac_timer_running: Pointer to save dfs_cac_timer_running value.
*
* Wrapper function for dfs_is_ap_cac_timer_running().
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_is_ap_cac_timer_running(struct wlan_objmgr_pdev *pdev,
int *is_ap_cac_timer_running);
/**
* ucfg_dfs_getnol() - Wrapper function for dfs_get_nol()
* @pdev: Pointer to DFS pdev object.
* @dfs_nolinfo: Pointer to dfsreq_nolinfo structure.
*
* Wrapper function for dfs_getnol().
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_getnol(struct wlan_objmgr_pdev *pdev, void *dfs_nolinfo);
/**
* ucfg_dfs_override_cac_timeout() - Override the default CAC timeout.
* @pdev: Pointer to DFS pdev object.
* @cac_timeout: CAC timeout value.
*
* Wrapper function for dfs_override_cac_timeout().
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_override_cac_timeout(struct wlan_objmgr_pdev *pdev,
int cac_timeout, int *status);
/**
* ucfg_dfs_get_override_cac_timeout() - Get override CAC timeout value.
* @pdev: Pointer to DFS pdev object.
* @cac_timeout: Pointer to save the CAC timeout value.
*
* Wrapper function for dfs_get_override_cac_timeout().
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_get_override_cac_timeout(struct wlan_objmgr_pdev *pdev,
int *cac_timeout, int *status);
/**
* ucfg_dfs_get_override_precac_timeout() - Get precac timeout.
* @pdev: Pointer to DFS pdev object.
* @precac_timeout: Get precac timeout value in this variable.
*
* Wrapper function for dfs_get_override_precac_timeout().
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_get_override_precac_timeout(struct wlan_objmgr_pdev *pdev,
int *precac_timeout);
/**
* ucfg_dfs_override_precac_timeout() - Override the default precac timeout.
* @pdev: Pointer to DFS pdev object.
* @precac_timeout: Precac timeout value.
*
* Wrapper function for dfs_override_precac_timeout().
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_override_precac_timeout(struct wlan_objmgr_pdev *pdev,
int precac_timeout);
/**
* ucfg_dfs_set_precac_enable() - Set precac enable flag.
* @pdev: Pointer to DFS pdev object.
* @value: input value for dfs_legacy_precac_ucfg flag.
*
* Wrapper function for dfs_set_precac_enable().
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_set_precac_enable(struct wlan_objmgr_pdev *pdev,
uint32_t value);
/**
* ucfg_dfs_get_legacy_precac_enable() - Get the legacy precac enable flag.
* @pdev: Pointer to DFS pdev object.
* @buff: Pointer to save precac_enable value.
*
* Wrapper function for dfs_is_legacy_precac_enabled() and returns the
* legacy precac enable flag for partial offload chipsets.
* This function called from outside of dfs component.
*/
QDF_STATUS ucfg_dfs_get_legacy_precac_enable(struct wlan_objmgr_pdev *pdev,
bool *buff);
/**
* ucfg_dfs_get_agile_precac_enable() - Get agile precac enable flag.
* @pdev: Pointer to DFS pdev object.
* @buff: Pointer to save dfs_agile_precac_ucfg value.
*
* Wrapper function for dfs_is_legacy_precac_enabled().
* This function called from outside of dfs component.
*
* Return:
* * QDF_STATUS_SUCCESS: Successfully able to get agile precac flag.
* * QDF_STATUS_E_FAILURE: Failed to get agile precac flag.
*/
QDF_STATUS ucfg_dfs_get_agile_precac_enable(struct wlan_objmgr_pdev *pdev,
bool *buff);
#ifdef WLAN_DFS_PRECAC_AUTO_CHAN_SUPPORT
/**
* ucfg_dfs_set_precac_intermediate_chan() - Set intermediate channel
* for preCAC.
* @pdev: Pointer to DFS pdev object.
* @value: Channel number of intermediate channel
*
* Wrapper function for dfs_set_precac_intermediate_chan().
* This function is called from outside of dfs component.
*
* Return:
* * QDF_STATUS_SUCCESS : Successfully set intermediate channel.
* * QDF_STATUS_E_FAILURE: Failed to set intermediate channel.
*/
QDF_STATUS ucfg_dfs_set_precac_intermediate_chan(struct wlan_objmgr_pdev *pdev,
uint32_t value);
/**
* ucfg_dfs_get_precac_intermediate_chan() - Get intermediate channel
* for preCAC.
* @pdev: Pointer to DFS pdev object.
* @buff: Pointer to Channel number of intermediate channel.
*
* Wrapper function for dfs_get_precac_intermediate_chan().
* This function is called from outside of dfs component.
*
* Return: Configured intermediate precac channel.
*/
QDF_STATUS ucfg_dfs_get_precac_intermediate_chan(struct wlan_objmgr_pdev *pdev,
int *buff);
/**
* ucfg_dfs_get_precac_chan_state() - Get precac status for the given channel.
* @pdev: Pointer to DFS pdev object.
* @precac_chan: Channel number for which precac state needs to be determined.
*
* Wrapper function for dfs_get_precac_chan_state().
* This function called from outside of dfs component.
*
* Return: Precac state of the given channel.
*/
#ifdef CONFIG_CHAN_NUM_API
enum precac_chan_state
ucfg_dfs_get_precac_chan_state(struct wlan_objmgr_pdev *pdev,
uint8_t precac_chan);
#endif
/**
* ucfg_dfs_get_precac_chan_state_for_freq() - Get precac status for the
* given channel.
* @pdev: Pointer to DFS pdev object.
* @precac_chan: Channel frequency for which precac state needs to be
* determined.
*
* Wrapper function for dfs_get_precac_chan_state().
* This function called from outside of dfs component.
*
* Return: Precac state of the given channel.
*/
#ifdef CONFIG_CHAN_FREQ_API
enum precac_chan_state
ucfg_dfs_get_precac_chan_state_for_freq(struct wlan_objmgr_pdev *pdev,
uint16_t precac_freq);
#endif
#endif
#ifdef QCA_MCL_DFS_SUPPORT
/**
* ucfg_dfs_update_config() - Update DFS user config.
* @psoc: Pointer to psoc.
* @req: DFS user config.
*
* Return: QDF_STATUS
*/
QDF_STATUS ucfg_dfs_update_config(struct wlan_objmgr_psoc *psoc,
struct dfs_user_config *req);
#else
static inline QDF_STATUS ucfg_dfs_update_config(struct wlan_objmgr_psoc *psoc,
struct dfs_user_config *req)
{
return QDF_STATUS_SUCCESS;
}
#endif
/**
* ucfg_dfs_set_override_status_timeout() - override the value of host dfs
* status wait timeout.
* @pdev: Pointer to DFS pdev object.
* @status_timeout: timeout value.
*
* Wrapper function for dfs_set_override_status_timeout().
* This function called from outside of dfs component.
*
* Return: QDF_STATUS
*/
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
QDF_STATUS ucfg_dfs_set_override_status_timeout(struct wlan_objmgr_pdev *pdev,
int status_timeout);
#else
static inline
QDF_STATUS ucfg_dfs_set_override_status_timeout(struct wlan_objmgr_pdev *pdev,
int status_timeout)
{
return QDF_STATUS_SUCCESS;
}
#endif
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(WLAN_DFS_SYNTHETIC_RADAR)
/**
* ucfg_dfs_allow_hw_pulses() - Set or unset dfs-allow_hw_pulses
* which isolates synthetic radar pulse detection from actual radar detection.
* @pdev: Pointer to DFS pdev object.
* @allow_hw_pulses: Allow synthetic pulse detection true/false.
*
* Wrapper function for dfs_set_allow_hw_pulses().
* This function called from outside of dfs component.
*
* Return: void
*/
void ucfg_dfs_allow_hw_pulses(struct wlan_objmgr_pdev *pdev,
bool allow_hw_pulses);
/**
* ucfg_dfs_is_hw_pulses_allowed() - Check if actual radar detection is allowed
* or synthetic pulse detection is enabled.
* @pdev: Pointer to DFS pdev object.
*
* Wrapper function for dfs_is_hw_pulses_allowed().
* This function called from outside of dfs component.
*
* Return: bool
*/
bool ucfg_dfs_is_hw_pulses_allowed(struct wlan_objmgr_pdev *pdev);
#else
static inline
void ucfg_dfs_allow_hw_pulses(struct wlan_objmgr_pdev *pdev,
bool allow_hw_pulses)
{
}
static inline
bool ucfg_dfs_is_hw_pulses_allowed(struct wlan_objmgr_pdev *pdev)
{
return true;
}
#endif
/**
* ucfg_dfs_get_override_status_timeout() - Get the value of host dfs status
* wait timeout.
* @pdev: Pointer to DFS pdev object.
* @status_timeout: Pointer to save the timeout value.
*
* Wrapper function for dfs_get_override_status_timeout().
* This function called from outside of dfs component.
*
* Return: QDF_STATUS
*/
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
QDF_STATUS ucfg_dfs_get_override_status_timeout(struct wlan_objmgr_pdev *pdev,
int *status_timeout);
#else
static inline
QDF_STATUS ucfg_dfs_get_override_status_timeout(struct wlan_objmgr_pdev *pdev,
int *status_timeout)
{
return QDF_STATUS_SUCCESS;
}
#endif
/**
* ucfg_dfs_set_nol_subchannel_marking() - Set or unset NOL subchannel marking.
* @pdev: Pointer to DFS pdev object.
* @nol_subchannel_marking: Set NOL subchannel marking based on this value.
*
* Wrapper function for dfs_set_nol_subchannel_marking().
* This function is called from outside of dfs component.
*
* Return: QDF_STATUS
*/
QDF_STATUS ucfg_dfs_set_nol_subchannel_marking(struct wlan_objmgr_pdev *pdev,
bool nol_subchannel_marking);
/**
* ucfg_dfs_get_nol_subchannel_marking() - Get the value of NOL subchannel
* marking.
* @pdev: Pointer to DFS pdev object.
* @nol_subchannel_marking: Store the value of NOL subchannel marking.
*
* Wrapper function for dfs_get_nol_subchannel_marking().
* This function is called from outside of dfs component.
*
* Return: QDF_STATUS
*/
QDF_STATUS ucfg_dfs_get_nol_subchannel_marking(struct wlan_objmgr_pdev *pdev,
bool *nol_subchannel_marking);
/**
* ucfg_dfs_reinit_timers() - Init DFS timers.
* @pdev: Pointer to wlan_objmgr_pdev structure.
*
* Wrapper function to reset CAC, NOL, DFS Test Timer and ZeroCAC Timer.
* This is invoked per pdev to reinitialize timers after HW Mode Switch is
* triggered.
*/
QDF_STATUS ucfg_dfs_reinit_timers(struct wlan_objmgr_pdev *pdev);
/**
* ucfg_dfs_reset_agile_config() - Reset ADFS config.
* @pdev: Pointer to wlan_objmgr_pdev structure.
*
* Wrapper function to reset Agile DFS config such as the variables which hold
* information about the state of the preCAC timer, active precac
* dfs index and OCAC status. It is invoked before HW Mode switch is triggered
* to ensure ADFS config is in a well known consistent state.
*/
#ifdef QCA_SUPPORT_AGILE_DFS
QDF_STATUS ucfg_dfs_reset_agile_config(struct wlan_objmgr_psoc *psoc);
#else
static inline QDF_STATUS ucfg_dfs_reset_agile_config(struct wlan_objmgr_psoc
*psoc)
{
return QDF_STATUS_SUCCESS;
}
#endif
#endif /* _WLAN_DFS_UCFG_API_H_ */