diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-rs.c')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 29 | 
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c index d03b4734c89..dbe6295bbf2 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c @@ -1,6 +1,6 @@  /******************************************************************************   * - * Copyright(c) 2005 - 2010 Intel Corporation. All rights reserved. + * Copyright(c) 2005 - 2011 Intel Corporation. All rights reserved.   *   * This program is free software; you can redistribute it and/or modify it   * under the terms of version 2 of the GNU General Public License as @@ -115,13 +115,18 @@ const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT] = {  	/* FIXME:RS:          ^^    should be INV (legacy) */  }; +static inline u8 rs_extract_rate(u32 rate_n_flags) +{ +	return (u8)(rate_n_flags & RATE_MCS_RATE_MSK); +} +  static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags)  {  	int idx = 0;  	/* HT rate format */  	if (rate_n_flags & RATE_MCS_HT_MSK) { -		idx = (rate_n_flags & 0xff); +		idx = rs_extract_rate(rate_n_flags);  		if (idx >= IWL_RATE_MIMO3_6M_PLCP)  			idx = idx - IWL_RATE_MIMO3_6M_PLCP; @@ -138,7 +143,8 @@ static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags)  	/* legacy rate format, search for match in table */  	} else {  		for (idx = 0; idx < ARRAY_SIZE(iwl_rates); idx++) -			if (iwl_rates[idx].plcp == (rate_n_flags & 0xFF)) +			if (iwl_rates[idx].plcp == +					rs_extract_rate(rate_n_flags))  				return idx;  	} @@ -239,11 +245,6 @@ static const struct iwl_rate_mcs_info iwl_rate_mcs[IWL_RATE_COUNT] = {  #define MCS_INDEX_PER_STREAM	(8) -static inline u8 rs_extract_rate(u32 rate_n_flags) -{ -	return (u8)(rate_n_flags & 0xFF); -} -  static void rs_rate_scale_clear_window(struct iwl_rate_scale_data *window)  {  	window->data = 0; @@ -2770,16 +2771,13 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, void *priv_sta,  static void *rs_alloc_sta(void *priv_rate, struct ieee80211_sta *sta,  			  gfp_t gfp)  { -	struct iwl_lq_sta *lq_sta;  	struct iwl_station_priv *sta_priv = (struct iwl_station_priv *) sta->drv_priv;  	struct iwl_priv *priv;  	priv = (struct iwl_priv *)priv_rate;  	IWL_DEBUG_RATE(priv, "create station rate scale window\n"); -	lq_sta = &sta_priv->lq_sta; - -	return lq_sta; +	return &sta_priv->lq_sta;  }  /* @@ -2912,7 +2910,8 @@ static void rs_fill_link_cmd(struct iwl_priv *priv,  		ant_toggle_cnt = 1;  		repeat_rate = IWL_NUMBER_TRY;  	} else { -		repeat_rate = IWL_HT_NUMBER_TRY; +		repeat_rate = min(IWL_HT_NUMBER_TRY, +				  LINK_QUAL_AGG_DISABLE_START_DEF - 1);  	}  	lq_cmd->general_params.mimo_delimiter = @@ -3257,7 +3256,6 @@ static ssize_t rs_sta_dbgfs_rate_scale_data_read(struct file *file,  {  	char buff[120];  	int desc = 0; -	ssize_t ret;  	struct iwl_lq_sta *lq_sta = file->private_data;  	struct iwl_priv *priv; @@ -3274,8 +3272,7 @@ static ssize_t rs_sta_dbgfs_rate_scale_data_read(struct file *file,  				"Bit Rate= %d Mb/s\n",  				iwl_rates[lq_sta->last_txrate_idx].ieee >> 1); -	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc); -	return ret; +	return simple_read_from_buffer(user_buf, count, ppos, buff, desc);  }  static const struct file_operations rs_sta_dbgfs_rate_scale_data_ops = {  |