From 00fc87059c2008f34bdbbdb228bd41d3857906ca Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Tue, 8 Feb 2011 20:16:43 +0000 Subject: [PATCH] net80211 really doesn't want A_MPDU to appear on non-11n station node mbufs. Revert back to the previous method of doing it for where a node can be identified and it's an 11n node. I'll have to do some further research into exactly what is being messed up with the sequence number matching and I'll then revisit this. --- sys/dev/ath/if_ath.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index eb0d27c3b75..f7f116aa7db 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -3892,18 +3892,27 @@ rx_accept: IEEE80211_KEYIX_NONE : rs->rs_keyix); sc->sc_lastrs = rs; /* tag AMPDU aggregates for reorder processing */ +#if 0 /* * 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; +#endif /* Keep statistics on the number of aggregate packets received */ if (rs->rs_isaggr) sc->sc_stats.ast_rx_agg++; if (ni != NULL) { + /* + * Only punt packets for ampdu reorder processing for 11n nodes; + * net80211 enforces that M_AMPDU is only set for 11n nodes. + */ + if (ni->ni_flags & IEEE80211_NODE_HT) + m->m_flags |= M_AMPDU; + /* * Sending station is known, dispatch directly. */