are at the end of the node queue. Change the reference-counting
discipline: ni->ni_refcnt indicates how many times net80211 has
granted ni to the driver. Every node in the table with ni_refcnt=0
is eligible to be garbage-collected. The mere presence of a node
in the table does not any longer indicate its auth/assoc state;
nodes have a ni_state variable, now. A sysctl,
net.link.ieee80211.maxnodecache, controls the maximum LRU cache
size.
While I am here, patch ieee80211_find_node_for_beacon to do a "best
match" by bssid/ssid/channel, not a "perfect match." This keeps
net80211 from caching duplicate nodes in the table.
Abstract some of the node management code into separate functions, and use them
throughout, plugging memory leaks.
Allocate the AID allocation map dynamically.
Change the signature of IEEE80211_DPRINTF() so that it uses a bitmask, and
convert some of the if_printf()s to IEEE80211_DPRINTF()s. XXX I'm using a
global variable at the moment rather than per-interface.
Instead, change *_set11gbasicrate() to *_setbasicrates(), have it operate on
all modes, and call it from *_ifattach(). Also, fix obvious bugs in it (it
had an off-by-one error, at least).
peer, we have to copy the "master" rate table to the faked-up node's
rate table, or else ath0 will complain, "ath0: bogus xmit rate
0x0". Thank you Konstantin KABASSANOV for reporting this problem.
net.link.ieee80211. The convention is that nodes directly under
net are protocol families (PF_*).
Also, simplify the sysctl setup for net80211 and rssadapt, following
another suggestion by Andrew.
and off.
Add a sysctl, net.ieee80211.maxinact, for adjusting the node time-out
interval. After net.ieee80211.maxinact seconds of inactivity, an
AP will purge a peer/client-record. Now the client has to reassociate.
* Add Kevin Lahey's power-saving support from the old 802.11 layer
* Support for frequency-hopping PHYs
* Add support frequency-hopping PHY mode, IFM_IEEE80211_FH
* Add channel flags for frequency-hopping
* Add mode<->media mappings in for FH PHY in ieee80211_media2rate
and ieee80211_rate2media
* Stop using IFM_MAKEMODE macro since the mode constants
(e.g., IFM_IEEE80211_11A) are pre-shifted in sys/net/if_media.h
* Add some PLCP constants.
striving to keep the diffs short and simple.
* Replace FreeBSDisms (e.g. struct arpcom) with conditionally-compiled
NetBSDism (struct ethercom).
* Add compatibility shims in ieee80211_compat.*: provide NetBSD with
if_printf, for example.
* Convert FreeBSD node mutex uses to generic node critical-section
protection (ieee80211_node_critsect_begin, _end), replace
FreeBSD atomic arithmetic with generic alternative, and implement
generics in NetBSD
* Provide NetBSD-style 802.11 ioctls
* Style nits