Intel® PRO/Wireless 2200BG Driver News
an open source 802.11a/bg driver for the ipw2200 and ipw2915 - main | validation | firmware | downloads | GIT | news | faq
SourceForge.net Logo
Jul 12 2007 Changes in 1.2.2
  • Add compatibility patch for linux-2.6.22 sk_buff structure change
  • Fix ipw_isr() comments error on shared IRQ
  • Fix ipw2200 set wrong power parameter causing firmware error
  • Fix `iwpriv set_power` error

Jan 04 2007 Changes in 1.2.1
  • Fix ESSID last byte bogus character problem caused by WE-21
  • Compatibility update for 2.6.19 above kernel workqueue API change
  • Fix external module compiling symbols not found warning

Sep 12 2006 Changes in 1.2.0
  • Add IEEE80211_RADIOTAP_TSFT for promiscuous mode
  • Fix make patch_kernel problem

Aug 20 2006 Changes in 1.1.4
  • Enable wireless extension passive scan (thanks to Thomas King)
  • Fix deadlock detected by lockdep
  • Add pci .shutdown handler
  • Fix kernel Oops if cmdlog debug is enabled
  • mark "iwconfig retry 255" as invalid
  • remove the MAC timestamp present field from radiotap head
  • Fix ipw2200 QOS parameters endian issue
  • remove unused struct ipw_rx_buffer
  • Reassociate even if set the same essid (thanks to Bill Moss)
  • ipw_wx_set_essid fix (thanks to Bill Moss)
  • SIOCGIWFREQ ioctl returns frequency rather than channel (thanks to Ingo van Lil)
  • always enable frequently used debugging code

Jun 12 2006 Changes in 1.1.3
  • Add kernel 2.6.8 compatibility support patches
  • Replace bash-specific constructions for verify_wifi_hw script
  • Make Makefile deal better with CONFIG_* definitions
  • Remove KSRC_OUTPUT checking for compiling external modules
  • Always enable frequently used debugging code
  • SIOCGIWFREQ ioctl returns frequency rather than channel (thanks to Ingo van Lil)
  • ipw_wx_set_essid fix (thanks to Bill Moss)
  • Reassociate even if set the same essid (thanks to Bill Moss)
  • Remove unused struct ipw_rx_buffer
  • Fix a possible SMP deadlock bug found by lockdep
  • Fix QoS parameters big endian issue (thanks to Jackie Wu)

