[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