An 11n athn hostap will currently apply HT protection (RTS) even when sending frames to a non-11n client which does not need such protection. This is causing unnecessary overhead.
It happens because the wrong flag is checked by the driver: IEEE80211_F_HTON tells us if 11n is supported by the driver and enabled. IEEE80211_NODE_HT tells us if 11n is being used with a particular peer. RTS will still be used for frames larger than the RTS threshold, which is another, and separate, indicator for enabling RTS. Index: ar5008.c =================================================================== RCS file: /cvs/src/sys/dev/ic/ar5008.c,v retrieving revision 1.40 diff -u -p -r1.40 ar5008.c --- ar5008.c 30 Jan 2017 09:42:14 -0000 1.40 +++ ar5008.c 30 Jan 2017 10:22:27 -0000 @@ -1511,7 +1511,7 @@ ar5008_tx(struct athn_softc *sc, struct ds->ds_ctl0 |= AR_TXC0_RTS_ENABLE; } else if (((ic->ic_flags & IEEE80211_F_USEPROT) && athn_rates[ridx[0]].phy == IEEE80211_T_OFDM) || - ((ic->ic_flags & IEEE80211_F_HTON) && + ((ni->ni_flags & IEEE80211_NODE_HT) && htprot != IEEE80211_HTPROT_NONE)) { if (ic->ic_protmode == IEEE80211_PROT_RTSCTS) ds->ds_ctl0 |= AR_TXC0_RTS_ENABLE;