Mar 20 2006 Changes in 1.1.2
This version requires ieee80211-1.1.13.
  • Fix endian issue with v3.0 firmware image format
  • Set the 'fixed' flags in wext get_rate (thanks Jean II)
  • Do not conitune loading fw if kmalloc fails (thanks to Ingo Molnar)
  • Add module_param support for antenna selection
  • Generates a scan event after a scan has completed (thanks to Jean II)
  • Fix TX QoS enabled frames problem
  • Exponential averaging for signal and noise Level (thnaks to Bill Moss)
  • New rtap_iface RX support
  • ability to forward Tx'd packets (thanks Stefen)
  • addition of channel information to the radiotap header in Tx'd frames
  • allow user space to set up some simplistic filters for what data to forward to user space.
  • provides 'filters' script to see what filters are available
  • provides 'ipwstats.c' sample C program that will open the rtap interface and parse out the radiotap header information.
  • added version string fields so the version string indicates what is configured (ie, you'll see 1.1.1kpmd if you are using a snapshot (Kernel.. previously -git), promiscuous (p), monitor (m), debug (d) build

Mar 08 2006 Changes in 1.1.1
  • Filter unsupported channels out in ad-hoc mode
  • Change debug level for firmware error logging
  • Export `debug' module param only if CONFIG_IPW2200_DEBUG
  • Set a meaningful silence threshold value
  • Enable the "slow diversity" algorithm
  • Wireless extension sensitivity threshold support (thanks to Olivier Hochreutiner)
  • Switch to the new ipw2200-fw-3.0 image format
  • Fix script `unload' "only return from a function" problem
  • Update README.ipw2100 set_power description

Feb 23 2006 Changes in 1.1.0
  • Fix IW_QUAL_DBM undefined problem if WIRELESS_EXT < 19 (thanks to Bill Moss)

Feb 22 2006 Changes in 1.0.13
  • Fix DHCP broken problem caused by is_multicast_ether_addr doesn't include broadcast ether address (thanks to Olivier Hochreutiner)

Feb 17 2006 Changes in 1.0.12
  • Fix debug option cannot enable problem (thanks to Henrik Brix Andersen)
  • Suppress "Unknown notification..." warning message
  • Add signal level to iwlist scan output (thanks to Bill Moss)
  • Remove the WPA enabled card associates to non-WPA AP checking (thanks to Stefan Rompf)
  • Fix compile error on kernels w/ WIRELESS_EXT < 18
  • Replace ipw specific frame_hdr_len() with generic ieee80211_get_hdrlen()
  • Fix rf_kill is activated problem after mode changing if module parameter 'disable=1' is used

Feb 15 2006 Changes in 1.0.11
  • Fix software crypto shared WEP authentication problem (thanks to Andrew Morton)
  • Stop netdev queue if h/w doesn't have space for new packets
  • Print geography code upon module load (thanks to Henrik Brix Andersen)
  • Fix WPA network selection problem (thanks to Stefan Rompf)
  • Fix a potential NULL pointer dereference if CONFIG_IPW2200_DEBUG is not defined
  • Fix ->eeprom[EEPROM_VERSION] check (thanks to Alexey Dobriyan)
  • Support WE-18 WPA enc_capa (thanks to Dan Williams)
  • Disable hwcrypto by default as a temporary workaround for the frequent firmware restart problem (thanks to Andreas Happe)
  • Convert semaphore to mutexes (thanks to Ingo Molnar)

Jan 08 2006 Changes in 1.0.10
  • Fix a QoS send_command argument switch problem (thanks to Henrik Brix Andersen)
  • Fix a variable referenced after kfree() bug

Jan 06 2006 Changes in 1.0.9
  • Scale firmware loading watchdog with the firmware size (thanks to Peter Jones)
  • Add module parameter to enable/disable roaming
  • Make LED blinking frequency independ of HZ (thanks to Clemens Buchacher)
  • Replace HZ calculation with jiffies_to_msec()
  • Add LEAP authentication algorithm support
  • Mask out the WEP_KEY command dump from debug log for security reason (thanks to Nick Kralevich)
  • Fixed indirect SRAM/register 8/16-bit write routines for non-dword-aligned destination addresses
  • Fixed sw_reset doesn't clear the static essid
  • Fix a slab corruption problem caused by ipw2200 error log buffer incorrect calculation
  • Disallow direct scanning when device is down (thanks to Pekka Enberg)
  • Fixed "iwspy ethx off" causes kernel panic
  • Fixed ipw2200 returns NETDEV_TX_BUSY even if queue is not full

Oct 21 2005 Changes in 1.0.8
  • Added channel support for ipw2200 cards identified as 'ZZR'
  • Fixed problem with not being able to send broadcast packets.
  • Fixed older Wireless Extension compatibility

Oct 18 2005 Changes in 1.0.7
NOTE: In order to upgrade to 1.0.7, you must:
  1. Obtain the ieee80211 subsystem (v1.1.5 or later) from http://ieee80211.sf.net
  2. Obtain the latest firmware (v2.4) from http://ipw2200.sf.net/firmware.php
  • Fix problem with 'Driver using old /proc/net/wireless' message (thanks to Benoit Boissinot)
  • Fixed #771 problem with too many (8) bytes being received when using AES/hwcrypto.
  • Fixed problem with get_cmd_string not existing if CONFIG_IPW_DEBUG is not set.
  • Added code to filter out WPA networks if only shared key WEP is enabled (resolving a firmware restart)
  • Fixed support of mixed PTK/GTK CCMP/TKIP support
  • Fixed is_network_packet to check for broadcast packets
  • Modified all places where firmware loading can fail to report the errno in decimal format for easy tracking (thanks to Peter Jones)
  • Fixed 760 problem with setting WEP key in monitor mode causes IV loss and decrypt attempt on captured packets.
  • Fixed 455 problem with frequent channel changes causing a firmware error.
  • Updated copyright strings
  • Modified firmware error and event log capturing to capture into allocated data blocks vs. pulling from registers.
  • Changed ipw_dump_nic_error_log to ipw_dump_error_log and adjusted to use pre-allocated log blocks.
  • Added wait_state wakeup on scan completion.
  • Added event_log and error_log sysfs entries.
  • Modified all ipw_send_cmd() usage to report errors within ipw_send_cmd vs. within each of the callers. This allows uniform error returns as well as uniform debug logging.
  • Modified ipw_config and STATUS_INIT setting to correct race condition with request_scan being called before initialized if invoked from insmod, resulting in no association occurring during boot until iwlist scan is run.
  • Updated version stamp for firmware from 2.3 to 2.4.
  • Fix firmware error when setting tx_power.
  • Fixed #751 Fix driver association requires manual scan.
  • Fix ipw_wx_get_txpow shows wrong disabled value.
  • Fixed #701 Fix a misuse of ieee->mode with ieee->iw_mode.
  • Fixed the ad-hoc network WEP key list issue.
  • Fixed #792 Fix WPA-PSK AES both for -Dipw and -Dwext.
  • Disable host fragmentation in open mode since IPW2200/2915 hardware support hardware fragmentation.
  • Workaround kernel BUG_ON panic caused by unexpected duplicate packets.
  • Added more useful geography encoding so people's experience with iwconfig matches what their hardware can actually do in regard to supported channel maps, etc.
  • Misc. updates to be in sync w/ latest ieee80211 subsystem
    • Use of ieee80211_hdr to ieee80211_hdr_Naddr
    • Added is_queue_full for 802.11e support.
    • Added handle_probe_response, handle_beacon, handle_association_response callbacks.
  • Changed default # of missed beacons to miss before disassociation to 24 (vs. 9 which is too low in most environments)
  • [unstable] Added command log sysfs entry for recording firmware interactions even in non-debug builds
  • Radiotap type frames support for monitor mode, which requires Libpcap 0.9.3+ to parse correctly in the user space (thanks to Mike Kershaw for the radiotap addition, and Stefan Rompf who provided an initial implementation for adding AVS which then motivated the radiotap work.)
  • Fixed #801 problem with intermittent firmware restarts in weak signal areas due to roaming logic
  • Fixed some compiler issues if CONFIG_IPW2200_QOS is enabled.

Jul 13 2005 Changes in 1.0.6
NOTE: In order to upgrade to 1.0.6, you must obtain the ieee80211 subsystem (v1.0.2 or later) from http://ieee80211.sf.net
  • Fixed #637 problem with setting Tx power on A band (thanks to Liu Hong)
  • Fixed abg_ture -> abg_true to sync with ieee80211-1.0.2 (thanks to Liu Hong)
  • Fixed #667 problem with 'No space for Tx' (thanks to Zhu Yi)
  • Fix hardware encryption (both WEP and AES) doesn't work with fragmentation. Firmware sends received packets with double sized ICV/MIC (thanks to Zhu Yi)
  • Fix is_duplicate_packet() bug for fragmentation number setting. (thanks to Zhu Yi)
  • Fixed type-o in Makefile 'direectory -> directory' (thanks to Elie De Brauwer)
  • Fixed Makefile use of MODVER (thanks to Zhu Yi)

Jul 12 2005 Changes in 1.0.5
NOTE: In order to upgrade to 1.0.5, you must obtain the ieee80211 subsystem from http://ieee80211.sf.net
  • Fixed #452 problem with setting retry limit (thanks to Hong Liu)
  • Fixed #592 race condition during association causing firmware errors
  • Fixed #602 problem with building in 64-bit environment
  • Fixed #625 problem with SCAN_REQUEST_EXT sometimes failing
  • Fixed #645 problem with bit rate not decreasing when moving laptop farther from AP
  • Fixed #656 problem with 'iwconfig eth1 mode auto' and 'modprobe' locking the system
  • Fixed #667 problem with "No space for Tx" for hwcrypto=1
  • Fixed #680 problem with compiling against kernel patched with Software Suspend 2.1.8.7 (thanks to svetljo )
  • Fixed #685 kernel panic in rmmod caused by led work is still queued
  • Fixed #695 problem with network doesn't reassociate after suspend/resume
  • Fixed #701 problem with 'iwprvi sw_reset' not resetting the card from monitor mode
  • Fixed #702 compilation error against 2.6.12
  • Fixed #710 problem with monitor mode being used after a WEP key has been configured
  • Enhance remove-old to tell modules will be unloaded and then unload them (thanks to Alejandro Bonilla)
  • INSTALL and ISSUES update (thanks to Alejandro Bonilla)
  • Cosmetic README fix (thanks to Alejandro Bonilla)
  • Fixed network->mode vs. priv->ieee->iw_mode checking and README update (thanks to Ben Cahill)
  • Fixed "Unknown management packet %d" warning
  • Fixed setting channels multiple times in monitor mode causes scan stopped
  • Fixed ipw_wx_sw_reset doesn't switch firmware if mode is changed.
  • Add duplicate packet checking code (kill ping DUP! and TKIP replay warning)
  • Fix hardware encryption (both WEP and AES) doesn't work with fragmentation.
  • Removed ieee80211 subsystem from being part of the distribution. Please see the INSTALL document for information on obtaining and installing the ieee80211 modules.

May 17 2005 Changes in 1.0.4
NOTE: In order to upgrade to 1.0.4 you must also upgrade your firmware to 2.3. You can download the firmware from http://ipw2200.sf.net/firmware.php.
  • Added some run time data via the 'stats' sysfs entry.
  • Fixed #627 problem with open APs not working with wpa_supplicant
  • Fixed swapped memset arguments in ieee80211_tx (thanks to Jesper Juhl)
  • Fixed problem with CONFIG_IEEE80211_ defines not being configured when built as an in-kernel module (thanks to Olivier Blin)
  • Fixed #632 problem with 'txpower auto' setting power incorrectly (thanks to Kai Groner)
  • Fixed #634 problem with 'iwconfig eth1 frag 0' hanging the shell
  • Fixed problem with adapter not fully powering off during suspend to RAM or when module unloaded.
  • Improved support of iwlist freq|chan and setting of channels via iwconfig to correctly check channel limits (added ieee80211_geos)
  • Fixed #645 problem with turning fixed rates off not taking effect until you reload the driver
  • Fixed problem with firmware restart if wpa_supplicant was used to set a key that wasn't exactly 5 or 13 bytes in length.
  • Fixed #623 Added iwpriv sw_reset extension to reset sw parameters
  • Added speed_scan channel scan list support
  • Added managment frame export to user space with frame statistics
  • Fixed #652 Modified the driver to load the EEPROM data even if RF KILL is active during driver load
  • Global s#CX2_#IPW_#g to make code more consistent
  • Fixed #572 problem with setting txpower to auto
  • Fixed #656 problem with kernel oops if mode auto; modprobe -r ipw2200
  • Added QoS (CONFIG_IPW_QOS) support. This is being actively developed but is the first step in getting WMM support into the driver and the kernel.
  • Fixed some race conditions wich channel changes, association, and scan abort that could periodically cause a firmware restart.
  • Misc. changes to the ieee80211 subsystem to clean up code and add additional support.
  • Added some extensions to export scan and network statistics to user space (exposed through speed_scan and net_stats sysfs entries)
  • Fixed #661 problem with 'pci' script (thanks to ajksf@xs4all.nl)
  • Fixed #654 problem compiling against kernel patched with SWSUSP2 (thanks to Henrik Brix Andersen)
  • Fixed a few bugs in how monitor mode was supported (scan lists weren't quite right)
  • Updated the firmware requirement from 2.2 to 2.3 which supports monitor mode.
  • Fix #609 problem if SUSPEND2 included on kernels that do not support

Apr 08 2005 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)

Mar 23 2005 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)

