Search Linux Wireless

Re: [PATCH] mac80211: make retry limits part of hw config

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Saturday 11 October 2008, Johannes Berg wrote:
> Instead of having a separate callback, use the HW config callback
> with a new flag to change retry limits.
> 
> Not the cleanest of all patches in the driver area, but it should
> not change anything wrt. how they work.

For rt2x00 it looks good, the entire config handling in rt2x00 will
be changed anyway because of your patch 
	mac80211: introduce hw config change flags
Because that one really makes things easier. :)

Ivo

> Signed-off-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/ath9k/main.c       |    1 
>  drivers/net/wireless/b43/main.c         |   67 +++++++++++++-----------------
>  drivers/net/wireless/b43legacy/main.c   |   70 ++++++++++++++------------------
>  drivers/net/wireless/rt2x00/rt2400pci.c |    2 
>  drivers/net/wireless/rt2x00/rt2500pci.c |    2 
>  drivers/net/wireless/rt2x00/rt2x00.h    |    3 +
>  drivers/net/wireless/rt2x00/rt2x00mac.c |    9 ++++
>  drivers/net/wireless/rt2x00/rt61pci.c   |    2 
>  drivers/net/wireless/rt2x00/rt73usb.c   |    2 
>  include/net/mac80211.h                  |   14 ++++--
>  net/mac80211/debugfs.c                  |    4 -
>  net/mac80211/ieee80211_i.h              |    2 
>  net/mac80211/main.c                     |    4 -
>  net/mac80211/tx.c                       |    4 -
>  net/mac80211/wext.c                     |   28 +++++-------
>  15 files changed, 106 insertions(+), 108 deletions(-)
> 
> --- everything.orig/include/net/mac80211.h	2008-10-10 23:27:46.000000000 +0200
> +++ everything/include/net/mac80211.h	2008-10-10 23:31:21.000000000 +0200
> @@ -473,6 +473,7 @@ static inline int __deprecated __IEEE802
>   * @IEEE80211_CONF_CHANGE_PS: the PS flag changed
>   * @IEEE80211_CONF_CHANGE_POWER: the TX power changed
>   * @IEEE80211_CONF_CHANGE_CHANNEL: the channel changed
> + * @IEEE80211_CONF_CHANGE_RETRY_LIMITS: retry limits changed
>   */
>  enum ieee80211_conf_changed {
>  	IEEE80211_CONF_CHANGE_RADIO_ENABLED	= BIT(0),
> @@ -482,6 +483,7 @@ enum ieee80211_conf_changed {
>  	IEEE80211_CONF_CHANGE_PS		= BIT(4),
>  	IEEE80211_CONF_CHANGE_POWER		= BIT(5),
>  	IEEE80211_CONF_CHANGE_CHANNEL		= BIT(6),
> +	IEEE80211_CONF_CHANGE_RETRY_LIMITS	= BIT(7),
>  };
>  
>  /**
> @@ -497,6 +499,12 @@ enum ieee80211_conf_changed {
>   * @ht_cap: describes current self configuration of 802.11n HT capabilities
>   * @ht_bss_conf: describes current BSS configuration of 802.11n HT parameters
>   * @channel: the channel to tune to
> + * @long_frame_max_tx_count: Maximum number of transmissions for a "long" frame
> + *	(a frame not RTS protected), called "dot11LongRetryLimit" in 802.11,
> + *	but actually means the number of transmissions not the number of retries
> + * @short_frame_max_tx_count: Maximum number of transmissions for a "short" frame,
> + *	called "dot11ShortRetryLimit" in 802.11, but actually means the number
> + *	of transmissions not the number of retries
>   */
>  struct ieee80211_conf {
>  	int beacon_int;
> @@ -506,6 +514,8 @@ struct ieee80211_conf {
>  	u16 listen_interval;
>  	bool radio_enabled;
>  
> +	u8 long_frame_max_tx_count, short_frame_max_tx_count;
> +
>  	struct ieee80211_channel *channel;
>  
>  	struct ieee80211_sta_ht_cap ht_cap;
> @@ -1192,8 +1202,6 @@ enum ieee80211_ampdu_mlme_action {
>   *	the device does fragmentation by itself; if this method is assigned then
>   *	the stack will not do fragmentation.
>   *
> - * @set_retry_limit: Configuration of retry limits (if device needs it)
> - *
>   * @sta_notify: Notifies low level driver about addition or removal
>   *	of assocaited station or AP.
>   *
> @@ -1263,8 +1271,6 @@ struct ieee80211_ops {
>  			     u32 *iv32, u16 *iv16);
>  	int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value);
>  	int (*set_frag_threshold)(struct ieee80211_hw *hw, u32 value);
> -	int (*set_retry_limit)(struct ieee80211_hw *hw,
> -			       u32 short_retry, u32 long_retr);
>  	void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
>  			enum sta_notify_cmd, struct ieee80211_sta *sta);
>  	int (*conf_tx)(struct ieee80211_hw *hw, u16 queue,
> --- everything.orig/net/mac80211/ieee80211_i.h	2008-10-10 23:27:46.000000000 +0200
> +++ everything/net/mac80211/ieee80211_i.h	2008-10-10 23:31:22.000000000 +0200
> @@ -632,8 +632,6 @@ struct ieee80211_local {
>  
>  	int rts_threshold;
>  	int fragmentation_threshold;
> -	int short_retry_limit; /* dot11ShortRetryLimit */
> -	int long_retry_limit; /* dot11LongRetryLimit */
>  
>  	struct crypto_blkcipher *wep_tx_tfm;
>  	struct crypto_blkcipher *wep_rx_tfm;
> --- everything.orig/net/mac80211/main.c	2008-10-10 23:27:46.000000000 +0200
> +++ everything/net/mac80211/main.c	2008-10-10 23:31:22.000000000 +0200
> @@ -673,8 +673,8 @@ struct ieee80211_hw *ieee80211_alloc_hw(
>  
>  	local->rts_threshold = IEEE80211_MAX_RTS_THRESHOLD;
>  	local->fragmentation_threshold = IEEE80211_MAX_FRAG_THRESHOLD;
> -	local->short_retry_limit = 7;
> -	local->long_retry_limit = 4;
> +	local->hw.conf.long_frame_max_tx_count = 4;
> +	local->hw.conf.short_frame_max_tx_count = 7;
>  	local->hw.conf.radio_enabled = true;
>  
>  	INIT_LIST_HEAD(&local->interfaces);
> --- everything.orig/net/mac80211/wext.c	2008-10-10 23:27:46.000000000 +0200
> +++ everything/net/mac80211/wext.c	2008-10-10 23:31:22.000000000 +0200
> @@ -802,21 +802,16 @@ static int ieee80211_ioctl_siwretry(stru
>  	    (retry->flags & IW_RETRY_TYPE) != IW_RETRY_LIMIT)
>  		return -EINVAL;
>  
> -	if (retry->flags & IW_RETRY_MAX)
> -		local->long_retry_limit = retry->value;
> -	else if (retry->flags & IW_RETRY_MIN)
> -		local->short_retry_limit = retry->value;
> -	else {
> -		local->long_retry_limit = retry->value;
> -		local->short_retry_limit = retry->value;
> +	if (retry->flags & IW_RETRY_MAX) {
> +		local->hw.conf.long_frame_max_tx_count = retry->value;
> +	} else if (retry->flags & IW_RETRY_MIN) {
> +		local->hw.conf.short_frame_max_tx_count = retry->value;
> +	} else {
> +		local->hw.conf.long_frame_max_tx_count = retry->value;
> +		local->hw.conf.short_frame_max_tx_count = retry->value;
>  	}
>  
> -	if (local->ops->set_retry_limit) {
> -		return local->ops->set_retry_limit(
> -			local_to_hw(local),
> -			local->short_retry_limit,
> -			local->long_retry_limit);
> -	}
> +	ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_RETRY_LIMITS);
>  
>  	return 0;
>  }
> @@ -833,14 +828,15 @@ static int ieee80211_ioctl_giwretry(stru
>  		/* first return min value, iwconfig will ask max value
>  		 * later if needed */
>  		retry->flags |= IW_RETRY_LIMIT;
> -		retry->value = local->short_retry_limit;
> -		if (local->long_retry_limit != local->short_retry_limit)
> +		retry->value = local->hw.conf.short_frame_max_tx_count;
> +		if (local->hw.conf.long_frame_max_tx_count !=
> +		    local->hw.conf.short_frame_max_tx_count)
>  			retry->flags |= IW_RETRY_MIN;
>  		return 0;
>  	}
>  	if (retry->flags & IW_RETRY_MAX) {
>  		retry->flags = IW_RETRY_LIMIT | IW_RETRY_MAX;
> -		retry->value = local->long_retry_limit;
> +		retry->value = local->hw.conf.long_frame_max_tx_count;
>  	}
>  
>  	return 0;
> --- everything.orig/drivers/net/wireless/ath9k/main.c	2008-10-10 23:27:47.000000000 +0200
> +++ everything/drivers/net/wireless/ath9k/main.c	2008-10-10 23:31:23.000000000 +0200
> @@ -1657,7 +1657,6 @@ static struct ieee80211_ops ath9k_ops = 
>  	.get_tkip_seq       = NULL,
>  	.set_rts_threshold  = NULL,
>  	.set_frag_threshold = NULL,
> -	.set_retry_limit    = NULL,
>  	.get_tsf 	    = ath9k_get_tsf,
>  	.reset_tsf 	    = ath9k_reset_tsf,
>  	.tx_last_beacon     = NULL,
> --- everything.orig/drivers/net/wireless/b43/main.c	2008-10-10 23:27:47.000000000 +0200
> +++ everything/drivers/net/wireless/b43/main.c	2008-10-10 23:31:23.000000000 +0200
> @@ -3320,6 +3320,22 @@ init_failure:
>  	return err;
>  }
>  
> +/* Write the short and long frame retry limit values. */
> +static void b43_set_retry_limits(struct b43_wldev *dev,
> +				 unsigned int short_retry,
> +				 unsigned int long_retry)
> +{
> +	/* The retry limit is a 4-bit counter. Enforce this to avoid overflowing
> +	 * the chip-internal counter. */
> +	short_retry = min(short_retry, (unsigned int)0xF);
> +	long_retry = min(long_retry, (unsigned int)0xF);
> +
> +	b43_shm_write16(dev, B43_SHM_SCRATCH, B43_SHM_SC_SRLIMIT,
> +			short_retry);
> +	b43_shm_write16(dev, B43_SHM_SCRATCH, B43_SHM_SC_LRLIMIT,
> +			long_retry);
> +}
> +
>  static int b43_op_config(struct ieee80211_hw *hw, u32 changed)
>  {
>  	struct b43_wl *wl = hw_to_b43_wl(hw);
> @@ -3333,6 +3349,20 @@ static int b43_op_config(struct ieee8021
>  
>  	mutex_lock(&wl->mutex);
>  
> +	if (changed & IEEE80211_CONF_CHANGE_RETRY_LIMITS) {
> +		dev = wl->current_dev;
> +		if (unlikely(!dev || (b43_status(dev) < B43_STAT_INITIALIZED))) {
> +			err = -ENODEV;
> +			goto out_unlock_mutex;
> +		}
> +		b43_set_retry_limits(dev, conf->short_frame_max_tx_count,
> +					  conf->long_frame_max_tx_count);
> +		changed &= ~IEEE80211_CONF_CHANGE_RETRY_LIMITS;
> +	}
> +
> +	if (!changed)
> +		goto out_unlock_mutex;
> +
>  	/* Switch the band (if necessary). This might change the active core. */
>  	err = b43_switch_band(wl, conf->channel);
>  	if (err)
> @@ -3860,22 +3890,6 @@ static void b43_imcfglo_timeouts_workaro
>  #endif /* CONFIG_SSB_DRIVER_PCICORE */
>  }
>  
> -/* Write the short and long frame retry limit values. */
> -static void b43_set_retry_limits(struct b43_wldev *dev,
> -				 unsigned int short_retry,
> -				 unsigned int long_retry)
> -{
> -	/* The retry limit is a 4-bit counter. Enforce this to avoid overflowing
> -	 * the chip-internal counter. */
> -	short_retry = min(short_retry, (unsigned int)0xF);
> -	long_retry = min(long_retry, (unsigned int)0xF);
> -
> -	b43_shm_write16(dev, B43_SHM_SCRATCH, B43_SHM_SC_SRLIMIT,
> -			short_retry);
> -	b43_shm_write16(dev, B43_SHM_SCRATCH, B43_SHM_SC_LRLIMIT,
> -			long_retry);
> -}
> -
>  static void b43_set_synth_pu_delay(struct b43_wldev *dev, bool idle)
>  {
>  	u16 pu_delay;
> @@ -4196,26 +4210,6 @@ static void b43_op_stop(struct ieee80211
>  	cancel_work_sync(&(wl->txpower_adjust_work));
>  }
>  
> -static int b43_op_set_retry_limit(struct ieee80211_hw *hw,
> -				  u32 short_retry_limit, u32 long_retry_limit)
> -{
> -	struct b43_wl *wl = hw_to_b43_wl(hw);
> -	struct b43_wldev *dev;
> -	int err = 0;
> -
> -	mutex_lock(&wl->mutex);
> -	dev = wl->current_dev;
> -	if (unlikely(!dev || (b43_status(dev) < B43_STAT_INITIALIZED))) {
> -		err = -ENODEV;
> -		goto out_unlock;
> -	}
> -	b43_set_retry_limits(dev, short_retry_limit, long_retry_limit);
> -out_unlock:
> -	mutex_unlock(&wl->mutex);
> -
> -	return err;
> -}
> -
>  static int b43_op_beacon_set_tim(struct ieee80211_hw *hw,
>  				 struct ieee80211_sta *sta, bool set)
>  {
> @@ -4252,7 +4246,6 @@ static const struct ieee80211_ops b43_hw
>  	.get_tx_stats		= b43_op_get_tx_stats,
>  	.start			= b43_op_start,
>  	.stop			= b43_op_stop,
> -	.set_retry_limit	= b43_op_set_retry_limit,
>  	.set_tim		= b43_op_beacon_set_tim,
>  	.sta_notify		= b43_op_sta_notify,
>  };
> --- everything.orig/drivers/net/wireless/b43legacy/main.c	2008-10-10 23:27:47.000000000 +0200
> +++ everything/drivers/net/wireless/b43legacy/main.c	2008-10-10 23:31:23.000000000 +0200
> @@ -2556,6 +2556,20 @@ init_failure:
>  	return err;
>  }
>  
> +/* Write the short and long frame retry limit values. */
> +static void b43legacy_set_retry_limits(struct b43legacy_wldev *dev,
> +				       unsigned int short_retry,
> +				       unsigned int long_retry)
> +{
> +	/* The retry limit is a 4-bit counter. Enforce this to avoid overflowing
> +	 * the chip-internal counter. */
> +	short_retry = min(short_retry, (unsigned int)0xF);
> +	long_retry = min(long_retry, (unsigned int)0xF);
> +
> +	b43legacy_shm_write16(dev, B43legacy_SHM_WIRELESS, 0x0006, short_retry);
> +	b43legacy_shm_write16(dev, B43legacy_SHM_WIRELESS, 0x0007, long_retry);
> +}
> +
>  static int b43legacy_op_dev_config(struct ieee80211_hw *hw,
>  				   u32 changed)
>  {
> @@ -2570,10 +2584,27 @@ static int b43legacy_op_dev_config(struc
>  	int err = 0;
>  	u32 savedirqs;
>  
> +	mutex_lock(&wl->mutex);
> +	dev = wl->current_dev;
> +
> +	if (changed & IEEE80211_CONF_CHANGE_RETRY_LIMITS) {
> +		if (unlikely(!dev ||
> +			     (b43legacy_status(dev) < B43legacy_STAT_INITIALIZED))) {
> +			err = -ENODEV;
> +			goto out_unlock_mutex;
> +		}
> +		b43legacy_set_retry_limits(dev,
> +					   conf->short_frame_max_tx_count,
> +					   conf->long_frame_max_tx_count);
> +		changed &= ~IEEE80211_CONF_CHANGE_RETRY_LIMITS;
> +	}
> +
> +	if (!changed)
> +		goto out_unlock_mutex;
> +
>  	antenna_tx = B43legacy_ANTENNA_DEFAULT;
>  	antenna_rx = B43legacy_ANTENNA_DEFAULT;
>  
> -	mutex_lock(&wl->mutex);
>  	dev = wl->current_dev;
>  	phy = &dev->phy;
>  
> @@ -2989,20 +3020,6 @@ static void b43legacy_imcfglo_timeouts_w
>  #endif /* CONFIG_SSB_DRIVER_PCICORE */
>  }
>  
> -/* Write the short and long frame retry limit values. */
> -static void b43legacy_set_retry_limits(struct b43legacy_wldev *dev,
> -				       unsigned int short_retry,
> -				       unsigned int long_retry)
> -{
> -	/* The retry limit is a 4-bit counter. Enforce this to avoid overflowing
> -	 * the chip-internal counter. */
> -	short_retry = min(short_retry, (unsigned int)0xF);
> -	long_retry = min(long_retry, (unsigned int)0xF);
> -
> -	b43legacy_shm_write16(dev, B43legacy_SHM_WIRELESS, 0x0006, short_retry);
> -	b43legacy_shm_write16(dev, B43legacy_SHM_WIRELESS, 0x0007, long_retry);
> -}
> -
>  static void b43legacy_set_synth_pu_delay(struct b43legacy_wldev *dev,
>  					  bool idle) {
>  	u16 pu_delay = 1050;
> @@ -3367,28 +3384,6 @@ static void b43legacy_op_stop(struct iee
>  	mutex_unlock(&wl->mutex);
>  }
>  
> -static int b43legacy_op_set_retry_limit(struct ieee80211_hw *hw,
> -					u32 short_retry_limit,
> -					u32 long_retry_limit)
> -{
> -	struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw);
> -	struct b43legacy_wldev *dev;
> -	int err = 0;
> -
> -	mutex_lock(&wl->mutex);
> -	dev = wl->current_dev;
> -	if (unlikely(!dev ||
> -		     (b43legacy_status(dev) < B43legacy_STAT_INITIALIZED))) {
> -		err = -ENODEV;
> -		goto out_unlock;
> -	}
> -	b43legacy_set_retry_limits(dev, short_retry_limit, long_retry_limit);
> -out_unlock:
> -	mutex_unlock(&wl->mutex);
> -
> -	return err;
> -}
> -
>  static int b43legacy_op_beacon_set_tim(struct ieee80211_hw *hw,
>  				       struct ieee80211_sta *sta, bool set)
>  {
> @@ -3414,7 +3409,6 @@ static const struct ieee80211_ops b43leg
>  	.get_tx_stats		= b43legacy_op_get_tx_stats,
>  	.start			= b43legacy_op_start,
>  	.stop			= b43legacy_op_stop,
> -	.set_retry_limit	= b43legacy_op_set_retry_limit,
>  	.set_tim		= b43legacy_op_beacon_set_tim,
>  };
>  
> --- everything.orig/drivers/net/wireless/rt2x00/rt2400pci.c	2008-10-10 23:27:46.000000000 +0200
> +++ everything/drivers/net/wireless/rt2x00/rt2400pci.c	2008-10-10 23:27:48.000000000 +0200
> @@ -1576,7 +1576,6 @@ static const struct ieee80211_ops rt2400
>  	.config_interface	= rt2x00mac_config_interface,
>  	.configure_filter	= rt2x00mac_configure_filter,
>  	.get_stats		= rt2x00mac_get_stats,
> -	.set_retry_limit	= rt2400pci_set_retry_limit,
>  	.bss_info_changed	= rt2x00mac_bss_info_changed,
>  	.conf_tx		= rt2400pci_conf_tx,
>  	.get_tx_stats		= rt2x00mac_get_tx_stats,
> @@ -1605,6 +1604,7 @@ static const struct rt2x00lib_ops rt2400
>  	.config_intf		= rt2400pci_config_intf,
>  	.config_erp		= rt2400pci_config_erp,
>  	.config			= rt2400pci_config,
> +	.set_retry_limit	= rt2400pci_set_retry_limit,
>  };
>  
>  static const struct data_queue_desc rt2400pci_queue_rx = {
> --- everything.orig/drivers/net/wireless/rt2x00/rt2x00.h	2008-10-10 23:27:47.000000000 +0200
> +++ everything/drivers/net/wireless/rt2x00/rt2x00.h	2008-10-10 23:27:48.000000000 +0200
> @@ -599,6 +599,9 @@ struct rt2x00lib_ops {
>  #define CONFIG_UPDATE_SLOT_TIME 	( 1 << 5 )
>  #define CONFIG_UPDATE_BEACON_INT	( 1 << 6 )
>  #define CONFIG_UPDATE_ALL		0xffff
> +
> +	int (*set_retry_limit) (struct ieee80211_hw *hw,
> +				u32 short_limit, u32 long_limit);
>  };
>  
>  /*
> --- everything.orig/drivers/net/wireless/rt2x00/rt2500pci.c	2008-10-10 23:27:46.000000000 +0200
> +++ everything/drivers/net/wireless/rt2x00/rt2500pci.c	2008-10-10 23:27:48.000000000 +0200
> @@ -1877,7 +1877,6 @@ static const struct ieee80211_ops rt2500
>  	.config_interface	= rt2x00mac_config_interface,
>  	.configure_filter	= rt2x00mac_configure_filter,
>  	.get_stats		= rt2x00mac_get_stats,
> -	.set_retry_limit	= rt2500pci_set_retry_limit,
>  	.bss_info_changed	= rt2x00mac_bss_info_changed,
>  	.conf_tx		= rt2x00mac_conf_tx,
>  	.get_tx_stats		= rt2x00mac_get_tx_stats,
> @@ -1906,6 +1905,7 @@ static const struct rt2x00lib_ops rt2500
>  	.config_intf		= rt2500pci_config_intf,
>  	.config_erp		= rt2500pci_config_erp,
>  	.config			= rt2500pci_config,
> +	.set_retry_limit	= rt2500pci_set_retry_limit,
>  };
>  
>  static const struct data_queue_desc rt2500pci_queue_rx = {
> --- everything.orig/drivers/net/wireless/rt2x00/rt61pci.c	2008-10-10 23:27:47.000000000 +0200
> +++ everything/drivers/net/wireless/rt2x00/rt61pci.c	2008-10-10 23:27:48.000000000 +0200
> @@ -2726,7 +2726,6 @@ static const struct ieee80211_ops rt61pc
>  	.configure_filter	= rt2x00mac_configure_filter,
>  	.set_key		= rt2x00mac_set_key,
>  	.get_stats		= rt2x00mac_get_stats,
> -	.set_retry_limit	= rt61pci_set_retry_limit,
>  	.bss_info_changed	= rt2x00mac_bss_info_changed,
>  	.conf_tx		= rt61pci_conf_tx,
>  	.get_tx_stats		= rt2x00mac_get_tx_stats,
> @@ -2759,6 +2758,7 @@ static const struct rt2x00lib_ops rt61pc
>  	.config_intf		= rt61pci_config_intf,
>  	.config_erp		= rt61pci_config_erp,
>  	.config			= rt61pci_config,
> +	.set_retry_limit	= rt61pci_set_retry_limit,
>  };
>  
>  static const struct data_queue_desc rt61pci_queue_rx = {
> --- everything.orig/drivers/net/wireless/rt2x00/rt73usb.c	2008-10-10 23:27:47.000000000 +0200
> +++ everything/drivers/net/wireless/rt2x00/rt73usb.c	2008-10-10 23:27:48.000000000 +0200
> @@ -2317,7 +2317,6 @@ static const struct ieee80211_ops rt73us
>  	.configure_filter	= rt2x00mac_configure_filter,
>  	.set_key		= rt2x00mac_set_key,
>  	.get_stats		= rt2x00mac_get_stats,
> -	.set_retry_limit	= rt73usb_set_retry_limit,
>  	.bss_info_changed	= rt2x00mac_bss_info_changed,
>  	.conf_tx		= rt73usb_conf_tx,
>  	.get_tx_stats		= rt2x00mac_get_tx_stats,
> @@ -2349,6 +2348,7 @@ static const struct rt2x00lib_ops rt73us
>  	.config_intf		= rt73usb_config_intf,
>  	.config_erp		= rt73usb_config_erp,
>  	.config			= rt73usb_config,
> +	.set_retry_limit	= rt73usb_set_retry_limit,
>  };
>  
>  static const struct data_queue_desc rt73usb_queue_rx = {
> --- everything.orig/drivers/net/wireless/rt2x00/rt2x00mac.c	2008-10-10 23:27:46.000000000 +0200
> +++ everything/drivers/net/wireless/rt2x00/rt2x00mac.c	2008-10-10 23:31:23.000000000 +0200
> @@ -349,6 +349,15 @@ int rt2x00mac_config(struct ieee80211_hw
>  	if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
>  		return 0;
>  
> +	if (changed & IEEE80211_CONF_CHANGE_RETRY_LIMITS) {
> +		rt2x00dev->ops->lib->set_retry_limit(hw,
> +			conf->short_frame_max_tx_count,
> +			conf->long_frame_max_tx_count);
> +	}
> +	changed &= ~IEEE80211_CONF_CHANGE_RETRY_LIMITS;
> +	if (!changed)
> +		return 0;
> +
>  	/*
>  	 * Only change device state when the radio is enabled. It does not
>  	 * matter what parameters we have configured when the radio is disabled
> --- everything.orig/net/mac80211/debugfs.c	2008-10-10 23:27:46.000000000 +0200
> +++ everything/net/mac80211/debugfs.c	2008-10-10 23:27:48.000000000 +0200
> @@ -52,9 +52,9 @@ DEBUGFS_READONLY_FILE(rts_threshold, 20,
>  DEBUGFS_READONLY_FILE(fragmentation_threshold, 20, "%d",
>  		      local->fragmentation_threshold);
>  DEBUGFS_READONLY_FILE(short_retry_limit, 20, "%d",
> -		      local->short_retry_limit);
> +		      local->hw.conf.short_frame_max_tx_count);
>  DEBUGFS_READONLY_FILE(long_retry_limit, 20, "%d",
> -		      local->long_retry_limit);
> +		      local->hw.conf.long_frame_max_tx_count);
>  DEBUGFS_READONLY_FILE(total_ps_buffered, 20, "%d",
>  		      local->total_ps_buffered);
>  DEBUGFS_READONLY_FILE(wep_iv, 20, "%#06x",
> --- everything.orig/net/mac80211/tx.c	2008-10-10 23:27:46.000000000 +0200
> +++ everything/net/mac80211/tx.c	2008-10-10 23:31:22.000000000 +0200
> @@ -507,10 +507,10 @@ ieee80211_tx_h_misc(struct ieee80211_tx_
>  				info->flags |=
>  					IEEE80211_TX_CTL_LONG_RETRY_LIMIT;
>  				info->control.retry_limit =
> -					tx->local->long_retry_limit;
> +					tx->local->hw.conf.long_frame_max_tx_count - 1;
>  			} else {
>  				info->control.retry_limit =
> -					tx->local->short_retry_limit;
> +					tx->local->hw.conf.short_frame_max_tx_count - 1;
>  			}
>  		} else {
>  			info->control.retry_limit = 1;
> 
> 
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux