Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Feb 2011 20:11:24 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r218379 - head/sys/dev/ath
Message-ID:  <201102062011.p16KBOx2075648@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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.
 			 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102062011.p16KBOx2075648>