From: "Eugene San (eugenesan)" <eugene...@gmail.com>

Signed-off-by: Eugene San (eugenesan) <eugene...@gmail.com>
---
 package/mac80211/Makefile                          |    4 +-
 .../701-mwl8k-firmware-reload-workaround.patch     |   29 ++++++++++++++++++++
 2 files changed, 31 insertions(+), 2 deletions(-)
 create mode 100644 
package/mac80211/patches/701-mwl8k-firmware-reload-workaround.patch

diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile
index e2942f8..3fdd691 100644
--- a/package/mac80211/Makefile
+++ b/package/mac80211/Makefile
@@ -1326,14 +1326,14 @@ define KernelPackage/ath9k-htc/install
 endef
 
 define KernelPackage/mwl8k/install
-       $(INSTALL_DIR) $(1)/lib/firmware
+       $(INSTALL_DIR) $(1)/lib/firmware/mwl8k/
        $(INSTALL_DATA) \
                
$(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8366_ap-2.fw \
                
$(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8366.fw \
                
$(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/helper_8366.fw \
                
$(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8687.fw \
                
$(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/helper_8687.fw \
-               $(1)/lib/firmware/
+               $(1)/lib/firmware/mwl8k/
 endef
 
 define KernelPackage/net-ipw2100/install
diff --git 
a/package/mac80211/patches/701-mwl8k-firmware-reload-workaround.patch 
b/package/mac80211/patches/701-mwl8k-firmware-reload-workaround.patch
new file mode 100644
index 0000000..7c09699
--- /dev/null
+++ b/package/mac80211/patches/701-mwl8k-firmware-reload-workaround.patch
@@ -0,0 +1,29 @@
+--- a/drivers/net/wireless/mwl8k.c
++++ b/drivers/net/wireless/mwl8k.c
+@@ -5470,7 +5470,7 @@
+  */
+ static int mwl8k_reload_firmware(struct ieee80211_hw *hw, char *fw_image)
+ {
+-      int i, rc = 0;
++      int i, rc, loops = 0;
+       struct mwl8k_priv *priv = hw->priv;
+ 
+       mwl8k_stop(hw);
+@@ -5479,7 +5479,16 @@
+       for (i = 0; i < mwl8k_tx_queues(priv); i++)
+               mwl8k_txq_deinit(hw, i);
+ 
+-      rc = mwl8k_init_firmware(hw, fw_image, false);
++      loops = 5;
++      do {
++              rc = mwl8k_init_firmware(hw, fw_image, false);
++              if (rc)
++                      printk(KERN_WARNING "mwl8k: Failed to init firmware, 
will retry in 5 seconds @%s:%d.\n", __FUNCTION__, __LINE__);
++              else
++                      break;
++
++              msleep(5000);
++      } while (--loops);
+       if (rc)
+               goto fail;
+ 
-- 
1.7.6

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to