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