summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2012-02-23 10:36:40 -0800
committerOm Prakash Singh <omp@nvidia.com>2012-06-15 14:15:13 +0530
commit471e510735fd972e44f7d303c2b51a847702695b (patch)
treeaf6f97c1eaf1e12602bc70e5dd078d088e24df6c
parent9053d7de1602c2f3bedee02fe49274dc5ecd23ba (diff)
net: wireless: bcmdhd: Turn interface down (only) in case of FW crash
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
-rw-r--r--drivers/net/wireless/bcmdhd/dhd_linux.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/wireless/bcmdhd/dhd_linux.c b/drivers/net/wireless/bcmdhd/dhd_linux.c
index a04c88f6524f..bd479acfc382 100644
--- a/drivers/net/wireless/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/bcmdhd/dhd_linux.c
@@ -4392,17 +4392,23 @@ int net_os_send_hang_message(struct net_device *dev)
{
dhd_info_t *dhd = *(dhd_info_t **)netdev_priv(dev);
int ret = 0;
+ int need_unlock = 0;
if (dhd) {
if (!dhd->pub.hang_was_sent) {
dhd->pub.hang_was_sent = 1;
+ if (!rtnl_is_locked()) {
+ need_unlock = 1;
+ rtnl_lock();
+ }
+ dev_close(dev);
+ if (need_unlock)
+ rtnl_unlock();
#if defined(CONFIG_BCMDHD_WEXT)
ret = wl_iw_send_priv_event(dev, "HANG");
#endif
#if defined(WL_CFG80211)
ret = wl_cfg80211_hang(dev, WLAN_REASON_UNSPECIFIED);
- dev_close(dev);
- dev_open(dev);
#endif
}
}