qcacmn: Add support for scanband config for cfg80211 scan

cfg80211tool athX scanband <val> config is used to
select a specific band to scan (i.e., 2.4GHz and/or
5GHz). The initial support for this command was
added as an iwpriv for WEXT-based scanning through
IOCTL. However, on bringing up cfg80211 support,
support for not extended for the cfg80211-based
vendor scan.

Add support to ensure that this command will
control band configuration for scanning for cfg80211
vendor scanning.

CRs-Fixed: 2969914
Change-Id: Ie3b7140ea78f15533e73fbe6251e670e6faa6d29
This commit is contained in:
Aditya Sathish
2021-06-30 01:55:43 +05:30
committed by Madan Koyyalamudi
orang tua f6d5584698
melakukan 6b048962f6
2 mengubah file dengan 32 tambahan dan 12 penghapusan

Melihat File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -153,6 +153,8 @@ struct scan_req {
* inapplicable.
* @dwell_time_passive_6g: 6 GHz specific passive dwell time. Ignored if zero or
* inapplicable.
* @scan_f_2ghz: Scan only 2GHz channels
* @scan_f_5ghz: Scan only 5+6GHz channels
*/
struct scan_params {
uint8_t source;
@@ -167,6 +169,8 @@ struct scan_params {
uint32_t dwell_time_passive;
uint32_t dwell_time_active_6g;
uint32_t dwell_time_passive_6g;
bool scan_f_2ghz;
bool scan_f_5ghz;
};
/**

Melihat File

@@ -1512,6 +1512,14 @@ int wlan_cfg80211_scan(struct wlan_objmgr_vdev *vdev,
if (qdf_is_macaddr_zero(&req->scan_req.bssid_list[0]))
qdf_set_macaddr_broadcast(&req->scan_req.bssid_list[0]);
if (params->scan_f_2ghz && !params->scan_f_5ghz) {
req->scan_req.scan_f_2ghz = true;
req->scan_req.scan_f_5ghz = false;
} else if (!params->scan_f_2ghz && params->scan_f_5ghz) {
req->scan_req.scan_f_2ghz = false;
req->scan_req.scan_f_5ghz = true;
}
if (request->n_channels) {
#ifdef WLAN_POLICY_MGR_ENABLE
bool ap_or_go_present =
@@ -1540,17 +1548,25 @@ int wlan_cfg80211_scan(struct wlan_objmgr_vdev *vdev,
continue;
}
#endif
req->scan_req.chan_list.chan[num_chan].freq = c_freq;
band = util_scan_scm_freq_to_band(c_freq);
if (band == WLAN_BAND_2_4_GHZ)
req->scan_req.chan_list.chan[num_chan].phymode =
SCAN_PHY_MODE_11G;
else
req->scan_req.chan_list.chan[num_chan].phymode =
SCAN_PHY_MODE_11A;
num_chan++;
if (num_chan >= NUM_CHANNELS)
break;
if ((req->scan_req.scan_f_2ghz &&
WLAN_REG_IS_24GHZ_CH_FREQ(c_freq)) ||
(req->scan_req.scan_f_5ghz &&
(WLAN_REG_IS_5GHZ_CH_FREQ(c_freq) ||
WLAN_REG_IS_6GHZ_CHAN_FREQ(c_freq)))) {
req->scan_req.chan_list.chan[num_chan].freq =
c_freq;
band = util_scan_scm_freq_to_band(c_freq);
if (band == WLAN_BAND_2_4_GHZ)
req->scan_req.chan_list.chan[num_chan].phymode =
SCAN_PHY_MODE_11G;
else
req->scan_req.chan_list.chan[num_chan].phymode =
SCAN_PHY_MODE_11A;
num_chan++;
if (num_chan >= NUM_CHANNELS)
break;
}
}
}
if (!num_chan) {