diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2008-06-30 11:23:24 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-06-30 23:37:44 +0200 |
commit | 154b25ce9218fbe6eebacef7907fabf6d663e639 (patch) | |
tree | 2d2615ad4639f0626630642d6c00bad26e46c8e9 | |
parent | iwlwifi: eliminate iwl4965_mac_get_tsf (diff) | |
download | linux-154b25ce9218fbe6eebacef7907fabf6d663e639.tar.xz linux-154b25ce9218fbe6eebacef7907fabf6d663e639.zip |
iwlwifi: blocking mac_start until uCode is complete
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>
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index f1cf4b1fd5ac..e9b6f3099d8e 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c @@ -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; |