From: Ivo van Doorn <ivdoorn@gmail.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: John Linville <linville@tuxdriver.com>,
linux-wireless <linux-wireless@vger.kernel.org>,
Michael Buesch <mb@bu3sch.de>
Subject: Re: [PATCH] mac80211: make retry limits part of hw config
Date: Sat, 11 Oct 2008 15:40:06 +0200 [thread overview]
Message-ID: <200810111540.06457.IvDoorn@gmail.com> (raw)
In-Reply-To: <1223682835.29811.10.camel@johannes.berg>
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@sipsolutions.net>
> ---
> 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;
>
>
>
next prev parent reply other threads:[~2008-10-11 13:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-10 23:53 [PATCH] mac80211: make retry limits part of hw config Johannes Berg
2008-10-11 13:40 ` Ivo van Doorn [this message]
2008-10-11 13:46 ` Johannes Berg
2008-10-11 13:41 ` Michael Buesch
2008-10-11 13:48 ` Johannes Berg
2008-10-14 17:17 ` [PATCH v2] " Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200810111540.06457.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=mb@bu3sch.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.