2 e100.c: pci_dma_sync_single_for_cpu(nic->pdev, rx->dma_addr, sizeof(struct rfd), PCI_DMA_FROMDEVICE);
3 do we need to do something like above for rxhostdescs/rxbufs?
5 TODO: from Efthym <efthym@gmx.net>:
6 13:12:42 wlan0: rx: 31 DUPs in 551 packets received in 10 sec
7 13:12:48 wlan0: tx error 0x20, buf 20! (excessive Tx retries
8 13:12:48 wlan0: tx error 0x20, buf 21! (excessive Tx retries
9 13:12:48 wlan0: several excessive Tx retry errors occurred, a
10 13:12:48 wlan0: tx error 0x20, buf 22! (excessive Tx retries
11 13:12:48 wlan0: tx error 0x20, buf 23! (excessive Tx retries
12 13:12:48 wlan0: tx error 0x20, buf 24! (excessive Tx retries
13 13:12:48 wlan0: recalibrating radio
14 13:12:48 wlan0: successfully recalibrated radio
15 13:12:52 wlan0: tx error 0x20, buf 25! (excessive Tx retries
16 13:12:52 wlan0: several excessive Tx retry errors occurred, a
17 13:12:52 wlan0: tx error 0x20, buf 26! (excessive Tx retries
18 13:12:52 wlan0: tx error 0x20, buf 27! (excessive Tx retries
19 13:12:52 wlan0: tx error 0x20, buf 28! (excessive Tx retries
20 13:12:52 wlan0: tx error 0x20, buf 29! (excessive Tx retries
21 13:12:52 wlan0: several excessive Tx retry errors occurred, a
22 13:12:52 wlan0: tx error 0x20, buf 30! (excessive Tx retries
23 13:12:52 wlan0: tx error 0x20, buf 31! (excessive Tx retries
24 13:12:52 wlan0: tx error 0x20, buf 00! (excessive Tx retries
25 13:12:52 wlan0: less than 5 minutes since last radio recalibr
26 13:12:58 wlan0: tx error 0x20, buf 01! (excessive Tx retries
27 13:12:58 wlan0: several excessive Tx retry errors occurred, a
28 13:12:58 wlan0: tx error 0x20, buf 02! (excessive Tx retries
29 13:12:58 wlan0: tx error 0x20, buf 03! (excessive Tx retries
30 13:12:58 wlan0: tx error 0x20, buf 04! (excessive Tx retries
31 13:12:58 wlan0: tx error 0x20, buf 05! (excessive Tx retries
32 13:12:58 wlan0: several excessive Tx retry errors occurred, a
33 13:12:58 disabling above notification message
34 13:12:58 wlan0: tx error 0x20, buf 06! (excessive Tx retries
35 13:12:58 wlan0: tx error 0x20, buf 07!
36 13:12:58 wlan0: tx error 0x20, buf 08!
37 13:12:58 wlan0: less than 5 minutes since last radio recalibr
38 13:13:06 wlan0: tx error 0x20, buf 09!
39 13:13:06 wlan0: tx error 0x20, buf 10!
40 13:13:06 wlan0: tx error 0x20, buf 11!
41 13:13:06 wlan0: tx error 0x20, buf 12!
42 13:13:06 wlan0: tx error 0x20, buf 13!
43 13:13:06 wlan0: tx error 0x20, buf 14!
44 13:13:06 wlan0: tx error 0x20, buf 15!
45 13:13:06 wlan0: tx error 0x20, buf 16!
46 13:13:06 wlan0: less than 5 minutes since last radio recalibr
47 13:13:18 wlan0: tx error 0x20, buf 17!
48 13:13:18 wlan0: tx error 0x20, buf 18!
49 13:13:18 wlan0: tx error 0x20, buf 19!
50 13:13:18 wlan0: tx error 0x20, buf 20!
51 13:13:18 wlan0: tx error 0x20, buf 21!
52 13:13:18 wlan0: tx error 0x20, buf 22!
53 13:13:18 wlan0: tx error 0x20, buf 23!
54 13:13:18 wlan0: tx error 0x20, buf 24!
55 13:13:18 wlan0: less than 5 minutes since last radio recalibr
56 13:13:25 wlan0: tx error 0x20, buf 25!
57 13:13:25 wlan0: tx error 0x20, buf 26!
58 13:13:25 wlan0: tx error 0x20, buf 27!
59 13:13:25 wlan0: tx error 0x20, buf 28!
60 13:13:25 wlan0: tx error 0x20, buf 29!
61 13:13:25 wlan0: tx error 0x20, buf 30!
62 13:13:25 wlan0: tx error 0x20, buf 31!
63 13:13:25 wlan0: tx error 0x20, buf 00!
64 13:13:25 wlan0: less than 5 minutes since last radio recalibr
65 13:13:25 disabling above message
66 13:13:32 wlan0: tx error 0x20, buf 01!
67 13:13:32 wlan0: tx error 0x20, buf 02!
68 13:13:32 wlan0: tx error 0x20, buf 03!
69 13:13:32 wlan0: tx error 0x20, buf 04!
70 13:13:32 wlan0: tx error 0x20, buf 05!
71 13:13:32 wlan0: tx error 0x20, buf 06!
72 13:13:32 wlan0: tx error 0x20, buf 07!
73 13:13:32 wlan0: tx error 0x20, buf 08!
74 13:13:41 wlan0: tx error 0x20, buf 09!
75 13:13:41 wlan0: tx error 0x20, buf 10!
76 13:13:41 wlan0: tx error 0x20, buf 11!
77 13:13:41 wlan0: tx error 0x20, buf 12!
78 13:13:41 wlan0: tx error 0x20, buf 13!
79 13:13:41 wlan0: tx error 0x20, buf 14!
80 13:13:41 wlan0: tx error 0x20, buf 15!
81 13:13:41 wlan0: tx error 0x20, buf 16!
82 13:13:51 wlan0: tx error 0x20, buf 17!
83 13:13:51 wlan0: tx error 0x20, buf 18!
84 13:13:51 wlan0: tx error 0x20, buf 19!
85 13:13:51 wlan0: tx error 0x20, buf 20!
86 13:13:51 wlan0: tx error 0x20, buf 21!
87 13:13:51 wlan0: tx error 0x20, buf 22!
88 13:13:51 wlan0: tx error 0x20, buf 23!
89 13:13:51 wlan0: tx error 0x20, buf 24!
90 13:14:02 wlan0: tx error 0x20, buf 25!
91 13:14:02 wlan0: tx error 0x20, buf 26!
92 13:14:02 wlan0: tx error 0x20, buf 27!
93 13:14:02 wlan0: tx error 0x20, buf 28!
94 13:14:02 wlan0: tx error 0x20, buf 29!
95 13:14:02 wlan0: tx error 0x20, buf 30!
96 13:14:02 wlan0: tx error 0x20, buf 31!
97 13:14:02 wlan0: tx error 0x20, buf 00!
98 13:14:13 wlan0: tx error 0x20, buf 01!
99 13:14:13 wlan0: tx error 0x20, buf 02!
100 13:14:13 wlan0: tx error 0x20, buf 03!
101 13:14:13 wlan0: tx error 0x20, buf 04!
102 13:14:13 wlan0: tx error 0x20, buf 05!
103 13:14:13 wlan0: tx error 0x20, buf 06!
104 13:14:13 wlan0: tx error 0x20, buf 07!
105 13:14:13 wlan0: tx error 0x20, buf 08!
107 * Sync with acxsm 0.4.9
108 - Moved some #includes (were sitting in the middle of the file)
109 - from Andreas Mohr: ioremap -> ioremap_nocache,
110 more desriptive error message on firmware upload failure
114 Fixed Kconfig CONFIG_ACX_MAC80211_* in common.c and acx_struct.h
118 Moved GPL license to README
121 * Jeff Williams <jeff@wdwconsulting.net>
122 Added DeviceScape 80211 stack support to PCI
123 Works with wpa_supplicant and hostapd
124 Removed excess homegrown/linux-wlan 80211 stack
127 * Andreas Mohr <andi@lisas.de>
128 - cope with *tons* of Linux kernel API changes (via added version checks):
129 - linux/utsrelease.h required in 2.6.18
130 - linux/config.h include removal in 2.6.19
131 - pt_regs interrupt handler arg removal in 2.6.19
132 - INIT_WORK() change in 2.6.20-rc1-git1
133 - "ESSID last char missing" API change in WE-21
134 If anything fails to work for a real non-prerelease mainline kernel version
135 (supported ones, that is: >= 2.6.10), then please yell immediately!
136 Those people *REALLY* want me to concentrate on getting this stuff ready for
137 mainline, it seems...
138 - MAC address change fix (contributed by Carlos MartÃn Nieto/Luis Padilla)
139 - fix iwlist wlan0 scan output (updated wrong pointer variable --> only one single rate value listed, doh!)
140 - fix buggy hidden ESSID handling (didn't cover all variants in all places)
141 - corrected(?) duration/sequence values in assoc steps handling
142 - use ioremap_nocache() instead of ioremap() (safer)
143 - add another TNETW1450 USB ID
144 - FIX buggy "correction" of medium busy percentage log message
145 - small /proc/driver/acx_wlan0_diag addition
146 - much more verbose firmware image query log message
147 - updated format of main hardware status log message
148 - slightly enhanced Reason Code log messages
152 * Fix warnings about packed structs and printf format mismatches.
153 Fix "implicit declaration of function dma_free_coherent" warning.
156 * Carlos Martin <carlos@cmartin.tk>
157 - Fix breakage of "Get rid of circular list of adev's"
158 - Remove .owner = THIS_MODULE
161 * Get rid of circular list of adev's
164 * Register driver device ids to usb device table
167 * Andreas Mohr <andi@rhlx01.fht-esslingen.de>
168 - implement much more flexible firmware statistics parsing
169 (for /proc/driver/acx_wlanX_diag)
170 This has the nice effect that we now get output for both the older
171 TNETW1100 USB and TNETW1450.
172 Since firmware statistics information has non-stable layout depending on
173 firmware version, please report if you suspect any parsing mismatch!
174 This improved version now uses 2kB more driver space, unfortunately.
175 - use "% 8" modulo instead of more complicated "% 5" calculation
178 * Andreas Mohr <andim2@users.sourceforge.net>
179 - add initial support for new TNETW1450 USB chip (available on the market since
180 June or so): successful firmware booting, driver initialization working up to
181 a working iwconfig. Any network traffic whatsoever NOT working yet.
182 VERY EXPERIMENTAL! (especially since TNETW1450 sometimes uses enhanced,
183 longer structs for some IEs)
184 - add a ton of different TNETW1450 USB device VID/PID combinations; it's
185 highly likely that there will be many more TNETW1450 devices in the future...
186 - add many more firmware command IEs
187 - firmware upload cleanup (rename variables to better names, unify the various
188 firmware upload implementations, ...)
189 - add FIXME comment to remind about semaphore -> mutex conversion
190 The TNETW1450 firmware image is currently called tiacx111usbcRR, with RR being
191 the currently used radio ID 0x1D ("1D"): tiacx111usbc1D.
194 * fix bug uncovered by code added in support for firmware 2.3.1.31
197 * fix breakage introduced by vda
198 * Bas Vermeulen <bvermeul@blackstar.xs4all.nl>:
199 support for firmware 2.3.1.31
202 * Andreas Mohr <andim2@users.sourceforge.net>:
203 - fix OOPS in acx_l_rxmonitor() (wrong ndev->type setting leading to memcpy
204 of negative size) by reworking monitor mode type setup and adding
205 missing sanity checks
206 - rename acx1XX_ie_powermgmt_t to more correct acx1XX_ie_powersave_t
207 - fix format string compile warnings
208 - add <linux/compiler.h> include apparently required for __iomem define
210 - rework eCPU init by replacing static msleep with faster, more intelligent
211 (hopefully) busy-wait
212 * acx_s_set_defaults slightly edited
213 * ioctls are changed to have correct prototypes
216 * Massive global replaces: priv->adev, netdev_priv->ndev2adev etc.
220 * Andreas Mohr <andim2@users.sourceforge.net>:
221 - add recommended cpu_relax() to busy-wait loops
222 - reorder struct wlandevice_t for better(??) cache use
223 - kill superfluous result variable in conv.c
224 - misc. small cleanup
225 * SEPARATE_DRIVER_INSTANCES is a 2.4ism, removed
228 * Andreas Mohr <andim2@users.sourceforge.net>:
229 - add support for configopt parsing for ACX100 EEPROM version v5
230 - only start another radio recalibration interval every 5 seconds
231 on ACX111 instead of every second
234 * drop compatibility cruft for kernels < 2.6.10
237 * From Andreas Mohr <andi@rhlx01.fht-esslingen.de>
238 - revert kzalloc change (too early, only Linux 2.6.14+ has support)
239 - add safe limit checks for probe_delay EEPROM values, log more
241 - some early parts for packet fragmentation support
242 (I already know how to do it, I think, I just need some time
243 to implement it, and I *really* need this feature here with such
244 a BROKEN 3-wall connection here...)
245 - 802.11 power save mode improvements (not usable by mere mortals yet)
246 - switch fw cmd length structs depending on whether acx100 or acx111
247 - fix log message rate limiting (as a benefit code is now faster, too)
248 - unify acx100/acx111 scanning, saving a couple hundred bytes
249 - set Ctl2_8 to 0 which it most likely should be (please report if
250 this breaks anything - but it shouldn't since it's being initialized
251 to 0 on driver init anyway...)
254 * fix scanning breakage
255 * fix cmd timeout breakage
256 * attempt to fix suspend/resume
259 * From Andreas Mohr <andim2@users.sourceforge.net>
260 - activated acx100 configoption readout, unified acx100/acx111 parsing
261 - init NULL data template, required for 802.11 power save mode
262 - return actual, valid txpower levels in range ioctl (from configoption!)
264 - fatal bug in 802.11 powersave structs
265 - some missing endianness conversions
266 - check for sane regulatory domain related settings on both SETting and GETting
267 - random optimizations making this much enhanced code *smaller* than the
269 - optimized struct layout
270 - merge acx100_s_init_packet_templates and acx111_s_init_packet_templates
271 - use kzalloc instead of kmalloc where useful (yes, this driver is Linux 2.6.x
272 only, with x rather large)
273 - avoid some sprintf() and strlen()
274 - add support for new get_wireless_stats handling (...silence deprecation
276 - add some unlikely()
277 - lower msleep() value in issue_cmd() in order to speed up card initialization
278 time (almost less than 1 second now, on P3/700!). should this lower msleep()
279 value be made init-only??
280 - disable get sensitivity ioctl for USB (unfortunately not working yet)
281 - make sure to call synchronize_irq(), (semi-)required for SMP
282 - group together some closely related functions
283 - misc cleanups/code maintenance
284 So, configoptions are now working for acx100, too, and unified, and
285 802.11 power save mode actually worked for acx100 when I tested it (large
286 delays during ping which indicate that it must be active, but I guess these
287 delays should be much reduced with a properly tuned implementation), but it's
288 not finished and thus not enabled by default.
291 * Global s/acxlog/log/
294 * timeout handling fixed for high load case
295 (patch by Andreas Mohr)
298 * acx100 active scanning must be working now, thanks to Carlos Martin
302 * acx_s_update_card_settings cosmetic change
303 (but wasn't run tested)
306 * Thanks Carlos Martin
307 * Completely serialize USB rx. Tiny speed loss,
308 but even more safe wrt reordering.
309 * A few msleeps removed
312 * we will use only 2 rx usb buffers now. No apparent speed loss,
313 eliminates usb packet reordering risk.
314 * two USB fixes for real bugs and one fix for possible leak
315 of an urb on error path. Thanks Carlos Martin <carlosmn@gmail.com>.
318 * a few small fixes accumulated over time, nothing spectacular
321 * hopefully a final touch on USB tx autorate
324 * PCI command submission made simpler
327 * Small changes mostly designed to break USB ;)
328 * Auto rate handling for USB is still not confirmed to work.
329 I need USB logs from the users.
332 * Auto rate handling for USB is implemented. Untested.
335 * first step in proper auto rate handling for USB
338 * update for 2.6.14-rc4-mm1
339 * Kconfig bug (error if ACX=y, ACX_USB=y, USB=m) fixed
340 * PARANOID_LOCKING off by default
343 * Revert 20051013 fix, we have one which actually works.
344 Thanks Jacek Jablonski <yacek87@gmail.com> for testing!
347 * trying to fix "yet another similar bug"
348 * usb fix by Carlos Martin
351 * acx_l_clean_tx_desc bug fixed - was stopping tx completely
352 at high load. (It seems there exists yet another similar bug!)
353 * "unknown IE" dump was 2 bytes too short - fixed
354 * DUP logging made less noisy
355 * another usb fix by Carlos Martin <carlosmn@gmail.com>
358 * several usb fixes by Carlos Martin <carlosmn@gmail.com> - thanks!
359 * unknown IE logging made less noisy
360 * few unknown IEs added to the growing collection
361 * version bump to 0.3.11
364 * fix bogus MTU handling, add ability to change MTU
365 * fix WLAN_DATA_MAXLEN: 2312 -> 2304
366 * version bump to 0.3.10
369 * by popular request default mode is 'managed'
370 * empty handler for EID 7 (country info) is added
371 * fix 'timer not started - iface is not up'
372 * tx[host]desc micro optimizations
373 * version bump to 0.3.9
376 * tx[host]desc ring workings brought a bit back to two-hostdesc
377 scheme. This is an attempt to fix weird WG311v2 bug.
378 I still fail to understand how same chip with same fw can
379 work for me but do not work for a WG311v2 owner. Mystery.
381 * version bump to 0.3.8
384 * variable and fields with awful names renamed
385 * a few fields dropped (they had constant values)
386 * small optimization to acx_l_clean_tx_desc()
387 * version bump to 0.3.7
390 * stop using 16 byte "private area" in txdesc - fw bug makes it unreliable
391 * better logging of DUPs
392 * version bump to 0.3.6
395 * use alloc_netdev/free_netdev/netdev_priv
396 * acx_inline.h incorporated into pci.c
397 * helper.c + helper2.c = common.c
398 * marking static functions
399 * enable IE_DOT11_CURRENT_ANTENNA for acx111
400 * version bump to 0.3.5
403 * minor fixes, 2.6.13-mm2 integration
406 * TIWLAN_DC is dead, ui32ACX[TR]xQueueStart is dead
407 * massive mucking with PCI and USB resulting in:
408 acx_pci.o + acx_usb.o = acx.o ;)
410 text data bss dec hex filename
411 116199 452 40 116691 1c7d3 acx.o
412 103435 244 20 103699 19513 acx_pci.o
413 81732 196 32 81960 14028 acx_usb.o
414 * helper.c is PCI/USB independent now. It was the last one.
415 * both modular and non-modular builds, PCI, USB, PCI+USB,
416 seem to compile successfully!
417 * version bump to 0.3.4
420 * acx_stop_queue() locking reviewed and mostly fixed
421 * 2.4isms in USB code are officially dead
422 * added debug stuff for discovering interrogate/configure IEs
423 * version bump to 0.3.3
426 * locking bug on error path fixed
427 * issue_cmd() logging made more sane
428 * issue_cmd() callers may abstain from printing issue_cmd() errors:
429 issue_cmd() itself gives enough info
430 * version bump to 0.3.2
433 * kill bogus configure() call in acx100_s_create_dma_regions()
436 * acx100_s_create_dma_regions: hopefully fixed for USB
437 (problem found with help of Carlos Martin <carlosmn@gmail.com> - thanks!)
438 * a load of cleanups:
439 * acx_s_create_tx_desc_queue -> acx_create_tx_desc_queue
441 * struct acxp80211_nullframe -> acx_template_nullframe
442 * xXBUFFERCOUNT_ACXnn -> xXBUFCNT_ACXnn
443 * xXBUFFERCOUNT_USB -> USB_xXBUFCNT: these are _unrelated_ to xXBUFCNT_ACXnn,
444 should have visibly different names
445 * TODOs added (we have a few really Pascalish/Windowish names,
446 and some misleading ones)
447 * version bump to 0.3.1
450 * finally kill warning about acx_s_activate_power_save_mode()
451 * struct acx100_ie_memconfigoption: convert pRxHostDesc to acx_ptr type
452 * massive move of device-independent code from helper.c to helper2.c
455 * dummy handler for NONERP EID (47) added
458 * driver submitted for kernel inclusion
459 * #defines renamed: CONFIG_ACX_{PCI,USB} -> ACX_{PCI,USB}
460 (needed for correct compilation of two modules from the same source)
461 * version bump to 0.3.0
463 text data bss dec hex filename
464 78242 264 8 78514 132b2 drivers/net/wireless/acx/acx_pci.o
465 60622 208 20 60850 edb2 drivers/net/wireless/acx/acx_usb.o
468 * idma.c is incorporated into helper.c
469 * lots of cosmetic work: comments, struct member shuffling,
470 etc. TIWLAN_DC and other PCI data structs are #ifdef'ed
471 to be PCI-only. A few todos added. Extra #include's removed.
472 * added sem locking debug printout code (for amd64 debug)
473 * beacon tx rate and beacon ratevector is updated according to
474 "iwconfig rate" command immediately (required mode change before).
477 * Switch to wrapper functions for dealing with "tx buffers"
478 (memory areas where we create packets for tx. For USB, it's just
479 a part of wlandevice_t, for PCI it's a DMAable buffer pointed to
481 * Completely hide nature of PCI txdescs under opaque pointer type tx_t*
482 * acx_l_ether_to_txdesc -> acx_l_ether_to_txbuf, not using knowledge
483 of PCI txdesc anymore.
484 * Massive surgery on usb.c, cutting all paths into PCI code.
485 * PCI code moved to pci.c - USB don't need these pieces anymore
486 * acx111 and acx100 txhostdesc creation unified into single function
489 * PCI code switched to single-txdesc scheme
490 * version bump to 0.2.5
493 * dev_kfree_skb -> dev_kfree_skb_any
496 * Auto rate was reset to lowest rate by scanning code
497 (AP beacons did it every tenth of a second!). Fixed.
498 * USB rx no longer uses PCI-style rx descriptor ring.
499 tx ring elimination needs 'single-descriptor' setup
500 to be developed for acx100 (patch exists for acx111).
501 * Very strange sem locking problems are reported on amd64.
502 Code which misbehaves looks fine. I do not know what's going on.
503 Workaround: turn off preemption.
506 * acx100 was failing to find out radio module #,
507 and wanted to load radio module 00. Must be fixed now.
508 * USB: more simplifications
511 * USB: simplified command submission code, removed some
512 wlandevice_t fields (now unused)
515 * USB changes: nuked global statics, simplified issue_cmd,
516 shortened wlandevice_t. Added some TODOs :)
519 * restart scan if AP is not found
520 * remove use_eth_name parameter. It was deprecated
521 * disable legacy firmware loader for 2.6. Driver printed a warning
522 about need to switch to hotplug.
523 * WARNING: new names for firmware images!
524 Driver will try to load the following images:
526 'tiacxNNNcMM' (NNN=100/111, MM=radio module ID (in uppercase hex)):
527 combined firmware for specified chipset and radio.
528 failing that, it will try to load images named
529 'tiacxNNN' (NNN=100/111): main firmware for specified chipset
530 and 'tiacxNNNrMM': corresponding radio module.
531 For example, my firmware is in file named 'tiacx111c16'.
532 Alternatively, I may remove it and use pair of files
533 'tiacx111' and 'tiacx111r16' instead.
534 USB driver: loads image named 'tiacx100usb'
535 Hint: you can keep both old and new image names (via symlinks
536 or just by copying files) if you need to run older driver.
537 * fix "Debug: sleeping function called from invalid context..." for USB
538 * ACX_{PCI,USB} -> CONFIG_ACX_{PCI,USB} in preparation to 2.6 merge
539 * version bump to 0.2.4
542 * 'Fixed' deadlock on flush_scheduled_work (need a better fix eventually)
543 * We didn't completely disable IRQs on ifdown -> "Disabling IRQ#NN"
544 on second modprobe. Fixed.
547 * removed some // comments in order to please Andreas
548 * moved a field to PCI-only part of wlandevice_t
549 * Random Version Bump (tm) to 0.2.3
553 * Basically just incorporating acx-20050722.acx100fixed.patch
554 This is a bit of a backward step, because instead of figuring out
555 why active scanning doesn't work for acx100, we just disable it.
556 acx100 owners encouraged to try to make it work
562 * added probe request config to acx100_s_init_packet_templates,
563 maybe acx100 is working now
566 * del_timer_sync() sem lockup on SMP maybe fixed
569 * lots of amd64 warnings fixed, thanks to Matan Peled <chaosite@gmail.com>
572 * {tx,rx}hostdesc->desc_phy removed (was not used)
573 * netdev->type of ARPHRD_IEEE80211_PRISM was sticking forever
574 after monitor mode. Fixed
575 * monitor mode tx is working again
576 * rate reporting added in monitor mode packet header
579 * moved PCI specific ioctls to pci.c
580 * ioctl.c is PCI/USB independent now
583 * Fixed one apparent bug (wlandevice_t had different
584 layout for PCI and USB - conv.c would die horribly)
585 * Massive code shuffling with only trivial code changes.
586 Mostly sorting out PCI/USB stuff into relevant files.
588 * helper2.c is PCI/USB independent now