qcacld-3.0: Make User CSA request as sync call

GO on 5 GHz channel 48, MLO STA 5 GHz (48) + 6 GHz (1) is UP.
SAP starts ACS, and before ACS complete, supplicant moves GO
to 5 GHz channel 149. Before GO CSA is completed, SAP ACS
is completed and start AP on 5 GHz channel 157. Then 3 home channels
are on same 5 GHz high band.
Fix by make User CSA as sync call and after GO CSA is completed
SAP should force SCC to low band during SAP starting, then avoid
3 home channels on high band.

Change-Id: I55ee559b47f270322ac3d2da7304dc5e8e104cf1
CRs-Fixed: 3352096
This commit is contained in:
Liangwei Dong
2022-12-06 16:14:44 +08:00
zatwierdzone przez Madan Koyyalamudi
rodzic d0190a1cfa
commit ead07b04fe

Wyświetl plik

@@ -23995,6 +23995,7 @@ static int __wlan_hdd_cfg80211_channel_switch(struct wiphy *wiphy,
int ret;
enum phy_ch_width ch_width;
bool status;
struct hdd_hostapd_state *hostapd_state;
if (wlan_hdd_validate_vdev_id(adapter->vdev_id))
return -EINVAL;
@@ -24023,11 +24024,26 @@ static int __wlan_hdd_cfg80211_channel_switch(struct wiphy *wiphy,
hdd_debug("Freq %d width %d ch_width %d",
csa_params->chandef.chan->center_freq,
csa_params->chandef.width, ch_width);
hostapd_state = WLAN_HDD_GET_HOSTAP_STATE_PTR(adapter);
qdf_event_reset(&hostapd_state->qdf_event);
ret =
hdd_softap_set_channel_change(dev,
csa_params->chandef.chan->center_freq,
ch_width, false);
if (ret) {
hdd_err("CSA failed to %d, ret %d",
csa_params->chandef.chan->center_freq, ret);
return ret;
}
status = qdf_wait_for_event_completion(&hostapd_state->qdf_event,
SME_CMD_START_BSS_TIMEOUT);
if (QDF_IS_STATUS_ERROR(status))
hdd_err("wait for qdf_event failed!!");
else
hdd_debug("csa done");
return ret;
}