PERFORCE change 39851 for review
Sam Leffler
sam at FreeBSD.org
Fri Oct 17 12:31:37 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=39851
Change 39851 by sam at sam_ebb on 2003/10/17 12:31:32
o add capability to indicate if device receives all management frames
o use recv mgmt capability to decide if outbound frames should be
discarded if no node table entry is present
o add missing \n in debug msg
Affected files ...
.. //depot/projects/netperf/sys/net80211/ieee80211_output.c#9 edit
.. //depot/projects/netperf/sys/net80211/ieee80211_var.h#8 edit
Differences ...
==== //depot/projects/netperf/sys/net80211/ieee80211_output.c#9 (text+ko) ====
@@ -165,14 +165,23 @@
ni = ieee80211_find_node(ic, eh.ether_dhost);
if (ni == NULL) {
/*
- * When not in station mode the
- * destination address should always be
- * in the node table unless this is a
- * multicast/broadcast frame.
+ * When not in station mode the destination
+ * address should always be in the node table
+ * if the device sends management frames to us,
+ * unless this is a multicast/broadcast frame.
+ * For devices that don't send management frames
+ * to the host we have to cheat; use the bss
+ * node instead; the card will/should clobber
+ * the bssid address as necessary.
+ *
+ * XXX this handles AHDEMO because all devices
+ * that support it don't send mgmt frames;
+ * but it might be better to test explicitly
*/
- if (!IEEE80211_IS_MULTICAST(eh.ether_dhost)) {
+ if (!IEEE80211_IS_MULTICAST(eh.ether_dhost) &&
+ (ic->ic_caps & IEEE80211_C_RCVMGT)) {
IEEE80211_DPRINTF(("%s: no node for dst %s, "
- "discard frame", __func__,
+ "discard frame\n", __func__,
ether_sprintf(eh.ether_dhost)));
ic->ic_stats.is_tx_nonode++;
goto bad;
==== //depot/projects/netperf/sys/net80211/ieee80211_var.h#8 (text+ko) ====
@@ -219,7 +219,7 @@
#define IEEE80211_F_SHSLOT 0x00020000 /* CONF: short slot time */
#define IEEE80211_F_SHPREAMBLE 0x00040000 /* CONF: short preamble */
-/* ic_capabilities */
+/* ic_caps */
#define IEEE80211_C_WEP 0x00000001 /* CAPABILITY: WEP available */
#define IEEE80211_C_IBSS 0x00000002 /* CAPABILITY: IBSS available */
#define IEEE80211_C_PMGT 0x00000004 /* CAPABILITY: Power mgmt */
@@ -230,6 +230,7 @@
#define IEEE80211_C_SHSLOT 0x00000080 /* CAPABILITY: short slottime */
#define IEEE80211_C_SHPREAMBLE 0x00000100 /* CAPABILITY: short preamble */
#define IEEE80211_C_MONITOR 0x00000200 /* CAPABILITY: monitor mode */
+#define IEEE80211_C_RCVMGT 0x00000400 /* CAPABILITY: rcv mgt frames */
/* flags for ieee80211_fix_rate() */
#define IEEE80211_F_DOSORT 0x00000001 /* sort rate list */
More information about the p4-projects
mailing list