mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-30 16:51:41 +00:00
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
This commit is contained in:
parent
3df780cf76
commit
7f7ecba47e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=121174
@ -165,13 +165,24 @@ ieee80211_encap(struct ifnet *ifp, struct mbuf *m, struct ieee80211_node **pni)
|
||||
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)) {
|
||||
/* ic->ic_stats.st_tx_nonode++; XXX statistic */
|
||||
if (!IEEE80211_IS_MULTICAST(eh.ether_dhost) &&
|
||||
(ic->ic_caps & IEEE80211_C_RCVMGT)) {
|
||||
IEEE80211_DPRINTF(("%s: no node for dst %s, "
|
||||
"discard frame\n", __func__,
|
||||
ether_sprintf(eh.ether_dhost)));
|
||||
goto bad;
|
||||
}
|
||||
ni = ic->ic_bss;
|
||||
|
@ -228,6 +228,7 @@ struct ieee80211com {
|
||||
#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 */
|
||||
|
Loading…
Reference in New Issue
Block a user