aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-04-13 06:14:52 -0400
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2011-04-22 13:21:23 -0400
commit4cd2bf76a40a148bc92f4a3d17bc7f94277b0410 (patch)
tree5748b305933dff85a98d1f356da44d6f94da4272 /drivers/net/wireless/iwlwifi
parentdbf28e21ca391110e90ccad05dda79d2e2f60e0e (diff)
iwlagn: remove hw_ready variable
This variable is only ever checked right after the function that sets it, but the same function will also return the status, so we can pass it through instead of checking hw_ready later. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c29
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h1
3 files changed, 15 insertions, 18 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 8216e5ca918b..e202a40cbcb7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -2306,8 +2306,7 @@ int iwlagn_start_device(struct iwl_priv *priv)
2306{ 2306{
2307 int ret; 2307 int ret;
2308 2308
2309 iwl_prepare_card_hw(priv); 2309 if (iwl_prepare_card_hw(priv)) {
2310 if (!priv->hw_ready) {
2311 IWL_WARN(priv, "Exit HW not ready\n"); 2310 IWL_WARN(priv, "Exit HW not ready\n");
2312 return -EIO; 2311 return -EIO;
2313 } 2312 }
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index f30735b656c0..a4f1009cb137 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2367,9 +2367,10 @@ static void iwl_down(struct iwl_priv *priv)
2367 2367
2368#define HW_READY_TIMEOUT (50) 2368#define HW_READY_TIMEOUT (50)
2369 2369
2370/* Note: returns poll_bit return value, which is >= 0 if success */
2370static int iwl_set_hw_ready(struct iwl_priv *priv) 2371static int iwl_set_hw_ready(struct iwl_priv *priv)
2371{ 2372{
2372 int ret = 0; 2373 int ret;
2373 2374
2374 iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG, 2375 iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG,
2375 CSR_HW_IF_CONFIG_REG_BIT_NIC_READY); 2376 CSR_HW_IF_CONFIG_REG_BIT_NIC_READY);
@@ -2379,25 +2380,21 @@ static int iwl_set_hw_ready(struct iwl_priv *priv)
2379 CSR_HW_IF_CONFIG_REG_BIT_NIC_READY, 2380 CSR_HW_IF_CONFIG_REG_BIT_NIC_READY,
2380 CSR_HW_IF_CONFIG_REG_BIT_NIC_READY, 2381 CSR_HW_IF_CONFIG_REG_BIT_NIC_READY,
2381 HW_READY_TIMEOUT); 2382 HW_READY_TIMEOUT);
2382 if (ret != -ETIMEDOUT)
2383 priv->hw_ready = true;
2384 else
2385 priv->hw_ready = false;
2386 2383
2387 IWL_DEBUG_INFO(priv, "hardware %s\n", 2384 IWL_DEBUG_INFO(priv, "hardware%s ready\n", ret < 0 ? " not" : "");
2388 (priv->hw_ready == 1) ? "ready" : "not ready");
2389 return ret; 2385 return ret;
2390} 2386}
2391 2387
2388/* Note: returns standard 0/-ERROR code */
2392int iwl_prepare_card_hw(struct iwl_priv *priv) 2389int iwl_prepare_card_hw(struct iwl_priv *priv)
2393{ 2390{
2394 int ret = 0; 2391 int ret;
2395 2392
2396 IWL_DEBUG_INFO(priv, "iwl_prepare_card_hw enter\n"); 2393 IWL_DEBUG_INFO(priv, "iwl_prepare_card_hw enter\n");
2397 2394
2398 ret = iwl_set_hw_ready(priv); 2395 ret = iwl_set_hw_ready(priv);
2399 if (priv->hw_ready) 2396 if (ret >= 0)
2400 return ret; 2397 return 0;
2401 2398
2402 /* If HW is not ready, prepare the conditions to check again */ 2399 /* If HW is not ready, prepare the conditions to check again */
2403 iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG, 2400 iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG,
@@ -2407,10 +2404,13 @@ int iwl_prepare_card_hw(struct iwl_priv *priv)
2407 ~CSR_HW_IF_CONFIG_REG_BIT_NIC_PREPARE_DONE, 2404 ~CSR_HW_IF_CONFIG_REG_BIT_NIC_PREPARE_DONE,
2408 CSR_HW_IF_CONFIG_REG_BIT_NIC_PREPARE_DONE, 150000); 2405 CSR_HW_IF_CONFIG_REG_BIT_NIC_PREPARE_DONE, 150000);
2409 2406
2410 /* HW should be ready by now, check again. */ 2407 if (ret < 0)
2411 if (ret != -ETIMEDOUT) 2408 return ret;
2412 iwl_set_hw_ready(priv);
2413 2409
2410 /* HW should be ready by now, check again. */
2411 ret = iwl_set_hw_ready(priv);
2412 if (ret >= 0)
2413 return 0;
2414 return ret; 2414 return ret;
2415} 2415}
2416 2416
@@ -3741,8 +3741,7 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3741 * PCI Tx retries from interfering with C3 CPU state */ 3741 * PCI Tx retries from interfering with C3 CPU state */
3742 pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00); 3742 pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00);
3743 3743
3744 iwl_prepare_card_hw(priv); 3744 if (iwl_prepare_card_hw(priv)) {
3745 if (!priv->hw_ready) {
3746 IWL_WARN(priv, "Failed, HW not ready\n"); 3745 IWL_WARN(priv, "Failed, HW not ready\n");
3747 goto out_iounmap; 3746 goto out_iounmap;
3748 } 3747 }
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 857eb0e9e397..197fa742f79a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1503,7 +1503,6 @@ struct iwl_priv {
1503 struct timer_list statistics_periodic; 1503 struct timer_list statistics_periodic;
1504 struct timer_list ucode_trace; 1504 struct timer_list ucode_trace;
1505 struct timer_list watchdog; 1505 struct timer_list watchdog;
1506 bool hw_ready;
1507 1506
1508 struct iwl_event_log event_log; 1507 struct iwl_event_log event_log;
1509 1508