Merge "qca-wifi: Reset the agile channel after radar in primary detector"

This commit is contained in:
Linux Build Service Account
2019-09-24 17:50:28 -07:00
zatwierdzone przez Gerrit - the friendly Code Review server

Wyświetl plik

@@ -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;
}
}
}