qcacmn: Do not drop beacons for channels present in NOL
Currently, during scanning, while parsing the received beacons, the beacon IEs are checked to verify whether the channel present in the beacon is invalid. If the channel is found to be invalid, the corresponding beacons are dropped. This check treats the channels in the NOL list as invalid channels. Consider a case of a repeater with RCSA enabled; when the RE detects a radar, the RE adds the radar detected channels to NOL and sends an RCSA action frame to the Root AP to intimate the Root about the radar detection. The RE will also wait for the Root to send CSA to RE. But in this case, the RE will not parse the CSA IE received from the Root, as the beacons from the Root AP are dropped, as the channel present in the beacon is considered invalid. The purpose of the channel validity check in the beacon parsing is to avoid receiving beacons from an invalid channel, that is, the channels that are not supported by the device. Since NOL channels are valid, we can parse the beacons received from an NOL channel. Therefore, to fix this issue, use the regulatory API 'wlan_reg_is_freq_enabled' instead of the API 'wlan_reg_is_disable_for_pwrmode' to check if the channel is invalid. The API 'wlan_reg_is_freq_enabled' treats NOL channels as valid channels. Change-Id: Iad502363c0ad15be2a009480c49bffcf8e004943 CRs-Fixed: 3513560
This commit is contained in:

committed by
Rahul Choudhary

parent
eae87639ca
commit
9c6e306ffd
@@ -1213,10 +1213,9 @@ QDF_STATUS __scm_handle_bcn_probe(struct scan_bcn_probe_event *bcn)
|
||||
}
|
||||
/* Do not add invalid channel entry as kernel will reject it */
|
||||
if (scan_obj->drop_bcn_on_invalid_freq &&
|
||||
wlan_reg_is_disable_for_pwrmode(
|
||||
pdev,
|
||||
scan_entry->channel.chan_freq,
|
||||
REG_BEST_PWR_MODE)) {
|
||||
!wlan_reg_is_freq_enabled(pdev,
|
||||
scan_entry->channel.chan_freq,
|
||||
REG_BEST_PWR_MODE)) {
|
||||
scm_nofl_debug(QDF_MAC_ADDR_FMT ": Drop frame(%d) for invalid freq %d seq %d RSSI %d",
|
||||
QDF_MAC_ADDR_REF(
|
||||
scan_entry->bssid.bytes),
|
||||
|
@@ -552,8 +552,7 @@ util_scan_get_chan_from_he_6g_params(struct wlan_objmgr_pdev *pdev,
|
||||
he_6g_params->primary_channel,
|
||||
band_mask);
|
||||
if (scan_obj->drop_bcn_on_invalid_freq &&
|
||||
wlan_reg_is_disable_for_pwrmode(pdev, *chan_freq,
|
||||
REG_BEST_PWR_MODE)) {
|
||||
!wlan_reg_is_freq_enabled(pdev, *chan_freq, REG_BEST_PWR_MODE)) {
|
||||
scm_debug_rl(QDF_MAC_ADDR_FMT": Drop as invalid channel %d freq %d in HE 6Ghz params",
|
||||
QDF_MAC_ADDR_REF(scan_params->bssid.bytes),
|
||||
he_6g_params->primary_channel, *chan_freq);
|
||||
@@ -1481,8 +1480,9 @@ util_scan_populate_bcn_ie_list(struct wlan_objmgr_pdev *pdev,
|
||||
band_mask);
|
||||
/* Drop if invalid freq */
|
||||
if (scan_obj->drop_bcn_on_invalid_freq &&
|
||||
!wlan_reg_is_freq_present_in_cur_chan_list(pdev,
|
||||
*chan_freq)) {
|
||||
!wlan_reg_is_freq_enabled(pdev,
|
||||
*chan_freq,
|
||||
REG_CURRENT_PWR_MODE)) {
|
||||
scm_debug(QDF_MAC_ADDR_FMT": Drop as invalid chan %d in DS IE, freq %d, band_mask %d",
|
||||
QDF_MAC_ADDR_REF(
|
||||
scan_params->bssid.bytes),
|
||||
@@ -1580,9 +1580,9 @@ util_scan_populate_bcn_ie_list(struct wlan_objmgr_pdev *pdev,
|
||||
band_mask);
|
||||
/* Drop if invalid freq */
|
||||
if (scan_obj->drop_bcn_on_invalid_freq &&
|
||||
wlan_reg_is_disable_for_pwrmode(
|
||||
pdev, *chan_freq,
|
||||
REG_CURRENT_PWR_MODE)) {
|
||||
!wlan_reg_is_freq_enabled(pdev,
|
||||
*chan_freq,
|
||||
REG_CURRENT_PWR_MODE)) {
|
||||
scm_debug_rl(QDF_MAC_ADDR_FMT": Drop as invalid channel %d freq %d in HT_INFO IE",
|
||||
QDF_MAC_ADDR_REF(scan_params->bssid.bytes),
|
||||
chan_idx, *chan_freq);
|
||||
|
Reference in New Issue
Block a user