mac80211: increase delay between aggregation session negotiation attempts - improves interop with intel clients
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26444 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
abcbc257b0
commit
e784036e8b
|
@ -0,0 +1,49 @@
|
|||
--- a/net/mac80211/rc80211_minstrel_ht.c
|
||||
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
||||
@@ -355,10 +355,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)))
|
||||
@@ -374,6 +376,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);
|
||||
}
|
||||
|
||||
@@ -452,7 +460,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);
|
||||
- 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 {
|
Loading…
Reference in New Issue