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);
|
WLAN_EV_RADAR_DETECTED);
|
||||||
|
|
||||||
if (!dfs->dfs_use_nol) {
|
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_reset_bangradar(dfs);
|
||||||
dfs_send_csa_to_current_chan(dfs);
|
dfs_send_csa_to_current_chan(dfs);
|
||||||
status = QDF_STATUS_SUCCESS;
|
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;
|
return QDF_STATUS_E_NOSUPPORT;
|
||||||
}
|
}
|
||||||
#endif /* WLAN_DISP_CHAN_INFO */
|
#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_ */
|
#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);
|
return utils_dfs_update_chan_state_array_element(dfs, freq, state);
|
||||||
}
|
}
|
||||||
#endif /* WLAN_DISP_CHAN_INFO */
|
#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
|
* change in channel i.e. only Beacon Probe response template
|
||||||
* is updated (CSA / ECSA IE is removed).
|
* 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_transition_to(vdev_mlme, WLAN_VDEV_S_UP);
|
||||||
mlme_vdev_sm_deliver_event(vdev_mlme,
|
mlme_vdev_sm_deliver_event(vdev_mlme,
|
||||||
WLAN_VDEV_SM_EV_UP_HOST_RESTART,
|
WLAN_VDEV_SM_EV_UP_HOST_RESTART,
|
||||||
|
@@ -24,6 +24,8 @@
|
|||||||
#define _VDEV_MLME_SM_H_
|
#define _VDEV_MLME_SM_H_
|
||||||
|
|
||||||
#include <wlan_mlo_mgr_ap.h>
|
#include <wlan_mlo_mgr_ap.h>
|
||||||
|
#include <wlan_dfs_utils_api.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mlme_vdev_sm_deliver_event() - Delivers event to VDEV MLME SM
|
* mlme_vdev_sm_deliver_event() - Delivers event to VDEV MLME SM
|
||||||
* @vdev_mlme: MLME VDEV comp object
|
* @vdev_mlme: MLME VDEV comp object
|
||||||
@@ -623,6 +625,18 @@ static inline QDF_STATUS mlme_vdev_dfs_cac_wait_notify(
|
|||||||
return ret;
|
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
|
#ifdef WLAN_FEATURE_11BE_MLO
|
||||||
/**
|
/**
|
||||||
* mlme_vdev_up_notify_mlo_mgr - notify mlo link is ready to up
|
* mlme_vdev_up_notify_mlo_mgr - notify mlo link is ready to up
|
||||||
|
Reference in New Issue
Block a user