Feb 08 2005 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 Intel PRO/Wireless 2225BG Network Connection adapter
  • 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

Jan 31 2005 Changes in 1.0.0
  • Stamped the version 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)

Jan 28 2005 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

Jan 17 2005 Changes in 0.21 (including unreleased 0.20)
  • 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
  • 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

Dec 20 2004 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

Dec 14 2004 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

Dec 10 2004 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.
ISSUES: Ad-Hoc is currently not functional with 0.17. If you rely on Ad-Hoc capabilities, please do not use this version.
  • 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

Dec 06 2004 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)

Nov 24 2004 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)

Nov 21 2004 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.

Nov 10 2004 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

Oct 13 2004 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
  • Hooked up the ability to set the fragmentation threshold. Unfortunately, once set you won't receive any packets.
  • Fixed problem with privacy capability not being compared correctly when assessing viability of a network for association.
  • 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
  • Corrected support of 'iwlist ${IFNAME} bitrate'
  • Corrected support of 'iwlist ${IFNAME} power'
  • 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.
  • 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.
  • 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 16 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 03 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 02 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 31 2004 LKML Update & Intel PRO/Wireless 2915 ABG Announcement
The following is the email announcement to the LKML:
To: linux-kernel@vger.kernel.org, netdev@oss.sgi.com
Subject: [Announce] Update on ipw2100, ipw2200, and support for Intel PRO/Wireless 2915ABG

