Date: Fri, 17 Oct 2003 12:31:35 -0700 (PDT) From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 39851 for review Message-ID: <200310171931.h9HJVZYS028045@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=39851 Change 39851 by sam@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 */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310171931.h9HJVZYS028045>