net: wireless: bcmdhd: Check if FW is Ok for internal FW call
authorDmitry Shmidt <dimitrysh@google.com>
Wed, 2 Nov 2011 22:06:14 +0000 (15:06 -0700)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 20:25:35 +0000 (12:25 -0800)
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
drivers/net/wireless/bcmdhd/dhd.h
drivers/net/wireless/bcmdhd/dhd_common.c
drivers/net/wireless/bcmdhd/dhd_linux.c

index 0ea5d4a..e473261 100644 (file)
@@ -422,6 +422,7 @@ extern int dhd_dev_pno_enable(struct net_device *dev,  int pfn_enabled);
 extern int dhd_dev_get_pno_status(struct net_device *dev);
 extern int dhd_get_dtim_skip(dhd_pub_t *dhd);
 extern bool dhd_check_ap_wfd_mode_set(dhd_pub_t *dhd);
+extern bool dhd_os_check_hang(dhd_pub_t *dhdp, int ifidx, int ret);
 
 #define DHD_UNICAST_FILTER_NUM         0
 #define DHD_BROADCAST_FILTER_NUM       1
index 2222b02..a29c2fa 100644 (file)
@@ -300,7 +300,8 @@ dhd_wl_ioctl(dhd_pub_t *dhd_pub, int ifindex, wl_ioctl_t *ioc, void *buf, int le
        dhd_os_proto_block(dhd_pub);
 
        ret = dhd_prot_ioctl(dhd_pub, ifindex, ioc, buf, len);
-
+       if (!ret)
+               dhd_os_check_hang(dhd_pub, ifindex, ret);
 
        dhd_os_proto_unblock(dhd_pub);
        return ret;
index 014a40d..04152a0 100644 (file)
@@ -4546,6 +4546,14 @@ int dhd_ioctl_entry_local(struct net_device *net, wl_ioctl_t *ioc, int cmd)
        return ret;
 }
 
+bool dhd_os_check_hang(dhd_pub_t *dhdp, int ifidx, int ret)
+{
+       struct net_device *net;
+
+       net = dhd_idx2net(dhdp, ifidx);
+       return dhd_check_hang(net, dhdp, ret);
+}
+
 #ifdef PROP_TXSTATUS
 extern int dhd_wlfc_interface_entry_update(void* state,        ewlfc_mac_entry_action_t action, uint8 ifid,
        uint8 iftype, uint8* ea);