Author: adrian
Date: Sun Feb  6 20:11:24 2011
New Revision: 218379
URL: http://svn.freebsd.org/changeset/base/218379

Log:
  Just tag all RX packets as needing reorder processing for now.
  
  This fixes two problems -
  
  * All packets need to be processed here, not just aggregate ones - as any
    received frames (AMPDU or otherwise) in the given TID (traffic class id)
    will update the sequence number and, implied with that, update the window;
  * It seems there's situations where packets aren't matching a current node but
    somehow need to be tracked. Thus just tag them all for now; I'll figure out
    the why later.
  
  Whilst I'm here, bump the stats counters whilst I'm at it.
  
  This fixes AMPDU RX in my tests; the main problems now stem from what look
  like PHY level error/retransmits which are impeding general throughput, incl.
  AMPDU.

Modified:
  head/sys/dev/ath/if_ath.c

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c   Sun Feb  6 17:40:27 2011        (r218378)
+++ head/sys/dev/ath/if_ath.c   Sun Feb  6 20:11:24 2011        (r218379)
@@ -3891,12 +3891,19 @@ rx_accept:
                        rs->rs_keyix == HAL_RXKEYIX_INVALID ?
                                IEEE80211_KEYIX_NONE : rs->rs_keyix);
                sc->sc_lastrs = rs;
+               /* tag AMPDU aggregates for reorder processing */
+               /*
+                * Just make sure all frames are tagged for AMPDU reorder 
checking.
+                * As there seems to be some situations where single frames 
aren't
+                * matching a node but bump the seqno. This needs to be 
investigated.
+                */
+               m->m_flags |= M_AMPDU;
+
+               /* Keep statistics on the number of aggregate packets received 
*/
+               if (rs->rs_isaggr)
+                       sc->sc_stats.ast_rx_agg++;
+
                if (ni != NULL) {
-                       /* tag AMPDU aggregates for reorder processing */
-                       if (rs->rs_isaggr) {
-                               
-                               m->m_flags |= M_AMPDU;
-                       }
                        /*
                         * Sending station is known, dispatch directly.
                         */
_______________________________________________
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