It's been a while since I've updated lkml and netdev on the progress of
the ipw projects.  Given the recent announcement by Intel for the
introduction of Intel PRO/Wireless 2915 ABG Network Connection miniPCI
adapter, I thought now was a good time...

First, thanks to everyone that has been contributing, using, testing,
and reporting feedback for the projects described below.  The support
by folks in the community has been terrific -- the drivers wouldn't be
anywhere near as feature rich and stable as they are today if not for
the contributions of everyone.

The ipw2100 project (802.11b) has progressed very well.  We are in the
process of cleaning up the driver for submittal to netdev for eventual
inclusion into the kernel.  The driver currently supports wep, 802.1x,
monitor mode, adhoc, infrastructure, etc.  Suspend/resume isn't quite
functioning yet, but we'll get there soon.  This project is hosted at
http://ipw2100.sf.net.

The ipw2200 project (802.11bg), which was launched back in May, is
quickly catching up to the ipw2100 project in terms of functionality.
It currently supports wep and 802.1x in infrastructure mode.  Currently
it will only associate at B data rates; hooking in the G capabilities
is going on right now.  We'll then tackle adhoc and remaining feature
gaps.  We had been planning on holding off submittal for kernel
inclusion until we were feature complete.  However, several folks have
requested that we accelerate that plan and get it in sooner rather than
later.  To that end we're working to try and get it ready for submittal
along with the ipw2100 project.  This project is hosted at
http://ipw2200.sf.net.

The ipw2100 and ipw2200 projects currently share the 802.11 frame
handling stack for Tx/Rx and some management frame processing.  That
code has been pulled into its own module suite (ieee80211), based on
work from the Host AP project.  That code needs to be resync'd with the
Host AP code (and vice versa where appropriate) so that then all of
those drivers will be able to leverage a single wireless network stack.

Anyway, this brings me to announcing Linux support for the Intel
PRO/Wireless 2915 ABG Network Connection adapter.  As of next week, the
ipw2200 project will also begin supporting the ABG adapter.  From the
driver's perspective, the only change between the two cards is the
addition fo the A radio on the 2915.  So, adding support for the ABG is
just a matter of updating the firmware used by the ipw2200 project,
adding PCI id's, and putting in support for A.  That work will progress
as we continue to bring full support for the ipw2200 project.

At some point in the near future we will rename the ipw2200 project to
something more appropriate to identify it as supporting both the 2200
and 2915 adapters.

Thanks,
James

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)
  • Modified net_dev declaration to compile on 2.4.27 (thanks to Yi Zhu)

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.

Jul 02 2004 Changes in 0.2
  • firmware loading
  • skeleton wireless extensions
  • eeprom access
  • new sysfs tweakables
  • skeleton for RX and TX queues

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

May 04 2004 Project Opened!
Intel has officially launched this project as of today. As a result, we are now free to engage in more technical discussions on our implementation plan for the IPW2200. A primary goal of this project, in addition to providing the features Linux users care about, is to build a unified driver framework for both the IPW2100 and IPW2200.

If you are curious about our ideas in this area, and have any ideas of your own or would like to contribute in any way, please join the mailing list and send out your thoughts and questions.

You can join the mailing list here. NOTE: To help reach the goal of a unified driver, both the IPW2100 and IPW2200 projects are set up to use the same mailing list. If it becomes evident that we need to create a mailing list specifically for the development of the IPW2200 driver we will do so.

May 04 2004 LKML Announcement
The following is the email announcement to the LKML:
To: linux-kernel@vger.kernel.org
Subject: [Announce] Intel PRO/Wireless 2200BG 802.11b/g Project

Intel is pleased to announce the launch of an open source project to support
the Intel PRO/Wireless 2200BG Network Connection miniPCI adapter (IPW2200).
The project site is up and in the coming weeks you can expect initial source
to become available providing the foundation for supporting this hardware.

We are announcing to the LKML now as we value working with the Linux
community and wanted to let you know directly that Intel has now officially
started this project.

The project is hosted at http://ipw2200.sourceforge.net.  A development
mailing list is available (linked from the top of the IPW2200 project
page) so if you are interested in this project, go subscribe to the mailing
list and/or set yourself up to monitor the file releases.

Please let me know if you have any questions.

Thanks,
James

Last Updated: May 03 2004