summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Sperling <stsp@cvs.openbsd.org>2015-12-12 12:22:15 +0000
committerStefan Sperling <stsp@cvs.openbsd.org>2015-12-12 12:22:15 +0000
commit3b701985760d489427cd827efafe0b2cfacc9897 (patch)
treeb498049a5d0f63441efac92fbb730076f40b3bd6
parenta0414e6e72f84f3627b6dbea4a43acf91e0f57cc (diff)
Flag AP as QoS capable when EDCA or WME information elements occur in beacons
or probe responses. Makes 11n negotiation with Linux iwlwifi AP succeed. ok mpi@
-rw-r--r--sys/net80211/ieee80211_input.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c
index c1b05365d6b..76ffe2ebcd1 100644
--- a/sys/net80211/ieee80211_input.c
+++ b/sys/net80211/ieee80211_input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee80211_input.c,v 1.143 2015/12/12 11:25:46 stsp Exp $ */
+/* $OpenBSD: ieee80211_input.c,v 1.144 2015/12/12 12:22:14 stsp Exp $ */
/*-
* Copyright (c) 2001 Atsushi Onoe
@@ -1585,10 +1585,13 @@ ieee80211_recv_probe_resp(struct ieee80211com *ic, struct mbuf *m,
*/
if (ni->ni_flags & IEEE80211_NODE_QOS) {
/* always prefer EDCA IE over Wi-Fi Alliance WMM IE */
- if (edcaie != NULL)
- ieee80211_parse_edca_params(ic, edcaie);
- else if (wmmie != NULL)
- ieee80211_parse_wmm_params(ic, wmmie);
+ if ((edcaie != NULL &&
+ ieee80211_parse_edca_params(ic, edcaie) == 0) ||
+ (wmmie != NULL &&
+ ieee80211_parse_wmm_params(ic, wmmie) == 0))
+ ni->ni_flags |= IEEE80211_NODE_QOS;
+ else
+ ni->ni_flags &= ~IEEE80211_NODE_QOS;
}
if (ic->ic_state == IEEE80211_S_SCAN