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!
108 * fix breakage introduced by vda
109 * Bas Vermeulen <bvermeul@blackstar.xs4all.nl>:
110 support for firmware 2.3.1.31
113 * Andreas Mohr <andim2@users.sourceforge.net>:
114 - fix OOPS in acx_l_rxmonitor() (wrong ndev->type setting leading to memcpy
115 of negative size) by reworking monitor mode type setup and adding
116 missing sanity checks
117 - rename acx1XX_ie_powermgmt_t to more correct acx1XX_ie_powersave_t
118 - fix format string compile warnings
119 - add <linux/compiler.h> include apparently required for __iomem define
121 - rework eCPU init by replacing static msleep with faster, more intelligent
122 (hopefully) busy-wait
123 * acx_s_set_defaults slightly edited
124 * ioctls are changed to have correct prototypes
127 * Massive global replaces: priv->adev, netdev_priv->ndev2adev etc.
131 * Andreas Mohr <andim2@users.sourceforge.net>:
132 - add recommended cpu_relax() to busy-wait loops
133 - reorder struct wlandevice_t for better(??) cache use
134 - kill superfluous result variable in conv.c
135 - misc. small cleanup
136 * SEPARATE_DRIVER_INSTANCES is a 2.4ism, removed
139 * Andreas Mohr <andim2@users.sourceforge.net>:
140 - add support for configopt parsing for ACX100 EEPROM version v5
141 - only start another radio recalibration interval every 5 seconds
142 on ACX111 instead of every second
145 * drop compatibility cruft for kernels < 2.6.10
148 * From Andreas Mohr <andi@rhlx01.fht-esslingen.de>
149 - revert kzalloc change (too early, only Linux 2.6.14+ has support)
150 - add safe limit checks for probe_delay EEPROM values, log more
152 - some early parts for packet fragmentation support
153 (I already know how to do it, I think, I just need some time
154 to implement it, and I *really* need this feature here with such
155 a BROKEN 3-wall connection here...)
156 - 802.11 power save mode improvements (not usable by mere mortals yet)
157 - switch fw cmd length structs depending on whether acx100 or acx111
158 - fix log message rate limiting (as a benefit code is now faster, too)
159 - unify acx100/acx111 scanning, saving a couple hundred bytes
160 - set Ctl2_8 to 0 which it most likely should be (please report if
161 this breaks anything - but it shouldn't since it's being initialized
162 to 0 on driver init anyway...)
165 * fix scanning breakage
166 * fix cmd timeout breakage
167 * attempt to fix suspend/resume
170 * From Andreas Mohr <andim2@users.sourceforge.net>
171 - activated acx100 configoption readout, unified acx100/acx111 parsing
172 - init NULL data template, required for 802.11 power save mode
173 - return actual, valid txpower levels in range ioctl (from configoption!)
175 - fatal bug in 802.11 powersave structs
176 - some missing endianness conversions
177 - check for sane regulatory domain related settings on both SETting and GETting
178 - random optimizations making this much enhanced code *smaller* than the
180 - optimized struct layout
181 - merge acx100_s_init_packet_templates and acx111_s_init_packet_templates
182 - use kzalloc instead of kmalloc where useful (yes, this driver is Linux 2.6.x
183 only, with x rather large)
184 - avoid some sprintf() and strlen()
185 - add support for new get_wireless_stats handling (...silence deprecation
187 - add some unlikely()
188 - lower msleep() value in issue_cmd() in order to speed up card initialization
189 time (almost less than 1 second now, on P3/700!). should this lower msleep()
190 value be made init-only??
191 - disable get sensitivity ioctl for USB (unfortunately not working yet)
192 - make sure to call synchronize_irq(), (semi-)required for SMP
193 - group together some closely related functions
194 - misc cleanups/code maintenance
195 So, configoptions are now working for acx100, too, and unified, and
196 802.11 power save mode actually worked for acx100 when I tested it (large
197 delays during ping which indicate that it must be active, but I guess these
198 delays should be much reduced with a properly tuned implementation), but it's
199 not finished and thus not enabled by default.
202 * Global s/acxlog/log/
205 * timeout handling fixed for high load case
206 (patch by Andreas Mohr)
209 * acx100 active scanning must be working now, thanks to Carlos Martin
213 * acx_s_update_card_settings cosmetic change
214 (but wasn't run tested)
217 * Thanks Carlos Martin
218 * Completely serialize USB rx. Tiny speed loss,
219 but even more safe wrt reordering.
220 * A few msleeps removed
223 * we will use only 2 rx usb buffers now. No apparent speed loss,
224 eliminates usb packet reordering risk.
225 * two USB fixes for real bugs and one fix for possible leak
226 of an urb on error path. Thanks Carlos Martin <carlosmn@gmail.com>.
229 * a few small fixes accumulated over time, nothing spectacular
232 * hopefully a final touch on USB tx autorate
235 * PCI command submission made simpler
238 * Small changes mostly designed to break USB ;)
239 * Auto rate handling for USB is still not confirmed to work.
240 I need USB logs from the users.
243 * Auto rate handling for USB is implemented. Untested.
246 * first step in proper auto rate handling for USB
249 * update for 2.6.14-rc4-mm1
250 * Kconfig bug (error if ACX=y, ACX_USB=y, USB=m) fixed
251 * PARANOID_LOCKING off by default
254 * Revert 20051013 fix, we have one which actually works.
255 Thanks Jacek Jablonski <yacek87@gmail.com> for testing!
258 * trying to fix "yet another similar bug"
259 * usb fix by Carlos Martin
262 * acx_l_clean_tx_desc bug fixed - was stopping tx completely
263 at high load. (It seems there exists yet another similar bug!)
264 * "unknown IE" dump was 2 bytes too short - fixed
265 * DUP logging made less noisy
266 * another usb fix by Carlos Martin <carlosmn@gmail.com>
269 * several usb fixes by Carlos Martin <carlosmn@gmail.com> - thanks!
270 * unknown IE logging made less noisy
271 * few unknown IEs added to the growing collection
272 * version bump to 0.3.11
275 * fix bogus MTU handling, add ability to change MTU
276 * fix WLAN_DATA_MAXLEN: 2312 -> 2304
277 * version bump to 0.3.10
280 * by popular request default mode is 'managed'
281 * empty handler for EID 7 (country info) is added
282 * fix 'timer not started - iface is not up'
283 * tx[host]desc micro optimizations
284 * version bump to 0.3.9
287 * tx[host]desc ring workings brought a bit back to two-hostdesc
288 scheme. This is an attempt to fix weird WG311v2 bug.
289 I still fail to understand how same chip with same fw can
290 work for me but do not work for a WG311v2 owner. Mystery.
292 * version bump to 0.3.8
295 * variable and fields with awful names renamed
296 * a few fields dropped (they had constant values)
297 * small optimization to acx_l_clean_tx_desc()
298 * version bump to 0.3.7
301 * stop using 16 byte "private area" in txdesc - fw bug makes it unreliable
302 * better logging of DUPs
303 * version bump to 0.3.6
306 * use alloc_netdev/free_netdev/netdev_priv
307 * acx_inline.h incorporated into pci.c
308 * helper.c + helper2.c = common.c
309 * marking static functions
310 * enable IE_DOT11_CURRENT_ANTENNA for acx111
311 * version bump to 0.3.5
314 * minor fixes, 2.6.13-mm2 integration
317 * TIWLAN_DC is dead, ui32ACX[TR]xQueueStart is dead
318 * massive mucking with PCI and USB resulting in:
319 acx_pci.o + acx_usb.o = acx.o ;)
321 text data bss dec hex filename
322 116199 452 40 116691 1c7d3 acx.o
323 103435 244 20 103699 19513 acx_pci.o
324 81732 196 32 81960 14028 acx_usb.o
325 * helper.c is PCI/USB independent now. It was the last one.
326 * both modular and non-modular builds, PCI, USB, PCI+USB,
327 seem to compile successfully!
328 * version bump to 0.3.4
331 * acx_stop_queue() locking reviewed and mostly fixed
332 * 2.4isms in USB code are officially dead
333 * added debug stuff for discovering interrogate/configure IEs
334 * version bump to 0.3.3
337 * locking bug on error path fixed
338 * issue_cmd() logging made more sane
339 * issue_cmd() callers may abstain from printing issue_cmd() errors:
340 issue_cmd() itself gives enough info
341 * version bump to 0.3.2
344 * kill bogus configure() call in acx100_s_create_dma_regions()
347 * acx100_s_create_dma_regions: hopefully fixed for USB
348 (problem found with help of Carlos Martin <carlosmn@gmail.com> - thanks!)
349 * a load of cleanups:
350 * acx_s_create_tx_desc_queue -> acx_create_tx_desc_queue
352 * struct acxp80211_nullframe -> acx_template_nullframe
353 * xXBUFFERCOUNT_ACXnn -> xXBUFCNT_ACXnn
354 * xXBUFFERCOUNT_USB -> USB_xXBUFCNT: these are _unrelated_ to xXBUFCNT_ACXnn,
355 should have visibly different names
356 * TODOs added (we have a few really Pascalish/Windowish names,
357 and some misleading ones)
358 * version bump to 0.3.1
361 * finally kill warning about acx_s_activate_power_save_mode()
362 * struct acx100_ie_memconfigoption: convert pRxHostDesc to acx_ptr type
363 * massive move of device-independent code from helper.c to helper2.c
366 * dummy handler for NONERP EID (47) added
369 * driver submitted for kernel inclusion
370 * #defines renamed: CONFIG_ACX_{PCI,USB} -> ACX_{PCI,USB}
371 (needed for correct compilation of two modules from the same source)
372 * version bump to 0.3.0
374 text data bss dec hex filename
375 78242 264 8 78514 132b2 drivers/net/wireless/acx/acx_pci.o
376 60622 208 20 60850 edb2 drivers/net/wireless/acx/acx_usb.o
379 * idma.c is incorporated into helper.c
380 * lots of cosmetic work: comments, struct member shuffling,
381 etc. TIWLAN_DC and other PCI data structs are #ifdef'ed
382 to be PCI-only. A few todos added. Extra #include's removed.
383 * added sem locking debug printout code (for amd64 debug)
384 * beacon tx rate and beacon ratevector is updated according to
385 "iwconfig rate" command immediately (required mode change before).
388 * Switch to wrapper functions for dealing with "tx buffers"
389 (memory areas where we create packets for tx. For USB, it's just
390 a part of wlandevice_t, for PCI it's a DMAable buffer pointed to
392 * Completely hide nature of PCI txdescs under opaque pointer type tx_t*
393 * acx_l_ether_to_txdesc -> acx_l_ether_to_txbuf, not using knowledge
394 of PCI txdesc anymore.
395 * Massive surgery on usb.c, cutting all paths into PCI code.
396 * PCI code moved to pci.c - USB don't need these pieces anymore
397 * acx111 and acx100 txhostdesc creation unified into single function
400 * PCI code switched to single-txdesc scheme
401 * version bump to 0.2.5
404 * dev_kfree_skb -> dev_kfree_skb_any
407 * Auto rate was reset to lowest rate by scanning code
408 (AP beacons did it every tenth of a second!). Fixed.
409 * USB rx no longer uses PCI-style rx descriptor ring.
410 tx ring elimination needs 'single-descriptor' setup
411 to be developed for acx100 (patch exists for acx111).
412 * Very strange sem locking problems are reported on amd64.
413 Code which misbehaves looks fine. I do not know what's going on.
414 Workaround: turn off preemption.
417 * acx100 was failing to find out radio module #,
418 and wanted to load radio module 00. Must be fixed now.
419 * USB: more simplifications
422 * USB: simplified command submission code, removed some
423 wlandevice_t fields (now unused)
426 * USB changes: nuked global statics, simplified issue_cmd,
427 shortened wlandevice_t. Added some TODOs :)
430 * restart scan if AP is not found
431 * remove use_eth_name parameter. It was deprecated
432 * disable legacy firmware loader for 2.6. Driver printed a warning
433 about need to switch to hotplug.
434 * WARNING: new names for firmware images!
435 Driver will try to load the following images:
437 'tiacxNNNcMM' (NNN=100/111, MM=radio module ID (in uppercase hex)):
438 combined firmware for specified chipset and radio.
439 failing that, it will try to load images named
440 'tiacxNNN' (NNN=100/111): main firmware for specified chipset
441 and 'tiacxNNNrMM': corresponding radio module.
442 For example, my firmware is in file named 'tiacx111c16'.
443 Alternatively, I may remove it and use pair of files
444 'tiacx111' and 'tiacx111r16' instead.
445 USB driver: loads image named 'tiacx100usb'
446 Hint: you can keep both old and new image names (via symlinks
447 or just by copying files) if you need to run older driver.
448 * fix "Debug: sleeping function called from invalid context..." for USB
449 * ACX_{PCI,USB} -> CONFIG_ACX_{PCI,USB} in preparation to 2.6 merge
450 * version bump to 0.2.4
453 * 'Fixed' deadlock on flush_scheduled_work (need a better fix eventually)
454 * We didn't completely disable IRQs on ifdown -> "Disabling IRQ#NN"
455 on second modprobe. Fixed.
458 * removed some // comments in order to please Andreas
459 * moved a field to PCI-only part of wlandevice_t
460 * Random Version Bump (tm) to 0.2.3
464 * Basically just incorporating acx-20050722.acx100fixed.patch
465 This is a bit of a backward step, because instead of figuring out
466 why active scanning doesn't work for acx100, we just disable it.
467 acx100 owners encouraged to try to make it work
473 * added probe request config to acx100_s_init_packet_templates,
474 maybe acx100 is working now
477 * del_timer_sync() sem lockup on SMP maybe fixed
480 * lots of amd64 warnings fixed, thanks to Matan Peled <chaosite@gmail.com>
483 * {tx,rx}hostdesc->desc_phy removed (was not used)
484 * netdev->type of ARPHRD_IEEE80211_PRISM was sticking forever
485 after monitor mode. Fixed
486 * monitor mode tx is working again
487 * rate reporting added in monitor mode packet header
490 * moved PCI specific ioctls to pci.c
491 * ioctl.c is PCI/USB independent now
494 * Fixed one apparent bug (wlandevice_t had different
495 layout for PCI and USB - conv.c would die horribly)
496 * Massive code shuffling with only trivial code changes.
497 Mostly sorting out PCI/USB stuff into relevant files.
499 * helper2.c is PCI/USB independent now