[802.11] The 802.11 MAC layer, second big commit
authorJoshua Oreman <oremanj@xenon.get-linux.org>
Sun, 7 Jun 2009 04:47:29 +0000 (21:47 -0700)
committerJoshua Oreman <oremanj@xenon.get-linux.org>
Sun, 7 Jun 2009 04:47:29 +0000 (21:47 -0700)
commit490714353c660e66b84953444fe48f282f515019
tree401494510b8c2cefc921116207cd5ce0bf064756
parentab39548abf5261b240c97ac62df317172fd7254a
[802.11] The 802.11 MAC layer, second big commit

With this commit the MAC layer is almost "barebones feature-complete";
the only things I still need to implement before I can test is the
network probe functionality. Various changes include:

- net80211_device.channels is now a statically declared array, to
  avoid constantly reallocating it.
- net80211_device.assoc has been replaced by "state", containing a
  set of flags (authenticated, associated, etc) related to the
  association process as well as the most recent IEEE status code from
  said process.
- Signal strength info has been moved from a per-device to a per-frame
  basis, since its only real use (choosing between different APs on
  the same network while scanning) requires that.
    -> The code for this would be made much cleaner if there were
       space for a couple bytes of private data in io_buffer.
- The net80211_wlan structure has been amended to include a copy of
  the beacon from this access point and an authentication-method state
  variable for the association task. Association now can be handled
  just by passing one structure around.
- Added net80211_prepare_default(), to create a default list of
  channels to listen on during network scanning.
- Implemented the association API described on my notes page.
- Added settings for SSID and hidden-network-ness.
- Added a function to send an arbitrary management frame.
- Added processing for received beacons.
- Implemented most of the association process.
src/include/gpxe/ieee80211.h
src/include/gpxe/net80211.h
src/net/net80211.c