ieee80211 subsystem for Linux
an open source 802.11 network stack for the Linux kernel - main | downloads | git | news | Intree Versions Logo
Note, this project is deprecated.

It has been incorporated into the upstream Linux kernel as (now) "libipw" to be used for the old ipw2x00 driver only.

A generic ieee80211 networking stack for the Linux kernel. To use, simply download one of the tarballs from the downloads section, untar it, and follow the installation instructions (for example):

% tar xzvf ieee80211-1.0.1.tgz
% less ieee80211-1.0.1/INSTALL
A note on the development process...

The ieee80211 subsystem is being developed in multiple locations at once, and keeping them all synchronized is problematic.

The ieee80211 subsystem used here attempts to keep pace with inclusion of patches submitted to the netdev mailing list as well as to LKML, as well as potentially destabalizing patches.

The goal is to keep those users that want to keep a functioning system functioning up and running while still moving to new kernel releases. In that regard, the ieee80211 development project acts as a screen and testing ground for patches going into the subsystem.

You can also obtain the latest release and code from the ieee80211 GIT-delta repository. This is not a full GIT tree and provides an overlay of object cache and SHA data. For more information, see the ieee80211 GIT page.

The following are links to projects, archives, and other sites that may be of use to ieee80211 users. Packages:

Jul 12 2007 Changes in 1.2.18
status: The same as mainline 2.6.22 with trival compatibility patches for kernels since 2.6.9
  • Add compatibility patch for linux-2.6.22 sk_buff structure change
  • Fix remove-old not to remove mac80211 related files

