README 11.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417

Linux Wireless compatibility package
=====================================

This is a Linux wireless compatibility package which provides the latest
Linux wireless subsystem enhancements for kernels 2.6.24 and above.
It is technically possible to support kernels < 2.6.24 but more
work is required for that.
It also provides Linux bluetooth subsystem enhancements for kernels 2.6.27 and above.

With a local git repository you can update the compatibility package yourself. 
For more information on how to do this please refer the Developers section below.

Documentation
------------

This package is also documented online and has more-up-to date
information online than on this README file. You should read the wiki page
and not rely on this README:

http://wireless.kernel.org/en/users/Download

Subscribe to the wiki page to get updates on the documentation.

Where to get the latest
-----------------------

This package lets you build your own 'latest', all you need is a local git
repository. The process is documented in the Developers section of this document.
However since not many users are expected to keep a local git repository we 
provide daily snapshots of this package + the wireless and bluetooth subsystem
code. You can find the latest snapshot at:

linux-next.git version:
http://wireless.kernel.org/en/users/Download

stable version:
http://wireless.kernel.org/en/users/Download/stable/

Versions
--------

There are two different versions of this package available. 
 * Version based on latest linux-next.git tree named compat-wireless-YYYY-MM-DD.tar.bz2
 * Version based on linux-2.6-stable.git tree named compat-wireless-2.6.CC.DD.tar.bz2

Both versions should work for every kernel > 2.6.24. The differences are the
code they are containing. The version based on linux-next.git contains the
wireless and bluetooth subsystem out of linux-next.git and the stable version
the wireless subsystem out of the corresponding linux stable version.

Selecting your driver
---------------------

If you know the driver you want you can select it with our
helper script:

./scripts/driver-select

Run that script to see more information. 
Not all drivers are currently enabled via driver-select.

Building, and installing
------------------------

Build: compile the latest linux wireless subsystem

	make

Install:

We use the updates/ directory so your distribution's drivers are left intact.

	sudo make install

Uninstall:

This nukes our changes to updates/ so you can go back to using your
distribution's supported drivers.

	sudo make uninstall

Load:

Reboot unless you know what you are doing.
(Usually modprobe 'driver-name' is the way to go)


Bluetooth modules can be separately compiled and installed using below commands
Bluetooth drivers are also available via ./scripts/driver-select
 
Build:
	make bt

Install:
	sudo make btinstall

Uninstall:
	sudo make btuninstall

Unload:
	sudo make btunload

Load:
	modprobe driver-name. If unsure, reboot.

Drivers
-------

This is the list of drivers the package currently provides. It adds
all new drivers or drivers which keep being updated which you might
be interested in.

Drivers list:

adm8211
ar9170usb
at76c50x-usb
ath5k
ath6kl
ath9k
ath9k_htc
b43
b43legacy
b44
carl9170
brcm80211
ipw2100
ipw2200
iwl3945
iwlagn
iwlcore
iwmc3200wifi
libertas
libertas_cs
libertas_sdio
libertas_spi
libertas_tf
libertas_tf_usb
libipw
mwl8k
orinoco_cs
orinoco_nortel
orinoco_pci
orinoco_plx
orinoco_tld
orinoco_usb
orinoco
p54common
p54pci
p54spi
p54usb
rt2400pci
rt2500pci
rt2500usb
rt2800pci
rt2800usb
rt61pci
rt73usb
rtl8180
rtl8187
rtlwifi
rtl8192ce
spectrum_cs
ssb
wl1251
wl12xx
zd1211rw

This package also provides more drivers which may be documented here

For a complete list see:

http://wireless.kernel.org/en/users/Download

Non-wireless drivers
--------------------

Atheros Ethernet drivers:

atl1
atl1c
atl1e
atl2

To support b43 ssb is also provided, and since ssb is also provided
we provide b44 (the ethernet driver).

The new rfkill drivers also provided and backported.

Bluetooth drivers:

ath3k           
bcm203x
bluecard_cs
bluetooth
bnep
bpa10x
bt3c_cs
btmrvl
btmrvl_sdio
btsdio
btusb
btuart_cs
cmtp
dtl1_cs
hidp
hci_vhci
hci_uart
l2cap
rfcomm
sco

Firmware:
---------

If your driver needs firmware please be sure to check the driver page
for that driver here:

http://wireless.kernel.org/en/users/Drivers

Why?
----

For users or developers stuck on older kernels that want to help test or 
patch wireless work. Additionally if you're on a recent kernel this lets
you get the latest and greatest linux-next git work without much effort.
This may mean new drivers for some users. Last but not least we hope this
will encourage vendors and developers to post patches upstream first
rather than forking or maintaining their own mac80211 releases with
their own patches for their own drivers.

Building for external kernels
----------------------------------

If you have a kernel you do not have installed but yet want to build the
compat-wireless-2.6 drivers for it you can use this syntax:

make KLIB=/home/mcgrof/kernels/linux-2.6.23.9 KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.23.9

If you have a kernel installed, which is not your currently running kernel (e.g. via
distro updates; plus its corresponding kernel-dev package), you can use this syntax:

make  KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64

  and to install to your system's root path for the non-running kernel:

make  KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64 KMODPATH_ARG='INSTALL_MOD_PATH=' install

Bugs
-----

If you've found a bug please report it to our linux-wireless mailing list:

linux-wireless@vger.kernel.org

