qcacld-3.0: Validate freq against regulatory list

When CSR issues a start BSS message, it validates the requested start
freq against the internal CSR channel list. There could be a scenario
where this list is not updated and the validation fails. Check this freq
against the regulatory channel list instead.

Change-Id: I56b29fa6249a9245bb968c95c14e730b976f0f8d
CRs-fixed: 2884695
This commit is contained in:
Lincoln Tran 2021-02-23 17:31:13 -08:00 • committed by snandini
commit 7b6d8910f2
2 changed files with 2 additions and 25 deletions

View file

@ -179,7 +179,6 @@ void csr_roam_process_get_disconnect_stats_command(struct mac_context *mac,
void csr_reinit_roam_cmd(struct mac_context *mac, tSmeCmd *pCommand);
void csr_reinit_wm_status_change_cmd(struct mac_context *mac,
tSmeCmd *pCommand);
QDF_STATUS csr_is_valid_channel(struct mac_context *mac, uint32_t freq);
QDF_STATUS sme_acquire_global_lock(struct sme_context *sme);
QDF_STATUS sme_release_global_lock(struct sme_context *sme);

View file

@ -2808,28 +2808,6 @@ void csr_prune_channel_list_for_mode(struct mac_context *mac_ctx,
}
#define INFRA_AP_DEFAULT_CHAN_FREQ 2437
QDF_STATUS csr_is_valid_channel(struct mac_context *mac, uint32_t freq)
{
uint8_t index = 0;
QDF_STATUS status = QDF_STATUS_E_NOSUPPORT;
/* regulatory check */
for (index = 0; index < mac->scan.base_channels.numChannels;
index++) {
if (mac->scan.base_channels.channel_freq_list[index] ==
freq){
status = QDF_STATUS_SUCCESS;
break;
}
}
if (QDF_STATUS_SUCCESS != status) {
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
FL("freq %d is not available"), freq);
}
return status;
}
QDF_STATUS csr_get_channel_and_power_list(struct mac_context *mac)
{
@ -13698,8 +13676,8 @@ QDF_STATUS csr_roam_issue_start_bss(struct mac_context *mac, uint32_t sessionId,
pParam->ApUapsdEnable = pProfile->ApUapsdEnable;
pParam->ssidHidden = pProfile->SSIDs.SSIDList[0].ssidHidden;
if (CSR_IS_INFRA_AP(pProfile) && (pParam->operation_chan_freq != 0)) {
if (csr_is_valid_channel(mac, pParam->operation_chan_freq) !=
QDF_STATUS_SUCCESS) {
if (!wlan_reg_is_freq_present_in_cur_chan_list(mac->pdev,
pParam->operation_chan_freq)) {
pParam->operation_chan_freq = INFRA_AP_DEFAULT_CHAN_FREQ;
pParam->ch_params.ch_width = CH_WIDTH_20MHZ;
}