qcacmn: Add mode based flags to channels in PNO request
Currently 6 GHz channel flags are not set for channels present in the list from PNO scan request but are set for all other 6 GHz channels which are added when either of the two below conditions are satisfied 1. Userspace sets NL80211_SCAN_FLAG_COLOCATED_6GHZ flag in PNO scan request. 2. At least one 6 GHz channel is present in the PNO scan req. Add flags for channels in the PNO scan request based on the scan_mode_6g ini configured similar to active scan request. Add changes to remove the RNR flag for the channel if the corresponding short SSID entry is present in the RNR db Cache since if colocated SSID is different userspace doesn't include corresponding 2.4/5 GHz channel information in PNO request. Change-Id: I22c4f7ecf65d4ab09dfbbe126aefe02f9145de42 CRs-Fixed: 3119113
This commit is contained in:

committed by
Madan Koyyalamudi

parent
afbf38079c
commit
aabe3575e9
@@ -529,36 +529,42 @@ int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
/* Filling per profile params */
|
||||
for (i = 0; i < req->networks_cnt; i++) {
|
||||
req->networks_list[i].ssid.length =
|
||||
request->match_sets[i].ssid.ssid_len;
|
||||
struct cfg80211_match_set *user_req = &request->match_sets[i];
|
||||
struct pno_nw_type *tgt_req = &req->networks_list[i];
|
||||
|
||||
if ((!req->networks_list[i].ssid.length) ||
|
||||
(req->networks_list[i].ssid.length > WLAN_SSID_MAX_LEN)) {
|
||||
tgt_req->ssid.length = user_req->ssid.ssid_len;
|
||||
|
||||
if (!tgt_req->ssid.length ||
|
||||
tgt_req->ssid.length > WLAN_SSID_MAX_LEN) {
|
||||
osif_err(" SSID Len %d is not correct for network %d",
|
||||
req->networks_list[i].ssid.length, i);
|
||||
tgt_req->ssid.length, i);
|
||||
ret = -EINVAL;
|
||||
goto error;
|
||||
}
|
||||
|
||||
qdf_mem_copy(req->networks_list[i].ssid.ssid,
|
||||
request->match_sets[i].ssid.ssid,
|
||||
req->networks_list[i].ssid.length);
|
||||
req->networks_list[i].authentication = 0; /*eAUTH_TYPE_ANY */
|
||||
req->networks_list[i].encryption = 0; /*eED_ANY */
|
||||
req->networks_list[i].bc_new_type = 0; /*eBCAST_UNKNOWN */
|
||||
qdf_mem_copy(tgt_req->ssid.ssid, user_req->ssid.ssid,
|
||||
tgt_req->ssid.length);
|
||||
tgt_req->authentication = 0; /*eAUTH_TYPE_ANY */
|
||||
tgt_req->encryption = 0; /*eED_ANY */
|
||||
tgt_req->bc_new_type = 0; /*eBCAST_UNKNOWN */
|
||||
|
||||
|
||||
/*Copying list of valid channel into request */
|
||||
for (j = 0; j < num_chan; j++)
|
||||
req->networks_list[i].pno_chan_list.chan[j].freq =
|
||||
valid_ch[j];
|
||||
req->networks_list[i].pno_chan_list.num_chan = num_chan;
|
||||
tgt_req->pno_chan_list.chan[j].freq = valid_ch[j];
|
||||
tgt_req->pno_chan_list.num_chan = num_chan;
|
||||
|
||||
if (ucfg_is_6ghz_pno_scan_optimization_supported(psoc))
|
||||
ucfg_scan_pno_add_all_valid_6g_channels(vdev, req,
|
||||
&num_chan);
|
||||
if (ucfg_is_6ghz_pno_scan_optimization_supported(psoc)) {
|
||||
uint32_t short_ssid =
|
||||
wlan_construct_shortssid(tgt_req->ssid.ssid,
|
||||
tgt_req->ssid.length);
|
||||
|
||||
req->networks_list[i].rssi_thresh =
|
||||
request->match_sets[i].rssi_thold;
|
||||
ucfg_scan_add_flags_to_pno_chan_list(vdev, req,
|
||||
&num_chan,
|
||||
short_ssid, i);
|
||||
}
|
||||
|
||||
tgt_req->rssi_thresh = user_req->rssi_thold;
|
||||
}
|
||||
|
||||
/* set scan to passive if no SSIDs are specified in the request */
|
||||
|
Reference in New Issue
Block a user