summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorNarayan Reddy <narayanr@nvidia.com>2014-05-01 20:39:32 +0530
committerRiham Haidar <rhaidar@nvidia.com>2014-05-12 16:36:58 -0700
commit51713c28dcd8aea46de276740f17a4ca8bb19734 (patch)
tree5181a35fa9edd6f6609ffb57e01a159231d5ce1b /drivers/net
parent14da64505843adf59d7f4f2311c560f8bd692b4c (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-xdrivers/net/wireless/bcmdhd/wl_cfg80211.c13
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);