Report the bug if you are working with the latest and greatest.
If your bug is compatibility-related then we should still try to fix
it within the compat.[ch] work.

ChangeLog
---------

Here you see the list of changes to all wireless drivers, the wireless core and mac80211.

http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=log;

This views all the changes on wireless-testing.git.

License
-------

This work is a subset of the Linux kernel as such we keep the kernel's
Copyright practice. Some files have their own copyright and in those
cases the license is mentioned in the file. All additional work made
to building this package is licensed under the GPLv2.

Developers
----------

Compatibility work goes into compat/compat.[ch]. If using those files do 
not suffice additional actual code changes can go into patches/*.patch.

An extended and more up to date version can be found at:

http://wireless.kernel.org/en/users/Download/hacking

This section deals with development details of compat-wireless and the other
trees it uses. If you want to make your own compat-wireless tarballs, or if you
see something busted with compat-wireless or just want to add something new or
an enhancement this is the guide for you.

Git trees you will need
-----------------------

compat-wireless backports both the bluetooth and 802.11 subsystems down to older
kernels. To be able to synchronize backporting the latest and greatest the
linux-next.git tree is used as its main source for kernel updates. General Linux
kernel compatibility is addressed through a general kernel compatibility tree,
compat.git. compat-wireless then has its own tree for specific wireless
compatibility. You will then need to checkout three trees to start hacking on
compat-wireless:

git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat.git
git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6.git

Linux next
----------

The linux-next.git tree brings all subsystems being worked on for the next
kernel release into one tree. So if the current rc kernel is 2.6.33-rc5, this
means linux-next will have what people today are working on for the 2.6.34
kernel release.

compat.git
----------

The compat git tree is a general kernel compatibility layer which can be shared
amongst different compatibility projects, or drivers. compat-wireless is just
one of the kernel compatibility projects using compat.git. compat.git builds a
general compatibility module, compat, and any additional modules to let you get
new general kernel updates from future kernels on your old kernels.

compat.git modules
------------------

compat.git provides a few modules and headers to help with general kernel
compatibility.

compat
------

Provides all exported symbols implemented in each respective kernel
compat-2.6.xy.c files. Upon module load it just initializes the Linux kernel's
''power management Quality Of Service'' (aka '''pm-qos''') Interface interface
added as of the 2.6.24 kernel. No other things are initialized, the rest of the
compat module just acts as a library of exported symbols.

compat_firmware_class
---------------------

Another module which compat.git provides is a backport of the firmware_class
module which got updated recently newer with a new request_firmware_nowait()
to allow better asynchronous firmware uploading. This was added as of the 2.6.33
kernel. The firmware_class module has been backported into a new module called
compat_firmware_class. A separate module has been defined instead of a direct
replacement for firmware_class since your system may have old drivers which use
the old request_firmware_nowait() and would bust if they used the new
request_firmware_nowait(). The compat_firmware_class module registers its own
sysfs subsystem and as such also gets udev events sent through a separate
subsystem. Because of this a new udev rules file is required and provided.

compat-wireless.git
-------------------

Anything that is not general kernel compatibility but instead specific to 802.11
or bluetooth goes into compat-wireless.git. After you've cloned all three trees,
linux-next.git, compat.git and compat-wireless.git you need to change into the
compat-wireless directory and tell compat-wireless where you linux-next and
compat.git trees are. You do this with environment variables GIT_TREE and
GIT_COMPAT_TREE. You can do for example:

export GIT_TREE=/home/user/wireless-testing/
export GIT_COMPAT_TREE=/home/users/compat.git/

Then you can update your local sources based on these linux-next.git and
compat.git trees:

scripts/admin-clean.sh   - Cleans the compat-wireless-2.6 tree
scripts/admin-update.sh  - Updates compat-wireless-2.6 with your git tree
scripts/admin-refresh.sh - Does the above two

Adding new drivers
------------------

Most new drivers are enabled for compilation. If see a driver you would like
enabled try it into the mix, test them and if they work enable them and send
the respective patches.

Sending patches
---------------

Remember there are three trees. linux-next itself is a conglomeration of kernel
git trees itself, so patches for linux-next.git should be sent to each
respective subsystem for which the patches are targeted for. So for example for
802.11 you will want to send them to John Linville and cc linux-wireless, for
further guidelines on this see the Submitting Patches guidelines for 802.11.
http://wireless.kernel.org/en/developers/Documentation/SubmittingPatches
As another example, for bluetooth you will want to send them to Marcel
Holtmann and cc the linux-bluetooth mailing list. If your patch touches on
others areas of the kernel refer to the MAINTAINERS file on the kernel.

For compat.git and compat-wireless.git please send patches against to:

To: Luis R. Rodriguez <mcgrof@kernel.org>
CC: linux-wireless@vger.kernel.org, linux-bluetooth@vger.kernel.org
Subject: [PATCH] compat-2.6: fix foo

For patches for compat.git please use a subject like the following:

Subject: [PATCH] compat: fix foo

For compat-wireless.git please use a subject like the following:

Subject: [PATCH] compat-wireless: fix foo

Patches are preferred sent with a clear commit log entry, if unfamiliar with
how to send patches please refer to
http://wireless.kernel.org/en/developers/Documentation/git-guide.


TODO
-----
 * Dialog (make menuconfig) option for this package
 * Compatibility work for 2.6.18 --> 2.6.24