qcacmn: Fix multiple radar founds for a single burst
In dfs test mode, 18 pulses are injected in a single burst, the host driver reports the radar found event two or three times to upper layer. For a single burst of radar pulses, radar found event should be reported only once. Fix the multiple radar founds for a single burst by disabling radar detection and flushing the existing radar pulses from all queues while processing the current radar found indication event in dfs test mode (usenol=0). Change-Id: I70c7c15147a5cde038773fd97735c113ca385932 CRs-Fixed: 2981217
This commit is contained in:

committed by
Madan Koyyalamudi

parent
81de2fc14d
commit
83065ffe1e
@@ -1022,6 +1022,11 @@ dfs_process_radar_ind_on_home_chan(struct wlan_dfs *dfs,
|
||||
WLAN_EV_RADAR_DETECTED);
|
||||
|
||||
if (!dfs->dfs_use_nol) {
|
||||
if (!dfs->dfs_is_offload_enabled) {
|
||||
dfs_radar_disable(dfs);
|
||||
dfs_second_segment_radar_disable(dfs);
|
||||
dfs_flush_additional_pulses(dfs);
|
||||
}
|
||||
dfs_reset_bangradar(dfs);
|
||||
dfs_send_csa_to_current_chan(dfs);
|
||||
status = QDF_STATUS_SUCCESS;
|
||||
|
@@ -968,4 +968,15 @@ QDF_STATUS dfs_init_chan_state_array(struct wlan_objmgr_pdev *pdev)
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
#endif /* WLAN_DISP_CHAN_INFO */
|
||||
|
||||
/**
|
||||
* utils_dfs_radar_enable() - Enables the radar.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
*
|
||||
* This is called each time for eCSA occurs but don't change channel due
|
||||
* to channel switch disabled in dfs test mode.
|
||||
*
|
||||
* Return: QDF_STATUS.
|
||||
*/
|
||||
QDF_STATUS utils_dfs_radar_enable(struct wlan_objmgr_pdev *pdev);
|
||||
#endif /* _WLAN_DFS_UTILS_API_H_ */
|
||||
|
@@ -1583,3 +1583,8 @@ QDF_STATUS utils_dfs_update_chan_state_array(struct wlan_objmgr_pdev *pdev,
|
||||
return utils_dfs_update_chan_state_array_element(dfs, freq, state);
|
||||
}
|
||||
#endif /* WLAN_DISP_CHAN_INFO */
|
||||
|
||||
QDF_STATUS utils_dfs_radar_enable(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
return tgt_dfs_radar_enable(pdev, 0, 0, true);
|
||||
}
|
||||
|
@@ -1358,7 +1358,7 @@ static bool mlme_vdev_subst_suspend_csa_restart_event(void *ctx,
|
||||
* change in channel i.e. only Beacon Probe response template
|
||||
* is updated (CSA / ECSA IE is removed).
|
||||
*/
|
||||
|
||||
mlme_vdev_chan_switch_disable_notify_dfs(vdev_mlme);
|
||||
mlme_vdev_sm_transition_to(vdev_mlme, WLAN_VDEV_S_UP);
|
||||
mlme_vdev_sm_deliver_event(vdev_mlme,
|
||||
WLAN_VDEV_SM_EV_UP_HOST_RESTART,
|
||||
|
@@ -24,6 +24,8 @@
|
||||
#define _VDEV_MLME_SM_H_
|
||||
|
||||
#include <wlan_mlo_mgr_ap.h>
|
||||
#include <wlan_dfs_utils_api.h>
|
||||
|
||||
/**
|
||||
* mlme_vdev_sm_deliver_event() - Delivers event to VDEV MLME SM
|
||||
* @vdev_mlme: MLME VDEV comp object
|
||||
@@ -623,6 +625,18 @@ static inline QDF_STATUS mlme_vdev_dfs_cac_wait_notify(
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* mlme_vdev_chan_switch_disable_notify_dfs - Notifies DFS when channel
|
||||
* switch is disabled
|
||||
* @vdev_mlme: VDEV MLME comp object
|
||||
*
|
||||
* Return: QDF_STATUS.
|
||||
*/
|
||||
static inline QDF_STATUS mlme_vdev_chan_switch_disable_notify_dfs(
|
||||
struct vdev_mlme_obj *vdev_mlme)
|
||||
{
|
||||
return utils_dfs_radar_enable(wlan_vdev_get_pdev(vdev_mlme->vdev));
|
||||
}
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
/**
|
||||
* mlme_vdev_up_notify_mlo_mgr - notify mlo link is ready to up
|
||||
|
Reference in New Issue
Block a user