I've noticed that wireless interfaces in 11n mode show a "media:" line in ifconfig such as this while a background scan is in progress:
media: IEEE802.11 autoselect (OFDM6) What is expected is a line showing active 11n mode, such as: media: IEEE802.11 autoselect (HT-MCS0 mode 11n) This happens because ieee80211_media_status() sees ic->ic_curmode as AUTO during background scans. Also, because net80211 forgets to reset ic_curmode back to MODE_11N when the background scan has finished, the displayed mode remains "autoselect (OFDM6)" until the interface is reset. This is just a cosmetic issue. Internally, the interface operates in 11n mode regardless. ok? diff 5e4be56314753be1a3ad288aa6b16bcb5257b37c /usr/src blob - 410c33358e72c4063f9f71bf69f6c72ecfc558d9 file + sys/net80211/ieee80211.c --- sys/net80211/ieee80211.c +++ sys/net80211/ieee80211.c @@ -728,6 +728,9 @@ ieee80211_media_status(struct ifnet *ifp, struct ifmed ic->ic_curmode == IEEE80211_MODE_11AC) imr->ifm_active |= ieee80211_mcs2media(ic, ni->ni_txmcs, ic->ic_curmode); + else if (ni->ni_flags & IEEE80211_NODE_HT) /* in MODE_AUTO */ + imr->ifm_active |= ieee80211_mcs2media(ic, + ni->ni_txmcs, IEEE80211_MODE_11N); else /* calculate rate subtype */ imr->ifm_active |= ieee80211_rate2media(ic, blob - 6656d29d160c26dce86fb44e3f5e715e42b7c42c file + sys/net80211/ieee80211_node.c --- sys/net80211/ieee80211_node.c +++ sys/net80211/ieee80211_node.c @@ -1441,6 +1441,19 @@ ieee80211_end_scan(struct ifnet *ifp) ic->ic_bgscan_fail *= 2; } ic->ic_flags &= ~IEEE80211_F_BGSCAN; + + /* + * HT is negotiated during association so we must use + * ic_bss to check HT. The nodes tree was re-populated + * during background scan and therefore selbs and curbs + * may not carry HT information. + */ + ni = ic->ic_bss; + if (ni->ni_flags & IEEE80211_NODE_HT) + ieee80211_setmode(ic, IEEE80211_MODE_11N); + else + ieee80211_setmode(ic, + ieee80211_chan2mode(ic, ni->ni_chan)); return; }