diff options
author | Dmitry Shmidt <dimitrysh@google.com> | 2012-02-23 10:36:40 -0800 |
---|---|---|
committer | Om Prakash Singh <omp@nvidia.com> | 2012-06-15 14:15:13 +0530 |
commit | 471e510735fd972e44f7d303c2b51a847702695b (patch) | |
tree | af6f97c1eaf1e12602bc70e5dd078d088e24df6c | |
parent | 9053d7de1602c2f3bedee02fe49274dc5ecd23ba (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.c | 10 |
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 } } |