1 2008-02-10 Matteo Croce <rootkit85@users.sf.net>
2 * Makefile: add support for out-of-kernel module compilation.
3 * Dropped support for kernel versions older than 2.6.19.
4 * Small code refactoring and cleanup changes.
6 2008-01-12 Matteo Croce <rootkit85@users.sf.net>
8 * Added VLYNQ support. This allows the driver to support TNETW1130 and
9 TNETW1350 devices on ar7-based routers. The chipsets can apparently
10 work with either PCI (miniPCI) or VLYNQ, but the boards containing
11 them usually only implement VLYNQ.
12 See http://acx100.sourceforge.net/wiki/VLYNQ for further information.
13 Changes contributed from the openwrt project.
15 2007-10-03 Matteo Croce <rootkit85@users.sf.net>
16 * Added some endiannes-related functions. Changes contributed from the
18 * Disabled the power management on PCI devices through the CONFIG_PM
21 2007-06-10 Matteo Croce <rootkit85@users.sf.net>
22 * Added support for the 2.6.22 kernel.
25 * Andreas Mohr <andi@lisas.de>
26 - cope with *tons* of Linux kernel API changes (via added version checks):
27 - linux/utsrelease.h required in 2.6.18
28 - linux/config.h include removal in 2.6.19
29 - pt_regs interrupt handler arg removal in 2.6.19
30 - INIT_WORK() change in 2.6.20-rc1-git1
31 - "ESSID last char missing" API change in WE-21
32 If anything fails to work for a real non-prerelease mainline kernel version
33 (supported ones, that is: >= 2.6.10), then please yell immediately!
34 Those people *REALLY* want me to concentrate on getting this stuff ready for
36 - MAC address change fix (contributed by Carlos MartÃn Nieto/Luis Padilla)
37 - fix iwlist wlan0 scan output (updated wrong pointer variable --> only one
38 single rate value listed, doh!)
39 - fix buggy hidden ESSID handling (didn't cover all variants in all places)
40 - corrected(?) duration/sequence values in assoc steps handling
41 - use ioremap_nocache() instead of ioremap() (safer)
42 - add another TNETW1450 USB ID
43 - FIX buggy "correction" of medium busy percentage log message
44 - small /proc/driver/acx_wlan0_diag addition
45 - much more verbose firmware image query log message
46 - updated format of main hardware status log message
47 - slightly enhanced Reason Code log messages
51 * Sync with acxsm 0.4.9
52 - Moved some #includes (were sitting in the middle of the file)
53 - from Andreas Mohr: ioremap -> ioremap_nocache,
54 more descriptive error message on firmware upload failure
58 Fixed Kconfig CONFIG_ACX_MAC80211_* in common.c and acx_struct.h
62 Moved GPL license to README
65 * Jeff Williams <jeff@wdwconsulting.net>
66 Added DeviceScape 80211 stack support to PCI
67 Works with wpa_supplicant and hostapd
68 Removed excess homegrown/linux-wlan 80211 stack
71 * Fix warnings about packed structs and printf format mismatches.
72 Fix "implicit declaration of function dma_free_coherent" warning.
75 * Carlos Martin <carlos@cmartin.tk>
76 - Fix breakage of "Get rid of circular list of adev's"
77 - Remove .owner = THIS_MODULE
80 * Get rid of circular list of adev's
83 * Register driver device ids to usb device table
86 * Andreas Mohr <andi@rhlx01.fht-esslingen.de>
87 - implement much more flexible firmware statistics parsing
88 (for /proc/driver/acx_wlanX_diag)
89 This has the nice effect that we now get output for both the older
90 TNETW1100 USB and TNETW1450.
91 Since firmware statistics information has non-stable layout depending on
92 firmware version, please report if you suspect any parsing mismatch!
93 This improved version now uses 2kB more driver space, unfortunately.
94 - use "% 8" modulo instead of more complicated "% 5" calculation
97 * Andreas Mohr <andim2@users.sourceforge.net>
98 - add initial support for new TNETW1450 USB chip (available on the market since
99 June or so): successful firmware booting, driver initialization working up to
100 a working iwconfig. Any network traffic whatsoever NOT working yet.
101 VERY EXPERIMENTAL! (especially since TNETW1450 sometimes uses enhanced,
102 longer structs for some IEs)
103 - add a ton of different TNETW1450 USB device VID/PID combinations; it's
104 highly likely that there will be many more TNETW1450 devices in the future...
105 - add many more firmware command IEs
106 - firmware upload cleanup (rename variables to better names, unify the various
107 firmware upload implementations, ...)
108 - add FIXME comment to remind about semaphore -> mutex conversion
109 The TNETW1450 firmware image is currently called tiacx111usbcRR, with RR being
110 the currently used radio ID 0x1D ("1D"): tiacx111usbc1D.
113 * fix bug uncovered by code added in support for firmware 2.3.1.31
116 * fix breakage introduced by vda
117 * Bas Vermeulen <bvermeul@blackstar.xs4all.nl>:
118 support for firmware 2.3.1.31
121 * Andreas Mohr <andim2@users.sourceforge.net>:
122 - fix OOPS in acx_l_rxmonitor() (wrong ndev->type setting leading to memcpy
123 of negative size) by reworking monitor mode type setup and adding
124 missing sanity checks
125 - rename acx1XX_ie_powermgmt_t to more correct acx1XX_ie_powersave_t
126 - fix format string compile warnings
127 - add <linux/compiler.h> include apparently required for __iomem define
129 - rework eCPU init by replacing static msleep with faster, more intelligent
130 (hopefully) busy-wait
131 * acx_s_set_defaults slightly edited
132 * ioctls are changed to have correct prototypes
135 * Massive global replaces: priv->adev, netdev_priv->ndev2adev etc.
139 * Andreas Mohr <andim2@users.sourceforge.net>:
140 - add recommended cpu_relax() to busy-wait loops
141 - reorder struct wlandevice_t for better(??) cache use
142 - kill superfluous result variable in conv.c
143 - misc. small cleanup
144 * SEPARATE_DRIVER_INSTANCES is a 2.4ism, removed
147 * Andreas Mohr <andim2@users.sourceforge.net>:
148 - add support for configopt parsing for ACX100 EEPROM version v5
149 - only start another radio recalibration interval every 5 seconds
150 on ACX111 instead of every second
153 * drop compatibility cruft for kernels < 2.6.10
156 * From Andreas Mohr <andi@rhlx01.fht-esslingen.de>
157 - revert kzalloc change (too early, only Linux 2.6.14+ has support)
158 - add safe limit checks for probe_delay EEPROM values, log more
160 - some early parts for packet fragmentation support
161 (I already know how to do it, I think, I just need some time
162 to implement it, and I *really* need this feature here with such
163 a BROKEN 3-wall connection here...)
164 - 802.11 power save mode improvements (not usable by mere mortals yet)
165 - switch fw cmd length structs depending on whether acx100 or acx111
166 - fix log message rate limiting (as a benefit code is now faster, too)
167 - unify acx100/acx111 scanning, saving a couple hundred bytes
168 - set Ctl2_8 to 0 which it most likely should be (please report if
169 this breaks anything - but it shouldn't since it's being initialized
170 to 0 on driver init anyway...)
173 * fix scanning breakage
174 * fix cmd timeout breakage
175 * attempt to fix suspend/resume
178 * From Andreas Mohr <andim2@users.sourceforge.net>
179 - activated acx100 configoption readout, unified acx100/acx111 parsing
180 - init NULL data template, required for 802.11 power save mode
181 - return actual, valid txpower levels in range ioctl (from configoption!)
183 - fatal bug in 802.11 powersave structs
184 - some missing endianness conversions
185 - check for sane regulatory domain related settings on both SETting and GETting
186 - random optimizations making this much enhanced code *smaller* than the
188 - optimized struct layout
189 - merge acx100_s_init_packet_templates and acx111_s_init_packet_templates
190 - use kzalloc instead of kmalloc where useful (yes, this driver is Linux 2.6.x
191 only, with x rather large)
192 - avoid some sprintf() and strlen()
193 - add support for new get_wireless_stats handling (...silence deprecation
195 - add some unlikely()
196 - lower msleep() value in issue_cmd() in order to speed up card initialization
197 time (almost less than 1 second now, on P3/700!). should this lower msleep()
198 value be made init-only??
199 - disable get sensitivity ioctl for USB (unfortunately not working yet)
200 - make sure to call synchronize_irq(), (semi-)required for SMP
201 - group together some closely related functions
202 - misc cleanups/code maintenance
203 So, configoptions are now working for acx100, too, and unified, and
204 802.11 power save mode actually worked for acx100 when I tested it (large
205 delays during ping which indicate that it must be active, but I guess these
206 delays should be much reduced with a properly tuned implementation), but it's
207 not finished and thus not enabled by default.
210 * Global s/acxlog/log/
213 * timeout handling fixed for high load case
214 (patch by Andreas Mohr)
217 * acx100 active scanning must be working now, thanks to Carlos Martin
221 * acx_s_update_card_settings cosmetic change
222 (but wasn't run tested)
225 * Thanks Carlos Martin
226 * Completely serialize USB rx. Tiny speed loss,
227 but even more safe wrt reordering.
228 * A few msleeps removed
231 * we will use only 2 rx usb buffers now. No apparent speed loss,
232 eliminates usb packet reordering risk.
233 * two USB fixes for real bugs and one fix for possible leak
234 of an urb on error path. Thanks Carlos Martin <carlosmn@gmail.com>.
237 * a few small fixes accumulated over time, nothing spectacular
240 * hopefully a final touch on USB tx autorate
243 * PCI command submission made simpler
246 * Small changes mostly designed to break USB ;)
247 * Auto rate handling for USB is still not confirmed to work.
248 I need USB logs from the users.
251 * Auto rate handling for USB is implemented. Untested.
254 * first step in proper auto rate handling for USB
257 * update for 2.6.14-rc4-mm1
258 * Kconfig bug (error if ACX=y, ACX_USB=y, USB=m) fixed
259 * PARANOID_LOCKING off by default
262 * Revert 20051013 fix, we have one which actually works.
263 Thanks Jacek Jablonski <yacek87@gmail.com> for testing!
266 * trying to fix "yet another similar bug"
267 * usb fix by Carlos Martin
270 * acx_l_clean_tx_desc bug fixed - was stopping tx completely
271 at high load. (It seems there exists yet another similar bug!)
272 * "unknown IE" dump was 2 bytes too short - fixed
273 * DUP logging made less noisy
274 * another usb fix by Carlos Martin <carlosmn@gmail.com>
277 * several usb fixes by Carlos Martin <carlosmn@gmail.com> - thanks!
278 * unknown IE logging made less noisy
279 * few unknown IEs added to the growing collection
280 * version bump to 0.3.11
283 * fix bogus MTU handling, add ability to change MTU
284 * fix WLAN_DATA_MAXLEN: 2312 -> 2304
285 * version bump to 0.3.10
288 * by popular request default mode is 'managed'
289 * empty handler for EID 7 (country info) is added
290 * fix 'timer not started - iface is not up'
291 * tx[host]desc micro optimizations
292 * version bump to 0.3.9
295 * tx[host]desc ring workings brought a bit back to two-hostdesc
296 scheme. This is an attempt to fix weird WG311v2 bug.
297 I still fail to understand how same chip with same fw can
298 work for me but do not work for a WG311v2 owner. Mystery.
300 * version bump to 0.3.8
303 * variable and fields with awful names renamed
304 * a few fields dropped (they had constant values)
305 * small optimization to acx_l_clean_tx_desc()
306 * version bump to 0.3.7
309 * stop using 16 byte "private area" in txdesc - fw bug makes it unreliable
310 * better logging of DUPs
311 * version bump to 0.3.6
314 * use alloc_netdev/free_netdev/netdev_priv
315 * acx_inline.h incorporated into pci.c
316 * helper.c + helper2.c = common.c
317 * marking static functions
318 * enable IE_DOT11_CURRENT_ANTENNA for acx111
319 * version bump to 0.3.5
322 * minor fixes, 2.6.13-mm2 integration
325 * TIWLAN_DC is dead, ui32ACX[TR]xQueueStart is dead
326 * massive mucking with PCI and USB resulting in:
327 acx_pci.o + acx_usb.o = acx.o ;)
329 text data bss dec hex filename
330 116199 452 40 116691 1c7d3 acx.o
331 103435 244 20 103699 19513 acx_pci.o
332 81732 196 32 81960 14028 acx_usb.o
333 * helper.c is PCI/USB independent now. It was the last one.
334 * both modular and non-modular builds, PCI, USB, PCI+USB,
335 seem to compile successfully!
336 * version bump to 0.3.4
339 * acx_stop_queue() locking reviewed and mostly fixed
340 * 2.4isms in USB code are officially dead
341 * added debug stuff for discovering interrogate/configure IEs
342 * version bump to 0.3.3
345 * locking bug on error path fixed
346 * issue_cmd() logging made more sane
347 * issue_cmd() callers may abstain from printing issue_cmd() errors:
348 issue_cmd() itself gives enough info
349 * version bump to 0.3.2
352 * kill bogus configure() call in acx100_s_create_dma_regions()
355 * acx100_s_create_dma_regions: hopefully fixed for USB
356 (problem found with help of Carlos Martin <carlosmn@gmail.com> - thanks!)
357 * a load of cleanups:
358 * acx_s_create_tx_desc_queue -> acx_create_tx_desc_queue
360 * struct acxp80211_nullframe -> acx_template_nullframe
361 * xXBUFFERCOUNT_ACXnn -> xXBUFCNT_ACXnn
362 * xXBUFFERCOUNT_USB -> USB_xXBUFCNT: these are _unrelated_ to xXBUFCNT_ACXnn,
363 should have visibly different names
364 * TODOs added (we have a few really Pascalish/Windowish names,
365 and some misleading ones)
366 * version bump to 0.3.1
369 * finally kill warning about acx_s_activate_power_save_mode()
370 * struct acx100_ie_memconfigoption: convert pRxHostDesc to acx_ptr type
371 * massive move of device-independent code from helper.c to helper2.c
374 * dummy handler for NONERP EID (47) added
377 * driver submitted for kernel inclusion
378 * #defines renamed: CONFIG_ACX_{PCI,USB} -> ACX_{PCI,USB}
379 (needed for correct compilation of two modules from the same source)
380 * version bump to 0.3.0
382 text data bss dec hex filename
383 78242 264 8 78514 132b2 drivers/net/wireless/acx/acx_pci.o
384 60622 208 20 60850 edb2 drivers/net/wireless/acx/acx_usb.o
387 * idma.c is incorporated into helper.c
388 * lots of cosmetic work: comments, struct member shuffling,
389 etc. TIWLAN_DC and other PCI data structs are #ifdef'ed
390 to be PCI-only. A few todos added. Extra #include's removed.
391 * added sem locking debug printout code (for amd64 debug)
392 * beacon tx rate and beacon ratevector is updated according to
393 "iwconfig rate" command immediately (required mode change before).
396 * Switch to wrapper functions for dealing with "tx buffers"
397 (memory areas where we create packets for tx. For USB, it's just
398 a part of wlandevice_t, for PCI it's a DMAable buffer pointed to
400 * Completely hide nature of PCI txdescs under opaque pointer type tx_t*
401 * acx_l_ether_to_txdesc -> acx_l_ether_to_txbuf, not using knowledge
402 of PCI txdesc anymore.
403 * Massive surgery on usb.c, cutting all paths into PCI code.
404 * PCI code moved to pci.c - USB don't need these pieces anymore
405 * acx111 and acx100 txhostdesc creation unified into single function
408 * PCI code switched to single-txdesc scheme
409 * version bump to 0.2.5
412 * dev_kfree_skb -> dev_kfree_skb_any
415 * Auto rate was reset to lowest rate by scanning code
416 (AP beacons did it every tenth of a second!). Fixed.
417 * USB rx no longer uses PCI-style rx descriptor ring.
418 tx ring elimination needs 'single-descriptor' setup
419 to be developed for acx100 (patch exists for acx111).
420 * Very strange sem locking problems are reported on amd64.
421 Code which misbehaves looks fine. I do not know what's going on.
422 Workaround: turn off preemption.
425 * acx100 was failing to find out radio module #,
426 and wanted to load radio module 00. Must be fixed now.
427 * USB: more simplifications
430 * USB: simplified command submission code, removed some
431 wlandevice_t fields (now unused)
434 * USB changes: nuked global statics, simplified issue_cmd,
435 shortened wlandevice_t. Added some TODOs :)
438 * restart scan if AP is not found
439 * remove use_eth_name parameter. It was deprecated
440 * disable legacy firmware loader for 2.6. Driver printed a warning
441 about need to switch to hotplug.
442 * WARNING: new names for firmware images!
443 Driver will try to load the following images:
445 'tiacxNNNcMM' (NNN=100/111, MM=radio module ID (in uppercase hex)):
446 combined firmware for specified chipset and radio.
447 failing that, it will try to load images named
448 'tiacxNNN' (NNN=100/111): main firmware for specified chipset
449 and 'tiacxNNNrMM': corresponding radio module.
450 For example, my firmware is in file named 'tiacx111c16'.
451 Alternatively, I may remove it and use pair of files
452 'tiacx111' and 'tiacx111r16' instead.
453 USB driver: loads image named 'tiacx100usb'
454 Hint: you can keep both old and new image names (via symlinks
455 or just by copying files) if you need to run older driver.
456 * fix "Debug: sleeping function called from invalid context..." for USB
457 * ACX_{PCI,USB} -> CONFIG_ACX_{PCI,USB} in preparation to 2.6 merge
458 * version bump to 0.2.4
461 * 'Fixed' deadlock on flush_scheduled_work (need a better fix eventually)
462 * We didn't completely disable IRQs on ifdown -> "Disabling IRQ#NN"
463 on second modprobe. Fixed.
466 * removed some // comments in order to please Andreas
467 * moved a field to PCI-only part of wlandevice_t
468 * Random Version Bump (tm) to 0.2.3
472 * Basically just incorporating acx-20050722.acx100fixed.patch
473 This is a bit of a backward step, because instead of figuring out
474 why active scanning doesn't work for acx100, we just disable it.
475 acx100 owners encouraged to try to make it work
481 * added probe request config to acx100_s_init_packet_templates,
482 maybe acx100 is working now
485 * del_timer_sync() sem lockup on SMP maybe fixed
488 * lots of amd64 warnings fixed, thanks to Matan Peled <chaosite@gmail.com>
491 * {tx,rx}hostdesc->desc_phy removed (was not used)
492 * netdev->type of ARPHRD_IEEE80211_PRISM was sticking forever
493 after monitor mode. Fixed
494 * monitor mode tx is working again
495 * rate reporting added in monitor mode packet header
498 * moved PCI specific ioctls to pci.c
499 * ioctl.c is PCI/USB independent now
502 * Fixed one apparent bug (wlandevice_t had different
503 layout for PCI and USB - conv.c would die horribly)
504 * Massive code shuffling with only trivial code changes.
505 Mostly sorting out PCI/USB stuff into relevant files.
507 * helper2.c is PCI/USB independent now