Merge "qca-wifi: Reset the agile channel after radar in primary detector"
This commit is contained in:

zatwierdzone przez
Gerrit - the friendly Code Review server

commit
7ab9f4720e
@@ -879,9 +879,8 @@ void dfs_mark_precac_nol(struct wlan_dfs *dfs,
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
uint8_t i;
|
||||
struct dfs_soc_priv_obj *dfs_soc_obj;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(dfs->dfs_pdev_obj);
|
||||
dfs_soc_obj = dfs->dfs_soc_obj;
|
||||
struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS,
|
||||
"is_radar_found_on_secondary_seg = %u subchannel_marking = %u detector_id = %u",
|
||||
@@ -922,6 +921,12 @@ void dfs_mark_precac_nol(struct wlan_dfs *dfs,
|
||||
}
|
||||
PRECAC_LIST_UNLOCK(dfs);
|
||||
|
||||
psoc = wlan_pdev_get_psoc(dfs->dfs_pdev_obj);
|
||||
dfs_soc_obj = dfs->dfs_soc_obj;
|
||||
|
||||
dfs_tx_ops = wlan_psoc_get_dfs_txops(psoc);
|
||||
pdev = dfs->dfs_pdev_obj;
|
||||
|
||||
/* PreCAC timer is not running, no need to restart preCAC */
|
||||
if (!dfs_soc_obj->dfs_precac_timer_running)
|
||||
return;
|
||||
@@ -965,18 +970,27 @@ void dfs_mark_precac_nol(struct wlan_dfs *dfs,
|
||||
|
||||
qdf_timer_sync_cancel(&dfs_soc_obj->dfs_precac_timer);
|
||||
dfs_soc_obj->dfs_precac_timer_running = 0;
|
||||
|
||||
/* Since Agile DFS is interrupted due to radar, send
|
||||
* OCAC abort event to FW for a proper restart of the Agile
|
||||
* state machine.
|
||||
*/
|
||||
if (dfs_tx_ops && dfs_tx_ops->dfs_ocac_abort_cmd)
|
||||
dfs_tx_ops->dfs_ocac_abort_cmd(pdev);
|
||||
/*
|
||||
* If radar is found on agile engine, change the channel here
|
||||
* since primary channel change will not be triggered.
|
||||
* If radar is found on primary detector, let agile
|
||||
* channel change be triggered after start response.
|
||||
* Set precac_state_started to false to indicate preCAC is not
|
||||
* running.
|
||||
* running and also reset the current Agile channel.
|
||||
*/
|
||||
if (detector_id == AGILE_DETECTOR_ID)
|
||||
if (detector_id == AGILE_DETECTOR_ID) {
|
||||
dfs_prepare_agile_precac_chan(dfs);
|
||||
else
|
||||
dfs_soc_obj->precac_state_started = false;
|
||||
} else {
|
||||
dfs->dfs_agile_precac_freq = 0;
|
||||
dfs_soc_obj->precac_state_started = PRECAC_NOT_STARTED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user