diff options
author | Felix Fietkau <nbd@openwrt.org> | 2008-10-10 01:45:35 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2008-10-10 01:45:35 +0000 |
commit | 4802f81b70667e73a822710cd8a2482168ef6096 (patch) | |
tree | 55a0da7136b9919ad4675101c3a3bf477e48a04d /package/mac80211/patches/300-minstrel_no_mrr.patch | |
parent | 2351e523b9c9f866b45245d42be671cf50c77699 (diff) | |
download | master-187ad058-4802f81b70667e73a822710cd8a2482168ef6096.tar.gz master-187ad058-4802f81b70667e73a822710cd8a2482168ef6096.tar.bz2 master-187ad058-4802f81b70667e73a822710cd8a2482168ef6096.zip |
update to latest compat-wireless version and add some new minstrel/b43 fixes
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12939 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/300-minstrel_no_mrr.patch')
-rw-r--r-- | package/mac80211/patches/300-minstrel_no_mrr.patch | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/package/mac80211/patches/300-minstrel_no_mrr.patch b/package/mac80211/patches/300-minstrel_no_mrr.patch new file mode 100644 index 0000000000..d4c04c4d8b --- /dev/null +++ b/package/mac80211/patches/300-minstrel_no_mrr.patch @@ -0,0 +1,31 @@ +This fixes tx status processing for drivers that do not support mrr. +If the retry count is bigger than the maximum retry count configured in +the hardware, do not count the rate attempt as successful, the hardware +has probably switched to a lower rate. + +Signed-off-by: Felix Fietkau <nbd@openwrt.org> + +--- a/net/mac80211/rc80211_minstrel.c ++++ b/net/mac80211/rc80211_minstrel.c +@@ -171,6 +171,7 @@ minstrel_tx_status(void *priv, struct ie + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct ieee80211_tx_altrate *ar = info->status.retries; + struct minstrel_priv *mp = priv; ++ struct ieee80211_local *local = hw_to_local(mp->hw); + int i, ndx, tries; + int success = 0; + +@@ -180,6 +181,13 @@ minstrel_tx_status(void *priv, struct ie + if (!mp->has_mrr || (ar[0].rate_idx < 0)) { + ndx = rix_to_ndx(mi, info->tx_rate_idx); + tries = info->status.retry_count + 1; ++ ++ /* If the driver does not support the MRR API, but uses ++ * a fallback rate, use the long retry limit as indication ++ * that a rate switch has happened */ ++ if (!mp->has_mrr && (tries >= local->long_retry_limit)) ++ success = 0; ++ + mi->r[ndx].success += success; + mi->r[ndx].attempts += tries; + return; |