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)
committerDmitry Shmidt <dimitrysh@google.com>
Fri, 4 Nov 2011 16:56:02 +0000 (09:56 -0700)
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 0ea5d4a9961d8804f8c73500c37e1c027926b3fc..e4732612759de162454e830c6b8ae63e07c63056 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 2222b029f51c0e134882bf7a49807eafa0608e9e..a29c2fab28cd67ba33e5062bef7875fee4c9fe42 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 014a40dc6c8c6061a27c36b068fc2937f686265a..04152a04320de5d773e922fc79e38f23054971aa 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);