aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorZhu, Yi <yi.zhu@intel.com>2008-12-05 10:58:38 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-12-12 13:48:21 -0500
commitf056658bb9c3085d5ec52fbdd45b38d55b899cc9 (patch)
treebebb9e05a6c9b870383280ca0bb547ee577d762a /drivers/net/wireless
parent7262796ab726fcefad9b588a44d1d5a9f221051f (diff)
iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit
The patch fixes the misuse of microsecond with millisecond in the polling mechanism of the iwlwifi driver. The impact of this problem is the unacceptable latency for the whole system (especially during bringing down the wlan interface). Signed-off-by: Zhu Yi <yi.zhu@intel.com> Acked-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945-io.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-io.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-tx.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-io.h b/drivers/net/wireless/iwlwifi/iwl-3945-io.h
index 7dea1552a906..2f749432e4bc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945-io.h
+++ b/drivers/net/wireless/iwlwifi/iwl-3945-io.h
@@ -93,7 +93,7 @@ static inline int _iwl3945_poll_bit(struct iwl3945_priv *priv, u32 addr,
93 do { 93 do {
94 if ((_iwl3945_read32(priv, addr) & mask) == (bits & mask)) 94 if ((_iwl3945_read32(priv, addr) & mask) == (bits & mask))
95 return i; 95 return i;
96 mdelay(10); 96 udelay(10);
97 i += 10; 97 i += 10;
98 } while (i < timeout); 98 } while (i < timeout);
99 99
@@ -276,7 +276,7 @@ static inline int _iwl3945_poll_direct_bit(struct iwl3945_priv *priv,
276 do { 276 do {
277 if ((_iwl3945_read_direct32(priv, addr) & mask) == mask) 277 if ((_iwl3945_read_direct32(priv, addr) & mask) == mask)
278 return i; 278 return i;
279 mdelay(10); 279 udelay(10);
280 i += 10; 280 i += 10;
281 } while (i < timeout); 281 } while (i < timeout);
282 282
diff --git a/drivers/net/wireless/iwlwifi/iwl-io.h b/drivers/net/wireless/iwlwifi/iwl-io.h
index bc10435d96e5..a5c489af937a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-io.h
+++ b/drivers/net/wireless/iwlwifi/iwl-io.h
@@ -95,7 +95,7 @@ static inline int _iwl_poll_bit(struct iwl_priv *priv, u32 addr,
95 do { 95 do {
96 if ((_iwl_read32(priv, addr) & mask) == (bits & mask)) 96 if ((_iwl_read32(priv, addr) & mask) == (bits & mask))
97 return i; 97 return i;
98 mdelay(10); 98 udelay(10);
99 i += 10; 99 i += 10;
100 } while (i < timeout); 100 } while (i < timeout);
101 101
@@ -277,7 +277,7 @@ static inline int _iwl_poll_direct_bit(struct iwl_priv *priv,
277 do { 277 do {
278 if ((_iwl_read_direct32(priv, addr) & mask) == mask) 278 if ((_iwl_read_direct32(priv, addr) & mask) == mask)
279 return i; 279 return i;
280 mdelay(10); 280 udelay(10);
281 i += 10; 281 i += 10;
282 } while (i < timeout); 282 } while (i < timeout);
283 283
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
index 18d6cf67d9b7..9d7e45f6a53d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
@@ -628,7 +628,7 @@ void iwl_txq_ctx_stop(struct iwl_priv *priv)
628 iwl_write_direct32(priv, FH_TCSR_CHNL_TX_CONFIG_REG(ch), 0x0); 628 iwl_write_direct32(priv, FH_TCSR_CHNL_TX_CONFIG_REG(ch), 0x0);
629 iwl_poll_direct_bit(priv, FH_TSSR_TX_STATUS_REG, 629 iwl_poll_direct_bit(priv, FH_TSSR_TX_STATUS_REG,
630 FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch), 630 FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch),
631 200); 631 1000);
632 } 632 }
633 iwl_release_nic_access(priv); 633 iwl_release_nic_access(priv);
634 spin_unlock_irqrestore(&priv->lock, flags); 634 spin_unlock_irqrestore(&priv->lock, flags);