summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_output.c
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2011-06-04 22:05:20 +0000
committerattilio <attilio@FreeBSD.org>2011-06-04 22:05:20 +0000
commit8e66ca1ff16b21df31a40fa743f8df3844507305 (patch)
tree7235c316aab81a86e3bfc131b1abae5475040624 /sys/net80211/ieee80211_output.c
parent91525e4ff96713dd3149a3477069cc7213d0abae (diff)
parent786c89f781c52e7423abdc562256ef0830f60be6 (diff)
downloadFreeBSD-src-8e66ca1ff16b21df31a40fa743f8df3844507305.zip
FreeBSD-src-8e66ca1ff16b21df31a40fa743f8df3844507305.tar.gz
MFC
Diffstat (limited to 'sys/net80211/ieee80211_output.c')
-rw-r--r--sys/net80211/ieee80211_output.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c
index b689310..6020144 100644
--- a/sys/net80211/ieee80211_output.c
+++ b/sys/net80211/ieee80211_output.c
@@ -516,6 +516,7 @@ ieee80211_send_setup(
{
#define WH4(wh) ((struct ieee80211_frame_addr4 *)wh)
struct ieee80211vap *vap = ni->ni_vap;
+ struct ieee80211_tx_ampdu *tap;
struct ieee80211_frame *wh = mtod(m, struct ieee80211_frame *);
ieee80211_seq seqno;
@@ -583,9 +584,15 @@ ieee80211_send_setup(
}
*(uint16_t *)&wh->i_dur[0] = 0;
- seqno = ni->ni_txseqs[tid]++;
- *(uint16_t *)&wh->i_seq[0] = htole16(seqno << IEEE80211_SEQ_SEQ_SHIFT);
- M_SEQNO_SET(m, seqno);
+ tap = &ni->ni_tx_ampdu[TID_TO_WME_AC(tid)];
+ if (tid != IEEE80211_NONQOS_TID && IEEE80211_AMPDU_RUNNING(tap))
+ m->m_flags |= M_AMPDU_MPDU;
+ else {
+ seqno = ni->ni_txseqs[tid]++;
+ *(uint16_t *)&wh->i_seq[0] =
+ htole16(seqno << IEEE80211_SEQ_SEQ_SHIFT);
+ M_SEQNO_SET(m, seqno);
+ }
if (IEEE80211_IS_MULTICAST(wh->i_addr1))
m->m_flags |= M_MCAST;
OpenPOWER on IntegriCloud