qcacld-3.0: Trim 5 GHz scan channel lists for STA DFS connection case
Currently as long as STA connection is present on DFS channel, host driver doesn't trim 5 GHz channel lists even if there has SAP on DFS channel. But for DBS capability chips, like Hasting, when DFS SAP is present, it's still not allowed to do scan even if STA DFS connection is available. If don't trim 5 GHz channel lists, the result is that FW will return cancelled status for the last scan event of the DFS BSS channel. So host driver would return aborted status even if 2.4 GHz channels can be normally scanned and upper layer cannot get any scan results. Change-Id: I885dbccd9beb8bc1c4956c89d90d33cda2bc301d CRs-Fixed: 3274000
This commit is contained in:

committed by
Madan Koyyalamudi

orang tua
831a719163
melakukan
09f65a0240
@@ -6980,29 +6980,34 @@ bool policy_mgr_is_any_dfs_beaconing_session_present(
|
|||||||
|
|
||||||
bool policy_mgr_scan_trim_5g_chnls_for_dfs_ap(struct wlan_objmgr_psoc *psoc)
|
bool policy_mgr_scan_trim_5g_chnls_for_dfs_ap(struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
|
||||||
qdf_freq_t dfs_ch_frq = 0;
|
qdf_freq_t dfs_ch_frq = 0;
|
||||||
|
qdf_freq_t dfs_sta_frq = 0;
|
||||||
uint8_t vdev_id;
|
uint8_t vdev_id;
|
||||||
enum hw_mode_bandwidth ch_width;
|
enum hw_mode_bandwidth ch_width;
|
||||||
|
enum hw_mode_bandwidth ch_sta_width;
|
||||||
pm_ctx = policy_mgr_get_context(psoc);
|
QDF_STATUS status;
|
||||||
if (!pm_ctx) {
|
uint8_t sta_sap_scc_on_dfs_chnl;
|
||||||
policy_mgr_err("Invalid Context");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (policy_mgr_is_sta_present_on_dfs_channel(psoc, &vdev_id,
|
|
||||||
&dfs_ch_frq,
|
|
||||||
&ch_width)) {
|
|
||||||
policymgr_nofl_err("DFS STA present vdev_id %d ch_feq %d ch_width %d",
|
|
||||||
vdev_id, dfs_ch_frq, ch_width);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
policy_mgr_is_any_dfs_beaconing_session_present(psoc, &dfs_ch_frq,
|
policy_mgr_is_any_dfs_beaconing_session_present(psoc, &dfs_ch_frq,
|
||||||
&ch_width);
|
&ch_width);
|
||||||
if (!dfs_ch_frq)
|
if (!dfs_ch_frq)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
status = policy_mgr_get_sta_sap_scc_on_dfs_chnl(psoc,
|
||||||
|
&sta_sap_scc_on_dfs_chnl);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (policy_mgr_is_sta_present_on_dfs_channel(psoc, &vdev_id,
|
||||||
|
&dfs_sta_frq,
|
||||||
|
&ch_sta_width) &&
|
||||||
|
!policy_mgr_is_hw_dbs_capable(psoc) &&
|
||||||
|
sta_sap_scc_on_dfs_chnl != PM_STA_SAP_ON_DFS_DEFAULT) {
|
||||||
|
policymgr_nofl_err("DFS STA present vdev_id %d ch_feq %d ch_width %d",
|
||||||
|
vdev_id, dfs_sta_frq, ch_sta_width);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 1) if agile & DFS scans are supportet
|
* 1) if agile & DFS scans are supportet
|
||||||
* 2) if hardware is DBS capable
|
* 2) if hardware is DBS capable
|
||||||
|
Reference in New Issue
Block a user