]> err.no Git - linux-2.6/commitdiff
iwlwifi: blocking mac_start until uCode is complete
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Mon, 30 Jun 2008 09:23:24 +0000 (17:23 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 30 Jun 2008 21:37:44 +0000 (17:37 -0400)
This patch makes iwl4965_mac_start block until the uCode has been
completely loaded.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl4965-base.c

index f1cf4b1fd5acb6deaf9624e4e36a99809c9b49fc..e9b6f3099d8e9bc2d88b2c354b6bd78e99a486e7 100644 (file)
@@ -2566,7 +2566,7 @@ static void iwl_bg_scan_completed(struct work_struct *work)
  *
  *****************************************************************************/
 
-#define UCODE_READY_TIMEOUT    (2 * HZ)
+#define UCODE_READY_TIMEOUT    (4 * HZ)
 
 static int iwl4965_mac_start(struct ieee80211_hw *hw)
 {
@@ -2619,17 +2619,15 @@ static int iwl4965_mac_start(struct ieee80211_hw *hw)
 
        /* Wait for START_ALIVE from Run Time ucode. Otherwise callbacks from
         * mac80211 will not be run successfully. */
-       if (priv->ucode_type == UCODE_RT) {
-               ret = wait_event_interruptible_timeout(priv->wait_command_queue,
-                               test_bit(STATUS_READY, &priv->status),
-                               UCODE_READY_TIMEOUT);
-               if (!ret) {
-                       if (!test_bit(STATUS_READY, &priv->status)) {
-                               IWL_ERROR("START_ALIVE timeout after %dms.\n",
-                                       jiffies_to_msecs(UCODE_READY_TIMEOUT));
-                               ret = -ETIMEDOUT;
-                               goto out_release_irq;
-                       }
+       ret = wait_event_interruptible_timeout(priv->wait_command_queue,
+                       test_bit(STATUS_READY, &priv->status),
+                       UCODE_READY_TIMEOUT);
+       if (!ret) {
+               if (!test_bit(STATUS_READY, &priv->status)) {
+                       IWL_ERROR("START_ALIVE timeout after %dms.\n",
+                               jiffies_to_msecs(UCODE_READY_TIMEOUT));
+                       ret = -ETIMEDOUT;
+                       goto out_release_irq;
                }
 
                priv->is_open = 1;