Author: bschmidt
Date: Sat Jun  4 14:28:09 2011
New Revision: 222682
URL: http://svn.freebsd.org/changeset/base/222682

Log:
  Data frames sent over the mgmt path might be part of a TX aggr session
  too. In that case don't fiddle with the seqno as drivers are supposed
  to handle that.
  
  Currently only the powersave feature does sent QoS-null-data frames
  before and after a background scan which must be handled correctly. Due
  to this being quite rare we don't fiddle around with starting of aggr
  sessions.

Modified:
  head/sys/net80211/ieee80211_output.c

Modified: head/sys/net80211/ieee80211_output.c
==============================================================================
--- head/sys/net80211/ieee80211_output.c        Sat Jun  4 12:51:22 2011        
(r222681)
+++ head/sys/net80211/ieee80211_output.c        Sat Jun  4 14:28:09 2011        
(r222682)
@@ -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;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to