diff options
author | Adrian Chadd <adrian@FreeBSD.org> | 2011-02-06 17:40:27 +0000 |
---|---|---|
committer | Adrian Chadd <adrian@FreeBSD.org> | 2011-02-06 17:40:27 +0000 |
commit | f673a8106084ff873c936790be5331621df2402d (patch) | |
tree | a2febade1ac9e66e9bc7cec63d2fce9a8827a38d /sys/dev | |
parent | e84a29b629485e7f7590fac877569319c3e15b25 (diff) | |
download | src-f673a8106084ff873c936790be5331621df2402d.tar.gz src-f673a8106084ff873c936790be5331621df2402d.zip |
Only tag packets with the A-MPDU bit if they were part of an A-MPDU RX.
Whilst I'm here, add a counter to count said packets.
Notes
Notes:
svn path=/head/; revision=218378
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/ath/if_ath.c | 17 | ||||
-rw-r--r-- | sys/dev/ath/if_athioctl.h | 3 |
2 files changed, 9 insertions, 11 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index a969f16d5c73..ad4b998514cb 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -3892,16 +3892,11 @@ rx_accept: IEEE80211_KEYIX_NONE : rs->rs_keyix); sc->sc_lastrs = rs; if (ni != NULL) { -#ifdef NOTYET - /* tag AMPDU aggregates for reorder processing */ - /* - * XXX this should only tag frames marked as aggregate; rather - * XXX than all frames. - */ - if (ni->ni_flags & IEEE80211_NODE_HT) - m->m_flags |= M_AMPDU; -#endif - + /* tag AMPDU aggregates for reorder processing */ + if (rs->rs_isaggr) { + + m->m_flags |= M_AMPDU; + } /* * Sending station is known, dispatch directly. */ @@ -6499,4 +6494,6 @@ ath_sysctl_stats_attach(struct ath_softc *sc) &sc->sc_stats.ast_be_missed, 0, "number of -missed- beacons"); SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_ani_cal", CTLFLAG_RD, &sc->sc_stats.ast_ani_cal, 0, "number of ANI polls"); + SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_rx_agg", CTLFLAG_RD, + &sc->sc_stats.ast_rx_agg, 0, "number of aggregate frames received"); } diff --git a/sys/dev/ath/if_athioctl.h b/sys/dev/ath/if_athioctl.h index be1669030a05..32ade92b14fc 100644 --- a/sys/dev/ath/if_athioctl.h +++ b/sys/dev/ath/if_athioctl.h @@ -120,7 +120,8 @@ struct ath_stats { u_int32_t ast_tx_nofrag; /* tx dropped 'cuz no ath frag buffer */ u_int32_t ast_be_missed; /* missed beacons */ u_int32_t ast_ani_cal; /* ANI calibrations performed */ - u_int32_t ast_pad[12]; + u_int32_t ast_rx_agg; /* number of aggregate frames RX'ed */ + u_int32_t ast_pad[11]; }; #define SIOCGATHSTATS _IOWR('i', 137, struct ifreq) |