diff options
author | CNSS_WLAN Service <cnssbldsw@qualcomm.com> | 2018-10-01 03:50:41 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-10-01 03:50:41 -0700 |
commit | 6841c7a3d69efd90f98b2f031f5569d395c1c95e (patch) | |
tree | 176733e264e8dc10a491d04d2504e253ffc49f48 | |
parent | 64b75dde0dce4d4dbd79f0e9183ab2b37f5e4f82 (diff) | |
parent | 42c3490d7dae84e68bc1f7e3bdad17a8ee73a5ef (diff) | |
download | wlan-6841c7a3d69efd90f98b2f031f5569d395c1c95e.tar.gz |
Merge "wlan: Invoke LFR3 roaming on reception of prev_bssid in connect" into wlan-driver.lnx.1.0
-rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index c17fab251..c7b3e2e49 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -16948,8 +16948,8 @@ disconnected: * @adapter: Pointer to the HDD adapter * @req: Pointer to the structure cfg_connect_params receieved from user space * - * This function will start reassociation if bssid hint, channel hint and - * previous bssid parameters are present in the connect request + * This function will start reassociation if prev_bssid is set and bssid/ + * bssid_hint, channel/channel_hint parameters are present in connect request. * * Return: success if reassociation is happening * Error code if reassociation is not permitted or not happening @@ -16959,14 +16959,25 @@ static int wlan_hdd_reassoc_bssid_hint(hdd_adapter_t *adapter, struct cfg80211_connect_params *req) { int status = -EPERM; - if (req->bssid_hint && req->channel_hint && req->prev_bssid) { + const uint8_t *bssid = NULL; + uint16_t channel = 0; + + if (req->bssid) + bssid = req->bssid; + else if (req->bssid_hint) + bssid = req->bssid_hint; + + if (req->channel) + channel = req->channel->hw_value; + else if (req->channel_hint) + channel = req->channel_hint->hw_value; + + if (bssid && channel && req->prev_bssid) { hddLog(VOS_TRACE_LEVEL_INFO, FL("REASSOC Attempt on channel %d to "MAC_ADDRESS_STR), - req->channel_hint->hw_value, - MAC_ADDR_ARRAY(req->bssid_hint)); - status = hdd_reassoc(adapter, req->bssid_hint, - req->channel_hint->hw_value, - CONNECT_CMD_USERSPACE); + channel, MAC_ADDR_ARRAY(bssid)); + status = hdd_reassoc(adapter, bssid, channel, + CONNECT_CMD_USERSPACE); } return status; } |