507 lines
19 KiB
Diff
507 lines
19 KiB
Diff
|
---
|
||
|
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;
|