[PATCH] iwlagn: fix time interval misuse in iwl_poll_{direct_}bit
Tim Gardner
tim.gardner at canonical.com
Tue Mar 3 04:37:56 UTC 2009
Huaxu Wan wrote:
> From 0d735a601a3e3544138d26346037ef17a6374ce6 Mon Sep 17 00:00:00 2001
> From: Huaxu Wan <huaxu.wan at intel.com>
> Date: Tue, 24 Feb 2009 16:55:15 +0800
> Subject: [PATCH] iwlagn: fix time interval misuse in iwl_poll_{direct_}bit
>
> Original Author: Zhu, Yi <yi.zhu at intel.com>
> http://marc.info/?l=linux-wireless&m=122849275528102&w=2
>
> 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: Huaxu Wan <huaxu.wan at intel.com>
>
> ---
> drivers/net/wireless/iwlwifi/iwl-3945-io.h | 4 ++--
> drivers/net/wireless/iwlwifi/iwl-io.h | 4 ++--
> drivers/net/wireless/iwlwifi/iwl-tx.c | 2 +-
> 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 b3fe48d..d1a9f7c 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,
> do {
> if ((_iwl3945_read32(priv, addr) & mask) == (bits & mask))
> return i;
> - mdelay(10);
> + udelay(10);
> i += 10;
> } while (i < timeout);
>
> @@ -276,7 +276,7 @@ static inline int _iwl3945_poll_direct_bit(struct iwl3945_priv *priv,
> do {
> if ((_iwl3945_read_direct32(priv, addr) & mask) == mask)
> return i;
> - mdelay(10);
> + udelay(10);
> i += 10;
> } while (i < timeout);
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-io.h b/drivers/net/wireless/iwlwifi/iwl-io.h
> index 9740fcc..0314999 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,
> do {
> if ((_iwl_read32(priv, addr) & mask) == (bits & mask))
> return i;
> - mdelay(10);
> + udelay(10);
> i += 10;
> } while (i < timeout);
>
> @@ -277,7 +277,7 @@ static inline int _iwl_poll_direct_bit(struct iwl_priv *priv,
> do {
> if ((_iwl_read_direct32(priv, addr) & mask) == mask)
> return i;
> - mdelay(10);
> + udelay(10);
> i += 10;
> } while (i < timeout);
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
> index 907a53e..9e435bc 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-tx.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
> @@ -567,7 +567,7 @@ void iwl_txq_ctx_stop(struct iwl_priv *priv)
> FH_TCSR_CHNL_TX_CONFIG_REG(txq_id), 0x0);
> iwl_poll_direct_bit(priv, FH_TSSR_TX_STATUS_REG,
> FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE
> - (txq_id), 200);
> + (txq_id), 1000);
> }
> iwl_release_nic_access(priv);
> spin_unlock_irqrestore(&priv->lock, flags);
Applied to Jaunty
--
Tim Gardner tim.gardner at canonical.com
More information about the kernel-team
mailing list