From 35b404c2069bbf5dcaa5e821bca4fad327f83987 Mon Sep 17 00:00:00 2001 From: Krunal Soni Date: Thu, 14 Jul 2016 23:36:00 -0700 Subject: [PATCH] qcacld-3.0: Fix to avoid checking PCL when BSSID is given by upper layer New flavor of OS is sending bssid along with STA connect command. When connect command comes with bssids then don't allow Preferred channel list algorithm as it won't be of any use and skipping the algorithm will improve initial scan time. Add log to inform whether BSSID hint is given by upper layer. Change-Id: I9c1f41a0e00f9b2afc19629558b93a2482da6581 CRs-Fixed: 1047052 --- core/hdd/src/wlan_hdd_cfg80211.c | 6 ++++-- core/sme/src/csr/csr_api_scan.c | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 626d8ef8e8e1..400fbe4320e4 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -9502,6 +9502,7 @@ int wlan_hdd_cfg80211_connect_start(hdd_adapter_t *pAdapter, */ qdf_mem_copy((void *)(pWextState->req_bssId.bytes), bssid, QDF_MAC_ADDR_SIZE); + hdd_info("bssid is given by upper layer %pM", bssid); } else if (bssid_hint) { pRoamProfile->BSSIDs.numOfBSSIDs = 1; qdf_mem_copy((void *)(pRoamProfile->BSSIDs.bssid), @@ -9513,11 +9514,12 @@ int wlan_hdd_cfg80211_connect_start(hdd_adapter_t *pAdapter, */ qdf_mem_copy((void *)(pWextState->req_bssId.bytes), bssid_hint, QDF_MAC_ADDR_SIZE); - hdd_warn(" bssid_hint "MAC_ADDRESS_STR, - MAC_ADDR_ARRAY(bssid_hint)); + hdd_info("bssid_hint is given by upper layer %pM", + bssid_hint); } else { qdf_mem_zero((void *)(pRoamProfile->BSSIDs.bssid), QDF_MAC_ADDR_SIZE); + hdd_info("no bssid given by upper layer"); } hdd_notice("Connect to SSID: %.*s operating Channel: %u", diff --git a/core/sme/src/csr/csr_api_scan.c b/core/sme/src/csr/csr_api_scan.c index 99d024d36247..3967119f1e4f 100644 --- a/core/sme/src/csr/csr_api_scan.c +++ b/core/sme/src/csr/csr_api_scan.c @@ -1962,6 +1962,11 @@ static QDF_STATUS csr_calc_pref_val_by_pcl(tpAniSirGlobal mac_ctx, if (NULL == mac_ctx || NULL == bss_descr) return QDF_STATUS_E_FAILURE; + if (filter && (0 != filter->BSSIDs.numOfBSSIDs)) { + sms_log(mac_ctx, LOGW, + FL("filter has specific bssid, no point of boosting")); + return QDF_STATUS_SUCCESS; + } if (is_channel_found_in_pcl(mac_ctx, bss_descr->Result.BssDescriptor.channelId, filter) && @@ -2010,7 +2015,7 @@ csr_parse_scan_results(tpAniSirGlobal pMac, csr_ll_lock(&pMac->scan.scanResultList); - if (pFilter) { + if (pFilter && (0 == pFilter->BSSIDs.numOfBSSIDs)) { if (cds_map_concurrency_mode( &pFilter->csrPersona, &new_mode)) { status = cds_get_pcl(new_mode,