net: wireless: bcmdhd: Fix driver hang when resetting
Mike J. Chen [Thu, 16 Feb 2012 05:54:57 +0000 (21:54 -0800)]
bus->tx_max was not being initialized when we do a reset and
the driver is statically linked.  this led to about a 50%
chance that it would be considered an illegal value when
we send the mac address to the FW.  add code to initialize
it to a safe value until we receive the right value from the fw.

Bug: 5974574

Change-Id: I28ab25d97203ef075e5354c25f85a25daaff5594
Signed-off-by: Mike J. Chen <mjchen@google.com>
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>

drivers/net/wireless/bcmdhd/dhd_sdio.c

index 196dc7a..0531663 100644 (file)
@@ -3061,6 +3061,13 @@ dhd_bus_stop(struct dhd_bus *bus, bool enforce_mutex)
        bus->rxskip = FALSE;
        bus->tx_seq = bus->rx_seq = 0;
 
+       /* Set to a safe default.  It gets updated when we
+        * receive a packet from the fw but when we reset,
+        * we need a safe default to be able to send the
+        * initial mac address.
+        */
+       bus->tx_max = 4;
+
        if (enforce_mutex)
                dhd_os_sdunlock(bus->dhd);
 }