Commit Graph

17 Commits

Author SHA1 Message Date
dyoung
8abb07d1ac Make the node table into an LRU cache: least-recently used nodes
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.
2004-08-10 00:57:20 +00:00
mycroft
50d44f4f07 IEEE80211_F_WEPON -> IEEE80211_F_PRIVACY 2004-07-23 08:31:39 +00:00
mycroft
75f8366d87 Yet more DPRINTF() cleanup. 2004-07-23 08:25:25 +00:00
mycroft
f0546001c6 Diff reduction vs. madwifi.
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.
2004-07-23 06:44:55 +00:00
dyoung
a49a69d67a If WEP is on, set a data packet's WEP flag when we 802.11-encapsulate
it.  Credit: Matthew Gream.
2004-05-31 11:02:55 +00:00
dyoung
974bfde812 From FreeBSD. Increase a stats counter when
ieee80211_find_txnode fails.
2004-04-30 23:58:17 +00:00
dyoung
8c117e1a38 NetBSD's KASSERT takes just one argument while FreeBSD's takes two,
so I have added IASSERT(cond, complaint) to the compatibility header
file and s/KASSERT/IASSERT/'d.
2004-01-13 23:37:29 +00:00
dyoung
9280f4b428 Synchronize with FreeBSD sources from 12 Dec 2003. 2003-12-14 09:56:53 +00:00
dyoung
22f9e4aae7 On the output path, save a power-saving station's ieee80211_node
in the mbuf's rcvif field so that the driver can get at it.
2003-11-02 00:17:27 +00:00
dyoung
3ed4d1ac9f Add ieee80211_find_rxnode and its helper ieee80211_needs_rxnode.
802.11 drivers will use ieee80211_find_rxnode to match each received
packet with the ieee80211_node belonging to the sender. The driver
will use the ieee80211_node to track the sender's RSSI and other
statistics for, e.g., rate adaptation.

ieee80211_find_rxnode "fakes-up" missing ieee80211_nodes in IBSS
mode and in ad-hoc demo mode when it is appropriate. See the comments
in the source.

Also add ieee80211_find_txnode, which looks up the ieee80211_node
belonging to a MAC destination. ieee80211_find_txnode will also
fake-up missing nodes in IBSS/ad-hoc demo mode.

In ieee80211_encap, use ieee80211_find_txnode.  This fixes the bug
in ad hoc packet-transmission reported by Greg Troxel, Urban Boquist,
and Kurt Schreiner.
2003-10-29 21:50:57 +00:00
dyoung
db0e43b296 Add WEP shared-key authentication. 2003-10-15 11:43:51 +00:00
dyoung
031c73f68c Even more changes to the new 802.11 layer:
* Add Kevin Lahey's power-saving support from the old 802.11 layer
* Add a FHPARMS or DSPARMS info element to probe responses and beacons
  as appropriate.
2003-10-13 04:22:55 +00:00
dyoung
c059ea0028 More NetBSD-FreeBSD compatibility changes in the pattern
#ifdef __FreeBSD__
	/* FreeBSDism */
#else
	/* NetBSDism */
#endif

An important and non-obvious change is in ieee80211_mgmt_output,

#ifdef __FreeBSD__
        KASSERT(m->m_pkthdr.rcvif == NULL, ("rcvif not null"));
#endif

Because NetBSD mbufs are not bzero'd like FreeBSD's, we cannot
count on rcvif == NULL.
2003-09-28 02:35:20 +00:00
dyoung
6e8d0b71c8 Insert RCSIDs. 2003-09-14 01:14:54 +00:00
dyoung
50fa2c1f44 Complete merge. 2003-09-07 04:10:39 +00:00
dyoung
cf8438b460 First stab at producing a unified NetBSD/FreeBSD 802.11 layer,
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
2003-09-07 01:22:19 +00:00
dyoung
40e261aa72 Pull in net80211/ from FreeBSD. This contains Sam Leffler's
enhancements to the 802.11 layer, which are necessary for ath(4),
the Atheros-chipset driver.
2003-08-30 21:26:03 +00:00