Changes in 1.0.3

* Fix #609 problem if SUSPEND2 included on kernels that do not support 
  the _BUILTIN defines.
* Fix #556 by changing 'make install' target path to /lib/modules/`uname 
  -r`/drivers/net/wireless instead of /lib/modules/`uname 
  -r`/kernel/drivers/net/wireless
* Fix #616 problem with OOPS on module load (thanks to Yi Zhu)
* Fixed problem with led module parameter being described as 
  'auto_create'
* Added support to merge between adhoc networks (thanks to Mohamed Abbas)
* Added semaphore lock at the driver's entry points to protect against 
  re-entry (thanks to Mohamed Abbas)
* Added semaphore lock to background scheduled driver actions (thanks to
  Mohamed Abbas)
* Changed how signal quality is reported for scan output (thanks to 
  Peter Jones)
* Fixed how high/low clamp values of signal quality are reported so a 
  more consistent ramp is provided (thanks to Bill Moss)
* Fix #624 problem with duplicate addresses (again)  (thanks to Bernard 
  Blackham)
* Fix #385 problem with fragmentation and certain sized packets (thanks 
  to Mohamed Abbas)
* Moved ieee80211.h and ieee80211_crypt.h into ./net so that the 
  reference to their include location does not differ from that of the 
  ieee80211 subsystem provided by netdev-2.6
* Merged latest netdev-2.6 changes to ieee80211 subsystem into driver
* Modified iwconfig network name if RF kill is enabled to say 'radio off'
* Fix #382 problem with driver not responding to probe requests in Ad-Hoc 
  mode (thanks to Mohamed Abbas)

Changes in 1.0.2

* Removed unneeded parenthesis around numeric constant defines
* Added info about WPA to INSTALL (thanks to Henrik Brix Andersen)
* Added support for iwspy
* Put in fix for Ad-Hoc mode not passing through all packets (thanks to 
  KKH)
* Put in fix for fragmentation not working for fragment sizes between 
  441-464 bytes (thanks to Mohamed Abbas)
* Test fix for #586 problem with kernel oops on module unload by adding 
  spin lock protection to ieee80211's crypt handlers (thanks to Yi Zhu)
* Fixed #592 problem of CONFIG_IEEE80211_WPA_MODULE not including WPA 
  support into the driver -- fixed as a result of no longer limiting 
  WPAs inclusion
* Fixed #594 problem with user rates mask causing lack of association if 
  AP mandatory rate is masked out.  We now add back in as a supported 
  rate any mandatory rate.
* Possible fix for #597 kernel oops due to potentially calling 
  dev_kfree_skb on an skb multiple times.
* Added code to control LEDs that can be controlled through the wireless 
  NIC (vs. non-wireless HW interfaces) -- this is currently disabled by 
  default due to reports by some users of it hanging their laptop.
* Added some more debug messages around fragmentation logic
* Added locking around STATUS_HCMD_ACTIVE to prevent re-entry race 
  conditions
* Moved ipw_adapter_restart to only execute on the priv->workqueue to 
  keep keyboard errors from occuring during adapter restart
* Added CFG_BACKGROUND_SCAN to easily allow people to play with 
  background scanning implementations
* Modified WPA logic to send WPA IE if one is set (vs. being based on 
  wpa_enabled)
* Modified scan result logic to report WPA and RSN IEs if set (vs. being 
  based on wpa_enabled)
* Fixed issues with endianess compatability between the host and 
  wireless adapter (thanks to York Liu and Yi Zhu)
* Fixed problem with Ad-Hoc network creation causing a firmware error if 
  a scan was actively running (thanks to Mohamed Abbas)

Changes in 1.0.1

* Fixed #559: iwconfig rate support (thanks to Florian Hackenberger)
  NOTE:  Configuring a subset of rates that excludes mandatory rates by 
  your AP may result in not being able to associate with your AP.
* Improved link signal quality calculation (thanks to Bill Moss)
* Added additional debug output during scan to dump all 16 bits of 
  capability field to IEEE80211_DL_SCAN output
* Added support for additional PCI ids supported by the driver
* Removed trailing whitespace on lines in code (thanks to Henrik Brix 
  Andersen)
* Yanked script trace (-x) from helper scripts (thanks to Henrik Brix 
  Andersen)
* Fixed a problem with sensitivity threshold during association (thanks 
  to Raphael Slinckx for troubleshooting with me on IRC for three days)
* Added iwpriv for turning forcing long preamble support: 
	iwpriv eth1 set_preamble 1|0
* Possible fixes for #542 and #377 support for short preamble
* Fixed #563 compilation warning on 2.6.11-rc2 (thanks to Henrik Brix 
  Andersen)
* Fixed locked BSSID reporting channel number (thanks to Pedro Ramalhais)
* Fixed type-o with scan watchdog timeout message (thanks to Pedro Ramalhais)
* Changed logic for displaying get_mode output so the code is easier
  to follow (thanks to Pedro Ramalhais)
* Added initial support for WPA (thanks to Yi Zhu) -- tested with 
  wpa_supplicant (either tip w/ ipw driver, or with -Dipw2100) with both 
  CCMP and TKIP
* Fixed problem with CCMP not working due to uninitialized 802.11 header 
  fields (thanks to Pedro Ramalhais)
* Fixed unload script to unload the ieee80211 modules in the correct 
  order

Changes in 1.0.0

* Fixed part of #430 problem with an AP never being considered for 
  association (storming) if the jiffies rewind problem occurs (thanks to 
  Yi Zhu)

Changes in 0.22

* Changed debug log level for a fragmentation message in ieee80211 so 
  rather than use printk() it uses IEEE80211_DL_FRAG
* Fixed problem with ethtool -i not reporting the correct version string

Changes in 0.21

* Provided __iomem typedef for pre-2.6.9
* Changed firmware event/error log dumping to be masked with 
  IPW_DL_FW_ERRORS flag.  If you encounter a firmware error, your kernel 
  log will now just log the firmware restart.
* Fixed compilation warnings when CONFIG_IPW_DEBUG and 
  CONFIG_IEEE80211_DEBUG are not defined
* Fixed warning on unused return code from pci_set_consistent_dma_mask

Changes in 0.20

* Fixed #525 compilation problem with gcc 2.9.5 due to __FUNCTION__ not 
  being followed by whitespace. (thanks to Dave Hansen)
* Fixed #530 problem after any resume (thanks to Henrik Brix Andersen)
* Fixed #363 problem after S4 resume (thanks to Yi Zhu)
* Fixed #488 problem with bridged networks and Ad-Hoc by adding 
  target MAC to station table, regardless of if they are actual 
  Ad-Hoc cells (thanks to Alex Hudson)
* Fixed #221 problem with setting mode immediately after load causing 
  failures
* Incorporated fixes to use __iomem (thanks to Stephen Hemminger)
* Fixed #502 support for 64-bit platforms (thanks to Pedro Ramalhais and 
  Angelo DiNardi)
* Fixed #431 problem with pci_alloc_consistent being handed a u32 instead of 
  dma_addr_t (thanks to Jacek Wysoczynski and Marek Rudniewski)
* Fixed #379 problem w/ non-encrypted 802.1x authentication (driver no 
  longer disassociates on privacy capability change -- similar to the 
  behavior of ipw2100) 
* Fixed #509 problem w/ resetting nic possibly leaving status 
  variable bit set for a command being active.
* Fixed #450 problem w/ scan results not providing signal and level
  statistics

Changes in 0.19

NOTE: In order to upgrade to 0.19 you must also upgrade your firmware to 
2.2.  You can download the firmware from http://ipw2200.sf.net/firmware.php.

If, when loading the module, you see an error in the kernel logs about 
conflicting firmware versions, then you do not have the correct firmware 
installed.

* Fixed problem with unlocking the wrong spin lock (thanks to Yi Zhu)
* Restructured how the Link Quality is computed
* Added IPW_DEBUG_STATS for data related to how the Link Quality is computed
* Restructured how the scan channel list is constructed (cleaned up the code a 
  bit)
* Fixed #291 problem with resume not working when coming from S3 (thanks to Yi 
  Zhu)
* Fixed #489 and #387 problems with fragmentation not working
* Fixed #499 problem with packet latencies due to background scanning.  This 
  change required some logic rework in how the roaming process occurs.
* Fixed problem with some packets not being received due invalid Rx 
  filtering of BSSID
* Added SCAN watchdog to detect when scanning is not completing

Changes in 0.18

* Fixed problem with the driver thinking the privacy capability wasn't 
  matching when it was (thanks to Yi Zhu)
* Fixed #451 problem where driver wasn't reporting to user space tools when Tx
  power is disabled (radio off)
* Fixed problem with Rx queue not being protected via locks (thanks to 
  Rusty Lynch)
* Added additional debug information if an authentication failure 
  message is received.
* Fixed #492 problem with 'invalid crypt' count not being reported in 
  wireless statistics
* Fixed #495 problem with 'auto_create' module parameter not working
* Fixed #288 problem with a driver panic or system lockup during load or 
  under high load

Changes in 0.17

NOTE: In order to upgrade to 0.17 you must also upgrade your firmware to 
2.1.  You can download the firmware from http://ipw2200.sf.net/firmware.php.

If, when loading the module, you see an error in the kernel logs about 
conflicting firmware versions, then you do not have the correct firmware 
installed.

* Adjusted the behavior of ad-hoc to act much more like the ipw2100 does.
  This addresses several bugs relating to the formation/reformation of
  ad-hoc networks.
* Started initializing the ad-hoc station table when associating to an ad-hoc
  network.  This fixes a problem that is at the root of may problem reports
  where network connectivity is lost in ad-hoc mode, yet both the driver
  and networking stack configuration is correct and the device is associated
  sending out beacons.
* Added noise statistic reporting for current association
* Fixed "associate" module parameter so that it works as the README states
* Fixed signal strength reporting.  
* Added AP roaming support (via 802.11 re-association requests).  If you 
  have an ESS network that spans multiple APs and begin missing 
  enough beacons from the currently associated AP, the driver will look 
  for a better AP to associate with.  If found, it will attempt to 
  re-associate with that AP.
* Fixed code such that if a scan completes while disassociating, an 
  association attempt is not made.
* Added dumping of Status and Config during fatal error dump (to help 
  provide driver context during the fatal error)
* Changed missed beacons to report the % of missed beacons recently

Changes in 0.16

* Merged ieee80211 double alloc into single allocation (thanks to 
  Stephen Hemminger)
* Fixed compilation problem if CONFIG_IEEE80211_DEBUG is not defined 
  (thanks to Stephen Hemminger and Luc Saillard)
* Really fixed bug #271 so we properly compare essids when looking for
  a valid network to connect to
* Fixed bug #402 so that WEP can be used with ad-hoc mode
* Fixed bug #414 problem with SSIDs being scrambled when hidden networks 
  detected (also resulted in multiple hidden networks showing in scan 
  results)
* Fixed bug #425/285 problem with 802.11b networks being extremely slow
* Added support for multi-mode access points.  Fixes bugs like #397
  where the driver is not able to associate with an ap in 'b' mode 
  even though the ap provides both 'b' and 'g' bands
* Fixed bug #421 problem with a panic if fragmentation is used.  NOTE:  
  Fragmentation itself is currently broken (nothing goes through) but it 
  won't panic anymore.
* Fixed bug #237 so that link quality is now temporal and should adjust 
  dynamically as the network quality changes (previously it would slowly 
  stagnate onto a fixed level)

Changes in 0.15

* Fixed #399 - max fragmentation threshold was 2342 instead of 2346
* Fixed problem with link state no longer being detected by ethtool
* Initialize atim_window in network during scans (fixes problem with 
  adhoc networks)

Changes in 0.14

* Test fix for bug #207 by changing how a network is determined to be unique.
  Previously, only the BSSID was checked to determine if a new probe or beacon
  was for an already discovered network.  Now the BSSID, ESSID, and 
  channel must match for the network to be considered the same.
* Fixed bug #265 by adding a filter for removing our own recieved 
  packets since the firmware does not do this for us.
* Fixed bug #269 so that ad-hoc will come up correctly the first time when
  preemption is enabled.
* Fixed bug #270 which was fatal errors triggered by multiple association
  commands on top of each other.
* Fixed bug #271 so that we correctly match essids when the assigned essid
  is a substring of a network essid
* Fixed bug #275 which kept the driver from being able to use a default 
  crypto key other than the first or second key.
* Fixed bug #277 which caused the setting of the active key, or 
  specifying a key, to corrupt the key being assigned.
* Fixed bug #344 - wireless stats are now provided even if the HW is down or 
  not associated with a network.
* Fixed bug #365 which would result in kernel stack dumps in the system
  log file due to an improper scheduling call while in atomic mode.
* Fixed bug #378 which would cause an endless loop of scans if a scan was
  triggered with an "iwlist ethX scan" while associated.
* Fixed #393 such that only unicast frames request an ACK
* Fixed bug #404 so that we correctly fail when the wrong firmware version
  is loaded.
* Synchornized ieee80211 module with ipw2100 v1.0.1 (modifed ieee80211 
  initialization, and Tx data path)
* Moved the trans_start reset to that the TX watchdog can actually fire 
  if the HW stalls out.

Changes in 0.13

* Modified SW/HW rf_kill interaction functionality.  See README.ipw2200 for  
  details on current usage.
* Fixed #239: iwconfig eth1 rts off/auto not supported
* Fixed problem with not being able to associate with 
  non-broadcast ESSID APs
* Changed default temporal timeout for scan age to 15s
* Changed MAC2STR and MACSTR to MAC_FMT and MAC_ARG
* Fixed problem with scan results not expiring
* Fixed a bug in ad-hoc support (#295) that prevented the creation of a new
  ad-hoc network
* Reduced interval of scan requests to 1/10th second (vs. 5 seconds)
* Modified scan logic to alternate between directed and active scanning 
  when an ESSID is defined.  This should improve AP to AP roaming via 
  ESSID selection.
* Increased dwell time on directed scans to 100ms from 20ms
* Fixed fragmentation for both wep and with no encryption
* Fixed wireless stats reporting to indicate that the noise level is invalid.
  This version of the firmware does not provide noise statistics.
* Fixed a bug that prevented 'iwpriv ethX set_mode N' from working correctly

Changes in 0.12

* Changed alloc_skb to use GFP_ATOMIC vs. GFP_ATOMIC| GFP_DMA (thanks to 
  Roland Dreier)  GFP_ATOMIC needs to be used as GFP_KERNEL may block, 
  and the call is made from the default work queue during adapter load
* Fixed problem with module_param not building on some systems (thanks 
  to Pieter Hollants and Sebastian Henrich)
* Added additional debug output during association to indicate security 
  parameters (to assist in connection debugging)
* Misc cleanups (thanks to Stephen Hemminger)
	* Un 'inline' initialization functions
	* Added const to a few locations

Sep 30 2004 Changes in 0.11

* Fixed problem with setting an ESSID to a network that doesn't exist in
  Managed mode would result in the creation of an AdHoc network.
* Fixed problem with privacy capability not being compared correctly 
  when assessing viability of a network for association.
* Added support for shared key authentication (aka 'restricted')
* Added debug level output into ieee80211* modules.  You can access the
  debug levels via the debug module parameter as well as through
  /proc/net/ieee80211/debug_level, and see values via the idvals script
* Added support for setting the TX power via
  'iwconfig ${IFNAME} txpower ${LEVEL}'.
* Added support for setting the fragmentation threshold via
  'iwconfig ${IFNAME} frag ${THRESHOLD}'.
* Added PSP power management support (thanks to An-Cheng Huang)
* Added support for suspend / resume.
* Hooked up the ability to set the fragmentation threshold.  
  Unfortunately, once set you won't receive any packets.
* Corrected support of 'iwlist ${IFNAME} bitrate'
* Corrected support of 'iwlist ${IFNAME} power'
* Changed the way modulation and freq_band are stored and accessed. 

Sep 29 2004 Changes in 0.10

* Fixed problem with manual disabling of RF via rf_kill sysfs entry wasn't 
  resulting in the card actually being disabled.
* Added mode module parameter so you can start the device in either 
  Managed or AdHoc mode (see README.ipw2200 for more information)
* Modified logic for detecting hidden SSIDs to work with how Linksys APs 
  do it.
* Hooked in the rest of AdHoc code.  You can now create adhoc networks,
  associate to existing ones, etc.
* Added adhoc_create module parameter for configuring the driver to auto 
  create a network if you have provided the channel and network name.
* More changes to the scan logic, adding more debug output to indicate 
  why specific networks are chosen over others (enable those messages by
  turning on the SCAN debug level.  See `dvals` for the specific value.)
* Added a printk() to the pci probe indicating if it detects a 2915ABG 
  or 2200BG adapter.
* Fixed problem with setting IW_MODE to AUTO (previously it just didn't 
  work -- now it defaults back to IW_MODE_INFRA)
* Fixed problem with device coming up even if manual disable specified.
* Fixed problem with udev (or anything else that parsed all sysfs 
  entries) with causing error log storms to the kernel log.

Sep 28 2004 Changes in 0.9

* Fixed support for all 802.11G extended rates
* Ad-Hoc code starting to show up.  You can now create Ad-Hoc networks 
  and join with other cells.  Data Tx/Rx is still in the works.
* Added mode switching support to WX:
	% iwconfig eth1 mode (managed|ad-hoc)
* Enhanced the iwlist scan results to (hopefully) be more clear 
  on various statistics.
* Added support for restricting the 802.11 mode via a iwpriv method.  
  See README.ipw2200 for more information.
* Fixed UNKNOWNSTATUS_ERROR if AdHoc beacon received while in managed mode 
  (thanks to Yi Zhu)
* Fixed UNKNOWNSTATUS_ERROR if RF kill enabled when loading driver 
  (thanks to Yi Zhu)
* Reworked IE parser to use an iterative loop, based on Pedro Ramalhais' 
  original WPA port (thanks to Liang Chai)
* Fixed stricter type checking errors (thanks to Pedro Ramalhais)
* Fix oops in ieee80211_crypt_free (thanks to Yi Zhu)
* Fixed module reference counting of ieee modules (thanks to Stephen 
  Hemminger)
* Fixed oops if CONFIG_NETLINK enabled (thanks to Yi Zhu)
* Misc. code cleanups (extra casts removed, unused function warning) 
  (thanks to Scott Feldman)
* Changed AP detection logic so that it only considers a probe response 
  to be a duplicate if both the BSSID and ESSID match (allowing a single 
  BSSID to broadcast multiple ESSIDs)
* Modified load sequence such that if the RF switch is disabled during 
  load it doesn't try and bring up the network.
* Modified dev->open so that it doesn't start the queue unless it is 
  associated
* Sync'd ipw2100's ieee80211 module changes

Sep 15 2004 Changes in 0.8

* Fixed rate reporting to start with reporting maximum supported data rate,
  then falling back after enough packets have Tx'd to be able to accurately
  determine the true data rate.
* Added a space after __FUNCTION__ to remove compilation problems 
  experienced by some (thanks to Andreas Ruess)
* Added support for associating with 802.11a APs (thanks to Liang Chai)
* Improved quality/signal level reporting (thanks to An-Cheng Huang)
* Misc. code cleanups (thanks to Stephen Hemminger):
	* Change to use sysfs attribute groups
	* Fix to incremement Tx packets
	* Removal of IRQ save in the ISR
	* Removed redundant STATUS_DEV_OPEN
	* Changed vmalloc -> kmalloc
	* Several global -> static variable change
	* Use C99 intializars in iw_handler declarations
* Modified the Makefile to define the CONFIG_IEEE80211_CRYPT_* differently
* Modified the AP selection logic to pick the AP with the strongest signal 
  that meets the other configured criteria.
* Modified AP selection logic to discard APs whose scan age has expired.
* Added code to set the sensitivity in the firmware upon association.
* Added code to correctly seed the random number control in the firmware.
* Added code to try and correct the intermittent failure seen sometimes while
  loading the driver.
* Added code to detect when enough beacons have been missed to trigger a 
  disassociation, and to then invoke the disassociation.

Sep 3 2004 Changes in 0.7

* Fixed Makefile problem with compiling WEP support (thanks to Yi Zhu)
* Fixed support for associating with G-only APs (and also supporting all 
  of the G/B-rates in Mixed mode)
* Modified iwconfig output to report either 'unassociated' or 
  'ieee 802.11{band}' where band is one of a, b, or g.
* Fixed error preventing modprobe from consistently working (thanks to 
  Yi Zhu)

Sep 2 2004 Changes in 0.6

NOTE: In order to upgrade to 0.6 you must also upgrade your firmware to 
2.0.  You can download the firmware from http://ipw2200.sf.net/firmware.php.

If, when loading the module, you see an error in the kernel logs about 
conflicting firmware versions (2 != 1) or (1 != 2) then you do not have 
the correct firmware installed.

* Updated firmware interface to support new extended scan.  
* Added ABG PCI ids
* Added support for G data rates.
* Partial support for A data rates.
* Fixed ordinal setup/reading code so that real values can be reported through
  wireless statistics.
* Partial change for reporting link quality through iwconfig -- not 
  completed.
* Refactored IPW_BAND_* to IPW_IEEE_* to try and use better terminology 
  when referencing 802.11 modes (a,b,g) vs. frequency bands 
  (2.4Ghz,5.2Ghz) 
* Misc. code cleanup (thanks to Stephen Hemminger):
	* If error log is empty, don't print the header
	* Removed ipw_net_change_mtu since alloc_etherdev will set it to 
	  eth_change_mtu which enforces the same restrictions. 
	* Variables changed to private that are only used in ipw2200_main
	* Removed forward inline declaration, it really doesn't matter
	* Chagned snprint stuff not inline (it can't be performance 
	  sensitive), and data doesn't get modified (const).

Aug 31 2004 Changes in 0.5

* Fixed problem with load retry logic re-allocating Rx buffers 
  repeatedly (skb leak)
* Fixed SWSUSP compilation dependency to CONFIG_SOFTWARE_SUSPEND2
* Fixed oops if sysfs entries were read after the driver fails 
  to load if the firmware is missing.
* Moved probe / beacon handling into ieee module (shared with ipw2100)
* Changed to use netdev_priv consistently (thanks to Stephen 
  Hemminger)
* Fix the initialization code (thanks to Stephen Hemminger):
	- memset is unnecessary since alloc_etherdev does it already
	+ SET_NETDEV_DEV so that /sys/class/net/eth0/device symlink is created
	- don't set name to "eth%d" already done by alloc_etherdev
	- don't mask register_netdev error codes
* Misc. code cleanup (thanks to Stephen Hemminger):
	* get rid of left over cruft in ipw2200 priv stuff that is 
	  set but never used
	* debug/channel should be local variables (global namespace
	  conflicts possible).
	* extra semi-colon in IPW_DEBUG is bug waiting to happen.
* Report firmware version via ethtool (like other drivers) rather than
  special sysfs hook. (thanks to Stephen Hemminger)
* Fixed TCP session freezing problem (thanks to Yi Zhu)
* Added support for non-broadcasting ESSIDs (thanks to Andreas 
  Oberritter)

Aug 16 2004 Changes in 0.4

* Hooked in WEP.  You can now use encrypted sessions.  802.1x should also work
  (802.1x hasn't been tested).  Only supports OPEN authentication.
* RF Kill switch is now supported.  Manual driver based RF kill support added
  through sysfs entry (see README.ipw2200)
* Fixed scan results to report channel # for APs vs frequeny
* Added privacy capability matching to association selection -- the driver
  will no longer associate with APs that have different privacy capabilities
  enabled than the station
* Switched the IPW_DEBUG_ERROR and WARNING macros to always use printk 
  so that release builds, and users without a debug mask set will still
  see error conditions in the kernel log.
* Added RTS threshold WE handler
* Added compilation support for having the SWSUSP patch installed (thanks to 
  Morten Nilsen)

Aug 12 2004 Changes in 0.3

* Implementation of many WE commands (still a lot to go)
* Scanning and association are working.
* Tx/Rx functioning for non-WEP enabled sessions
* Lots and lots of code changes 
* ieee80211 pulled in from ipw2100 project.

May 28 2004 Changes in 0.1

* Initial public release
* Fixed proc oops on module load
* Removed compilation warnings
* Added full list of device IDs
* net device register / unregister
* PCI probe
* sysfs /sys/devices/pcixxx:xx/xxx/xxx/ipw2200_debug
	( cd /sys; find . -name 'ipw2200*' )
* proc /proc/net/ipw2200/debug
* module load / unload
* hot plug shell in place. 
	(loads from /usr/lib/firmware/ )

