PERFORCE change 67866 for review
Sam Leffler
sam at FreeBSD.org
Wed Dec 29 15:10:06 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=67866
Change 67866 by sam at sam_ebb on 2004/12/29 23:09:31
add hack to not use QoS encapsulation for EAPOL frames as
certain vendor ap's don't handle it
Affected files ...
.. //depot/projects/wifi/sys/net80211/ieee80211_output.c#29 edit
Differences ...
==== //depot/projects/wifi/sys/net80211/ieee80211_output.c#29 (text+ko) ====
@@ -434,7 +434,7 @@
struct ieee80211_frame *wh;
struct ieee80211_key *key;
struct llc *llc;
- int hdrsize, datalen;
+ int hdrsize, datalen, addqos;
KASSERT(m->m_len >= sizeof(eh), ("no ethernet header!"));
memcpy(&eh, mtod(m, caddr_t), sizeof(struct ether_header));
@@ -467,7 +467,15 @@
} else
key = NULL;
/* XXX 4-address format */
- if (ni->ni_flags & IEEE80211_NODE_QOS)
+ /*
+ * XXX Atheros ap's don't handle QoS-encapsulated EAPOL
+ * frames so suppress use. This may be an issue with
+ * other ap's that support WME+WPA in which case we'll
+ * need to make this configurable.
+ */
+ addqos = (ni->ni_flags & IEEE80211_NODE_QOS) &&
+ eh.ether_type != htons(ETHERTYPE_PAE);
+ if (addqos)
hdrsize = sizeof(struct ieee80211_qosframe);
else
hdrsize = sizeof(struct ieee80211_frame);
@@ -521,7 +529,7 @@
case IEEE80211_M_MONITOR:
goto bad;
}
- if (ni->ni_flags & IEEE80211_NODE_QOS) {
+ if (addqos) {
struct ieee80211_qosframe *qwh =
(struct ieee80211_qosframe *) wh;
int ac, tid;
More information about the p4-projects
mailing list