qcacld-3.0: Correct 160MHz SAP dfs flag

Use wlan_reg_get_channel_state_for_freq API to get channel
state and identify 6Ghz channel as non-dfs channel.

Change-Id: Ib134a71c62e24324abc12e5a5b11a524e89de810
CRs-Fixed: 2681608
This commit is contained in:
Liangwei Dong
2020-05-07 19:03:38 +08:00
vanhempi 42a98a6677
commit 06109080e9
4 muutettua tiedostoa jossa 57 lisäystä ja 33 poistoa

Näytä tiedosto

@@ -427,18 +427,24 @@ wlansap_roam_process_ch_change_success(struct mac_context *mac_ctx,
if (sap_ctx->ch_params.ch_width == CH_WIDTH_160MHZ) {
is_ch_dfs = true;
} else if (sap_ctx->ch_params.ch_width == CH_WIDTH_80P80MHZ) {
if (wlan_reg_get_channel_state_for_freq(mac_ctx->pdev, target_chan_freq) ==
if (wlan_reg_get_channel_state_for_freq(
mac_ctx->pdev,
target_chan_freq) ==
CHANNEL_STATE_DFS ||
wlan_reg_get_channel_state(mac_ctx->pdev,
sap_ctx->ch_params.center_freq_seg1 -
SIR_80MHZ_START_CENTER_CH_DIFF) ==
CHANNEL_STATE_DFS)
wlan_reg_get_channel_state_for_freq(
mac_ctx->pdev,
sap_ctx->ch_params.mhz_freq_seg1) ==
CHANNEL_STATE_DFS)
is_ch_dfs = true;
} else {
if (wlan_reg_get_channel_state_for_freq(mac_ctx->pdev, target_chan_freq) ==
if (wlan_reg_get_channel_state_for_freq(
mac_ctx->pdev,
target_chan_freq) ==
CHANNEL_STATE_DFS)
is_ch_dfs = true;
}
if (WLAN_REG_IS_6GHZ_CHAN_FREQ(sap_ctx->chan_freq))
is_ch_dfs = false;
sap_ctx->chan_freq = target_chan_freq;
/* check if currently selected channel is a DFS channel */

Näytä tiedosto

@@ -2532,7 +2532,7 @@ static QDF_STATUS sap_fsm_state_starting(struct sap_context *sap_ctx,
if (sap_ctx->ch_params.ch_width == CH_WIDTH_160MHZ) {
is_dfs = wlan_reg_get_5g_bonded_channel_state_for_freq(
mac_ctx->pdev, sap_chan_freq,
CH_WIDTH_160MHZ);
CH_WIDTH_160MHZ) == CHANNEL_STATE_DFS;
} else if (sap_ctx->ch_params.ch_width == CH_WIDTH_80P80MHZ) {
if (wlan_reg_get_channel_state_for_freq(
mac_ctx->pdev,

Näytä tiedosto

@@ -1667,29 +1667,36 @@ wlansap_set_cac_required_for_chan(struct mac_context *mac_ctx,
{
bool is_ch_dfs = false;
bool cac_required;
uint32_t channel;
uint32_t chan_freq;
uint8_t vdev_id_list[MAX_NUMBER_OF_CONC_CONNECTIONS];
uint32_t freq_list[MAX_NUMBER_OF_CONC_CONNECTIONS];
uint8_t sta_cnt, i;
channel = wlan_reg_freq_to_chan(mac_ctx->pdev, sap_ctx->chan_freq);
chan_freq = sap_ctx->chan_freq;
if (sap_ctx->ch_params.ch_width == CH_WIDTH_160MHZ) {
is_ch_dfs = true;
} else if (sap_ctx->ch_params.ch_width == CH_WIDTH_80P80MHZ) {
if ((wlan_reg_get_channel_state(mac_ctx->pdev, channel) ==
CHANNEL_STATE_DFS) ||
(wlan_reg_get_channel_state(mac_ctx->pdev,
sap_ctx->ch_params.center_freq_seg1 -
SIR_80MHZ_START_CENTER_CH_DIFF) ==
CHANNEL_STATE_DFS))
if (wlan_reg_get_channel_state_for_freq(
mac_ctx->pdev,
sap_ctx->chan_freq) ==
CHANNEL_STATE_DFS ||
wlan_reg_get_channel_state_for_freq(
mac_ctx->pdev,
sap_ctx->ch_params.mhz_freq_seg1) ==
CHANNEL_STATE_DFS)
is_ch_dfs = true;
} else {
if (wlan_reg_get_channel_state_for_freq(
mac_ctx->pdev,
sap_ctx->chan_freq) ==
CHANNEL_STATE_DFS)
is_ch_dfs = true;
} else if (wlan_reg_get_channel_state(mac_ctx->pdev, channel) ==
CHANNEL_STATE_DFS) {
is_ch_dfs = true;
}
if (WLAN_REG_IS_6GHZ_CHAN_FREQ(sap_ctx->chan_freq))
is_ch_dfs = false;
sap_debug("vdev id %d chan %d is_ch_dfs %d pre_cac_complete %d ignore_cac %d cac_state %d",
sap_ctx->sessionId, channel, is_ch_dfs,
sap_ctx->sessionId, chan_freq, is_ch_dfs,
sap_ctx->pre_cac_complete, mac_ctx->sap.SapDfsInfo.ignore_cac,
mac_ctx->sap.SapDfsInfo.cac_state);