diff options
author | Narayan Reddy <narayanr@nvidia.com> | 2014-05-01 20:39:32 +0530 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2014-05-12 16:36:58 -0700 |
commit | 51713c28dcd8aea46de276740f17a4ca8bb19734 (patch) | |
tree | 5181a35fa9edd6f6609ffb57e01a159231d5ce1b /drivers/net | |
parent | 14da64505843adf59d7f4f2311c560f8bd692b4c (diff) |
net: wireless: bcmdhd: handle roam indication
When user modifies any settings in AP, wlan driver
does a reconnection on its own and after connection
is re-established, reports it as ROAM_EVENT to cfg.
Sometimes bss information of that particular bssid
gets expired in the cfg80211 which is resulting in
the WARN_ON in cfg80211_roamed function.
So skip roaming indication to cfg80211 layer if it
is connected to the same BSSID
Bug 1500472
Change-Id: I67b9466840451d65a3d7558fc14294ecf1ccf865
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: http://git-master/r/403994
(cherry picked from commit 56e52b147181ca3489e0090072d6d5fc42be0f1d)
Signed-off-by: Manikanta <mmaddireddy@nvidia.com>
Reviewed-on: http://git-master/r/408004
Reviewed-by: Nagarjuna Kristam <nkristam@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Diffstat (limited to 'drivers/net')
-rwxr-xr-x | drivers/net/wireless/bcmdhd/wl_cfg80211.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/wireless/bcmdhd/wl_cfg80211.c b/drivers/net/wireless/bcmdhd/wl_cfg80211.c index cb8cbc2b8d4c..ef49256811e6 100755 --- a/drivers/net/wireless/bcmdhd/wl_cfg80211.c +++ b/drivers/net/wireless/bcmdhd/wl_cfg80211.c @@ -7765,13 +7765,16 @@ wl_bss_roaming_done(struct bcm_cfg80211 *cfg, struct net_device *ndev, printk("wl_bss_roaming_done succeeded to " MACDBG "\n", MAC2STRDBG((u8*)(&e->addr))); - cfg80211_roamed(ndev, + if (memcmp(curbssid, connect_req_bssid, ETHER_ADDR_LEN) != 0) { + WL_DBG(("BSSID Mismatch, so indicate roam to cfg80211\n")); + cfg80211_roamed(ndev, #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) - notify_channel, + notify_channel, #endif - curbssid, - conn_info->req_ie, conn_info->req_ie_len, - conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL); + curbssid, + conn_info->req_ie, conn_info->req_ie_len, + conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL); + } WL_DBG(("Report roaming result\n")); wl_set_drv_status(cfg, CONNECTED, ndev); |