Apr 02 2007 Changes in 1.2.17
status: Not in mainline yet, but the change is trival (add more definitions in the radiotap header. If you are using kernel 2.6.20-rc1 or newer, can use the ieee80211 subsystem provided with your kernel instead of installing this package.
  • Fix connection problem with an encrypted AP (WPA and WEP) on kernels earlier than 2.6.18 (This problem only exists on 1.2.16).
  • Makefile suggests to use bash if it is not the default SHELL.
  • Makefile keeps quite if Modules.symvers doesn't exist.

Jan 05 2007 Changes in 1.2.16
status: Merged in mainline commit-id 3eb546057dd65ec75c900c9948684ffd5e617630 available as of 2.6.20-rc1. If you are using kernel 2.6.20-rc1 or newer, you can use the ieee80211 subsystem provided with your kernel instead of installing this package.
  • Remove IEEE80211_VERSION_API macro and symbol ieee80211_api_version
  • Crypto cipher fix for kernel 2.6.19 and above
  • Fix a WLAN_GET_SEQ_SEQ() select the wrong region bug

Aug 21 2006 Changes in 1.2.15
Status: Merged in mainline commit-id f09fc44d8c25f22c4d985bb93857338ed02feac6 available as of 2.6.18-rc4. If you are using kernel 2.6.18-rc4 or newer, you can use the ieee80211 subsystem provided with your kernel instead of installing this package.
  • Add IEEE80211 version number checking macros
  • Export symbol ieee80211_api_version for dynamical checking by drivers.
  • Workaround malformed 802.11 frames from AP
  • Fix TKIP and WEP decryption error on SMP machines
  • Add IEEE80211_API_VERSION macro and export symbol ieee80211_api_version
  • TKIP and CCMP replay check rework
  • remove ieee80211_tx() is_queue_full warning
  • Fix header->qos_ctl endian issue

Jun 12 2006 Changes in 1.1.14
  • Add kernel 2.6.8 compatibility support patches
  • Make remove-old be aware of in-tree sofmac
  • Make Makefile deal better with CONFIG_* definitions
  • Fix modprobe warning of "disagree about version of ..." bug

[ more ]

A quick blurb about the release version numbers use:

Stable versions can be identified by the last digit of the version number being a 0 (zero). All other releases are development snapshots.

For example, 1.0.0 is stable, 1.0.1 is a development snapshot.

Stable versions require a more extensive validation pass to be executed and will not be made available as frequently as the development snapshots.

Date Download md5sum Comments
2007-Jul-12 ieee80211-1.2.18.tgz a9ad546038ea7afb631e3dcf3175cddb distros/ieee80211-1.2.18.tgz
2007-Apr-02 ieee80211-1.2.17.tgz 45f555036d4da5320b2c081eac8b3b4e distros/ieee80211-1.2.17.tgz
2007-Jan-05 ieee80211-1.2.16.tgz 5d4ff0f2771c9c85c831b3787c8fef56 distros/ieee80211-1.2.16.tgz
2006-Aug-21 ieee80211-1.2.15.tgz 499d5272fd1326ae65ebef80d9726e4d distros/ieee80211-1.2.15.tgz
2006-Jun-12 ieee80211-1.1.14.tgz cd380abe9bd25fbf2c205c6b20414e38 distros/ieee80211-1.1.14.tgz
2006-Mar-31 ieee80211-1.1.13.tgz 062debe7a4042ee5969607a810fb89fa distros/ieee80211-1.1.13.tgz
2006-Feb-15 ieee80211-1.1.12.tgz 20da3f23dad2356da8f14d8b3d88d58e distros/ieee80211-1.1.12.tgz
2006-Feb-07 ieee80211-1.1.11.tgz 3112b97b934074c17d6ee35ae2a58c03 distros/ieee80211-1.1.11.tgz
2006-Jan-16 ieee80211-1.1.9.tgz cab4c5cd1ace1e0837cbf8b586ba1422 distros/ieee80211-1.1.9.tgz
2006-Jan-09 ieee80211-1.1.8.tgz ed957e4c8b4b683e4fd5f1a4c7787b88 distros/ieee80211-1.1.8.tgz
[ more ]

2.6.13-rc1+ conflict with ieee80211.h
The 2.6.13 series currently contains an ieee80211.h include file that is not compatible with this version of the ieee80211 subsystem. The ieee80211 subsystem make file should detect the in-kernel version. If you build the ieee80211 subsystem targetted to install into your kernel sources, you can then rebuild the kernel using those files:

	% make IEEE80211_INC=/lib/modules/`uname -r`/build/include install
That will install ieee80211.h and ieee80211_crypt.h into the include/net directory contained within the installed kernel build sources.

Fix ieee80211-1.2.16 crypto modules loading problem: patch
This patch fixes the problem when initializing the kernel crypto modules. For example, if you see below errors from dmesg please try this patch.
    kernel: michael_mic: tfm_michael == NULL

Fix make patch_kernel problem for ieee80211-1.2.15: patch

Fix ieee80211-1.1.9 compile error on 2.6.9 and old kernels: patch
This patch corrects the DEFINE_SPINLOCK undefined problem (see bug #897 on

Script remove-old Fix: patch
Fix the remove-old script fails to find for the old ieee80211 modules on some distros (i.e. SuSE Linux)

Fix ieee80211-1.1.8 compile error on 2.6.11 and old kernels: patch
This patch corrects the above problem (see bug #885 on (thanks to Russell Stuart)

Problem compiling pre-we18 (2.6.12 and older): patch
If you encounter problems compiling ieee80211 with messages about IW_QUAL_LEVEL_UPDATED or IW_ENCODE_EXT_GROUP_KEY, please apply this patch and try again.

Problem sending broadcast packets with ieee80211-1.1.5: patch
This patch corrects the above problem (see bug #798 on

Problem with DHCP and ieee80211 1.0.3 and older?: patch
This patch correct a problem encountered by some users when the ieee80211 subsystem overwrote the ethernet header in SKBs set for transmission.

ieee80211-1.0.1 complains about not finding .config or autoconf.h: patch
This patch corrects a problem where the 'remove_old' script was looking in the wrong location for the .config and include/linux/autoconf.h files (thanks to Pedro Ramalhais)

ieee80211-1.0.1 Fix for using skb after it was freed: patch
Fix using skb->priority for a already freed skb.
NOTE: To apply a patch you download the patch, then use the patch utility:
% patch -p1 -d TARGETDIR < PATCHFILE
Where TARGETDIR is the location of the package source file and PATCHFILE is the path to the (you guessed it)... patch file. If you are running the command from within the project directory then you do not need to provide the '-d TARGETDIR' parameter.

For example:

% patch -p1 -d ~/my_project < ieee80211-some_fix.patch
would apply the patch 'ieee80211-some_fix.patch' in the directory '~/my_project'.

If you have any questions, concerns, etc. please email
Last Updated: May 07 2012