diff --git a/sys/net80211/ieee80211_proto.c b/sys/net80211/ieee80211_proto.c index c20f08364c2..8c8ee529815 100644 --- a/sys/net80211/ieee80211_proto.c +++ b/sys/net80211/ieee80211_proto.c @@ -895,6 +895,15 @@ ieee80211_wme_initparams_locked(struct ieee80211vap *vap) if ((ic->ic_caps & IEEE80211_C_WME) == 0 || ic->ic_nrunning > 1) return; + /* + * Clear the wme cap_info field so a qoscount from a previous + * vap doesn't confuse later code which only parses the beacon + * field and updates hardware when said field changes. + * Otherwise the hardware is programmed with defaults, not what + * the beacon actually announces. + */ + wme->wme_wmeChanParams.cap_info = 0; + /* * Select mode; we can be called early in which case we * always use auto mode. We know we'll be called when