qcacmn: Use best regulatory power mode in scan manager
Due to the nature of discrete channel lists for each power mode on the host driver, it is currently not possible to scan 6GHz channels which are not part of the operating regulatory power mode. To enable scanning all 6GHz channels irrespective of the regulatory power mode (i.e., standard, low, etc.), the existing sanity checks for the regulatory current channel list need to refer to the super channel list instead. Additionally, these sanity checks need to check the channel state and flags for the best power mode instead of the current power mode. This will allow the scan manager to access all 6GHz channels irrespective of the current regulatory power mode. Multi-band operation (for radios operable on 2.4GHz, 5GHz and/or 6GHz) is also ensured in these sanity checks. CRs-Fixed: 3140935 Change-Id: If10c617834dd89f4bbd99669318fd84c63421755
Šī revīzija ir iekļauta:

revīziju iesūtīja
Madan Koyyalamudi

vecāks
f8beed3fc7
revīzija
1cebff1228
@@ -992,6 +992,7 @@ ucfg_scan_init_bssid_params(struct scan_start_request *req,
|
||||
/**
|
||||
* is_chan_enabled_for_scan() - helper API to check if a frequency
|
||||
* is allowed to scan.
|
||||
* @pdev: pointer to pdev
|
||||
* @reg_chan: regulatory_channel object
|
||||
* @low_2g: lower 2.4 GHz frequency thresold
|
||||
* @high_2g: upper 2.4 GHz frequency thresold
|
||||
@@ -1001,14 +1002,19 @@ ucfg_scan_init_bssid_params(struct scan_start_request *req,
|
||||
* Return: true if scan is allowed. false otherwise.
|
||||
*/
|
||||
static bool
|
||||
is_chan_enabled_for_scan(struct regulatory_channel *reg_chan,
|
||||
is_chan_enabled_for_scan(struct wlan_objmgr_pdev *pdev,
|
||||
struct regulatory_channel *reg_chan,
|
||||
qdf_freq_t low_2g, qdf_freq_t high_2g, qdf_freq_t low_5g,
|
||||
qdf_freq_t high_5g)
|
||||
{
|
||||
if (reg_chan->state == CHANNEL_STATE_DISABLE)
|
||||
if (wlan_reg_is_disable_for_pwrmode(pdev,
|
||||
reg_chan->center_freq,
|
||||
REG_BEST_PWR_MODE))
|
||||
return false;
|
||||
|
||||
if (reg_chan->nol_chan)
|
||||
return false;
|
||||
|
||||
/* 2 GHz channel */
|
||||
if ((util_scan_scm_freq_to_band(reg_chan->center_freq) ==
|
||||
WLAN_BAND_2_4_GHZ) &&
|
||||
@@ -1076,7 +1082,8 @@ ucfg_scan_init_chanlist_params(struct scan_start_request *req,
|
||||
|
||||
for (idx = 0, num_chans = 0;
|
||||
(idx < NUM_CHANNELS && num_chans < max_chans); idx++)
|
||||
if ((is_chan_enabled_for_scan(®_chan_list[idx],
|
||||
if ((is_chan_enabled_for_scan(pdev,
|
||||
®_chan_list[idx],
|
||||
low_2g, high_2g,
|
||||
low_5g, high_5g)) &&
|
||||
((req->scan_req.scan_f_2ghz &&
|
||||
|
@@ -330,7 +330,7 @@ util_scan_get_chan_from_he_6g_params(struct wlan_objmgr_pdev *pdev,
|
||||
band_mask);
|
||||
if (scan_obj->drop_bcn_on_invalid_freq &&
|
||||
wlan_reg_is_disable_for_pwrmode(pdev, *chan_freq,
|
||||
REG_CURRENT_PWR_MODE)) {
|
||||
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);
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user