mac80211: backport from trunk
[openwrt-10.03/.git] / package / mac80211 / patches / 520-mac80211_minstrel_ht_aggr_delay.patch
diff --git a/package/mac80211/patches/520-mac80211_minstrel_ht_aggr_delay.patch b/package/mac80211/patches/520-mac80211_minstrel_ht_aggr_delay.patch
deleted file mode 100644 (file)
index 8f074f0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/net/mac80211/rc80211_minstrel_ht.c
-+++ b/net/mac80211/rc80211_minstrel_ht.c
-@@ -357,10 +357,12 @@ minstrel_downgrade_rate(struct minstrel_
- }
- static void
--minstrel_aggr_check(struct minstrel_priv *mp, struct ieee80211_sta *pubsta, struct sk_buff *skb)
-+minstrel_aggr_check(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
-+                  struct ieee80211_sta *pubsta, struct sk_buff *skb)
- {
-       struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
-       struct sta_info *sta = container_of(pubsta, struct sta_info, sta);
-+      unsigned long t1, t2;
-       u16 tid;
-       if (unlikely(!ieee80211_is_data_qos(hdr->frame_control)))
-@@ -376,6 +378,12 @@ minstrel_aggr_check(struct minstrel_priv
-       if (skb_get_queue_mapping(skb) == IEEE80211_AC_VO)
-               return;
-+      t1 = mi->last_aggr_start_time[tid];
-+      t2 = t1 + msecs_to_jiffies(5000);
-+      if (unlikely(time_in_range(jiffies, t1, t2)))
-+              return;
-+
-+      mi->last_aggr_start_time[tid] = jiffies;
-       ieee80211_start_tx_ba_session(pubsta, tid, 5000);
- }
-@@ -455,7 +463,7 @@ minstrel_ht_tx_status(void *priv, struct
-       if (time_after(jiffies, mi->stats_update + (mp->update_interval / 2 * HZ) / 1000)) {
-               minstrel_ht_update_stats(mp, mi);
-               if (!(info->flags & IEEE80211_TX_CTL_AMPDU))
--                      minstrel_aggr_check(mp, sta, skb);
-+                      minstrel_aggr_check(mp, mi, sta, skb);
-       }
- }
---- a/net/mac80211/rc80211_minstrel_ht.h
-+++ b/net/mac80211/rc80211_minstrel_ht.h
-@@ -109,6 +109,8 @@ struct minstrel_ht_sta {
-       /* MCS rate group info and statistics */
-       struct minstrel_mcs_group_data groups[MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS];
-+
-+      unsigned long last_aggr_start_time[IEEE80211_QOS_CTL_TID_MASK + 1];
- };
- struct minstrel_ht_sta_priv {