From: Dmitry Shmidt Date: Thu, 23 Feb 2012 18:36:40 +0000 (-0800) Subject: net: wireless: bcmdhd: Turn interface down (only) in case of FW crash X-Git-Tag: firefly_0821_release~7613^2~177 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d93cdf396dfed7a7fc6d7c31b59538bf52378251;p=firefly-linux-kernel-4.4.55.git net: wireless: bcmdhd: Turn interface down (only) in case of FW crash Signed-off-by: Dmitry Shmidt --- diff --git a/drivers/net/wireless/bcmdhd/dhd_linux.c b/drivers/net/wireless/bcmdhd/dhd_linux.c index 233c89128303..0c34e79bf2ca 100644 --- a/drivers/net/wireless/bcmdhd/dhd_linux.c +++ b/drivers/net/wireless/bcmdhd/dhd_linux.c @@ -4390,17 +4390,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_WIRELESS_EXT) 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 } }