This is the current list of ToDos, in order of importance.
legend: - means ToDo, + means partially done, * means done, ? means unknown status or problem

KWAVECONTROL (not strictly acx100, but it's related):
- fix spelling of messages
- radio levels ok?
- CPU load??
- fix i18n name references to use correct names

JANITORIAL/EASY:
* introduce define for 16bit I/O access (make sure we use 32bit I/O access as
  much as possible, but have 16bit alternative, e.g. for CompactFlash
  implementations)
* add default firmware directory (/usr/share/acx/) in case of unspecified firmware_dir
* introduce iwpriv for setting individual bits in set_mask and get_mask
(for debugging)
- add .lsm file
- AP out of range should be 44:44:44:44:44:44, not 00:00:00:00:00:00 (hmm, really?? iwevent interface seems to use 00, but wlan-ng seems to use 44; not sure)
+ automated hotplug configuration / configure module parameters / describe it!!!
- verify correct waproamd operation, partially verified, 040413 [AM]
  (although that's also an issue of fixing waproamd to behave properly)
- use test_bit, clear_bit, set_bit in acx100_update_card_settings etc.?
- Check source code using code checker:
  splint (DONE!), flawfinder, pscan, icc, smatch/valgrind, pc-lint, freshmeat
  cqual/TAU/calltree/Perfometer/Nitro Technologies Memory Checker/MemCheck Deluxe
- put ACX100/ACX111/TNETW1100/TNETW1130/TNETW1230 strings on project page
  /homepage once the driver has full support...
- check all alloc() type functions for proper after-use of free() type functions
- real init script syntax (add init-usable script to scripts/)
- driver really endianness-clean, e.g. for Mac use? Use cpu_to_leXX, leXX_to_cpu, most parts fixed, 040413 [AM]
- average transfer rates in README: our driver vs. Windows standard driver
- completely overhaul README, split up properly
- unify function names to acx100_this_is_a_function()
- in the doc/ directory, add an intro and describe chipset details and
  interesting information about it
- maybe add dbg msgs to all failure cases to spot any driver problems fast
- clean up and unify return value handling. Right now the driver seems to have
  a mess of different functions returning 0 as success, 1 as success, or some
  functions use -1 etc. pp.
- ACX100_CTL_PREAMBLE and DESC_CTL_SHORT_PREAMBLE etc. unify

BUGS:
* modprobe: page allocation failure. order:4, mo de:0x21
  in ALSA driver after multiple suspend/resume: our driver doesn't free
  DMA pages upon suspend, yet allocates new DMA pages on resume in init_mac!!
+ switching from XFree86 to console may lead to "dead card" (no IRQs possible).
  Reinit only after eject/reinsert!!!
  IRQ problem!! Does PCI card have that as well? Or only a CardBus issue?
  shutdown pcmcia-cs does NOT help!
  On some other machines this leads to irregular/unstable IRQs, ping:
  2221ms, 1221ms, 221ms, 2221ms, 1221ms, ...
  Does a warm reset of the box help to fix IRQ issue? (not tried yet)
  Does IRQ sharing cause the problem?
  http://groups.google.de/groups?threadm=3FDD4F7C.7090303%40nishanet.com.lucky.linux.kernel
  http://groups.google.de/groups?threadm=500cs7%24rqq%40bmerhc5e.bnr.ca
  http://groups.google.de/groups?q=hdparm+unmask+stuck&hl=de&lr=&ie=UTF-8&oe=UTF-8&selm=fa.f25r168.1uhcm80%40ifi.uio.no&rnum=1
  Does it also disable the card's IRQ if there hasn't been a connection already?
  Does it help to eject/reinsert the card with same driver instance still in
  memory?
  https://sourceforge.net/forum/forum.php?thread_id=1049230&forum_id=257272
  IRQ loss has been reported to also happen when switching from text mode
  to frame buffer on Linux bootup
- ERROR: attempt to set the timer before the card interface is up! Please report with a debug=0xffff log!! (not too problematic)
- TxError0x20 (hint: also happens in any case where the firmware cannot send
  any packets currently, e.g. during station scan etc.)
- Problems with different (older) firmware versions, some/many don't work:
  Why You don't mention that only new firmware (Rev. 1.9.8.b) works with
  fix13 driver. My original 1.9.3.e dont start, timer problem (this was
  mentioned inter alia http://sourceforge.net/forum/forum.php?thread_id=998196&f
orum_id=257272)
- IRQ masked on data transfer??? (mouse problems!!)
- WEP problems?? iwconfig wlan0 key on, iwconfig essid on, iwconfig enc on
  does not work the way it should. There are reports that WEP is being accepted
  by the driver after ifconfig up only??
- iwlist wlan0 scanning doesn't work on first try. Huh, works properly! 040413 [AM]
- figure out why on my Dell Inspiron 8000, the notebook refuses to suspend
  properly (immediate resume after power-off, urks!) when the ACX100 mini-PCI
  is installed
- see Bug reports

STANDARD TODO ITEMS:
* calibrate link quality scaling to display more useful values for kwavecontrol/iwconfig
* use -pedantic -Werror!
+ support kwavecontrol (new FIXED release after kwavecontrol 0.3 finally out?)
- finish ACX111 (TNETW1x30) support
+ ACX100 USB 2.6.x
+ implement standard power management, make sure ACPI states are fully working
  (suspend/resume handlers; resuming from suspend-to-ram has been reported
  to actually hang the machine!). Working quite nicely, even with
  network access after resume with all previous settings, 040421 [AM]
- implement 802.11b power save mode
- the whole driver needs proper (hardware etc.) locking. The binary driver
  didn't make use of locking at all (except for masking IRQs sometimes)
  Note: locking for packet transfer is finished
+ scan delays higher, configurable? wlandevice_t variables added, 040413 [AM]
- HostAP (Master) mode support needs to be implemented/finished properly
+ Tx auto rate, crude first implementation done, 040413 [AM]
- auto power adjustment "iwconfig txpower 20 auto"
- implement packet fragmentation
+ Working implementation of "ifconfig wlan0 hw ether 112233445566". Partially
  working, exact cause for Tx errors with different MAC unknown, 040413 [AM]
- implement #if WE_DONT_WANT_TO_REJECT_MULTICAST part correctly
- implement iwpriv to switch between percentage and estimated dBm (problematic!) display?
- abuse power LED to be an error indicator LED (via timer) in case we switched it off
- add further iwconfig/iwpriv support: channel traffic percentage indicator,
  iwspy, ...
- introduce decent device statistics like those in net_device_stats. Now only
  tx/rx packets and errors are counted. further work done, 040413 [AM]
  Rx error counters need implementation (find out flags in Rx descriptor)
- are all packets really using correct network addresses?
+ iwevent, not fully verified, 040413 [AM]
- netif_carrier_off(dev->netdev); /* disable running netdev watchdog */
- Proper session management:
  - disassociation/reassociation on suspend/resume
  - initialize link quality correctly and reset properly on connection loss
  - clean up the BSS list (bss_table) for old stations that are no longer
    valid in order to prevent hitting the limit of the registered stations list
    (by adding a "found at" timestamp and check it) or maybe reimplement
    it as a linked list
+ try to make sure the driver doesn't crash if we remove the card when active
  (hw_unavailable). more workarounds done on 040413, seems to work rather well now [AM]
- implement skb queues like in airo.c driver (hmm, does it make any sense at all? we already have an on-card ring buffer...)
- txpower phy (measure how many dBm and which level values the two
  firmware values are related to)
- upgrade driver to support 4X mode (also called "54Mbps" operation, which is
  not quite right - and of course it doesn't mean that we suddenly
  become compatible with 54Mbps 802.11g cards!). However, this would
  require a new 4X compatible firmware and a complete upgrade of the
  driver. http://www.80211-planet.com/news/article.php/2195691 mentions
  that D-Link and USR 4X implementations might be incompatible. :-((
  Well, we might want to support both versions if that is the case...
  Also, 4X support seems to be pretty much a dirty hack; but if Windows
  supports it and it's a real gain for many users, then we also ought to
  support it
- further improve firmware management. Detect embedded linux radio 
  modules, etc...
  Load firmware files more flexibly: names have to have the CoRrEcT case...
- WPA? Windows Zero Config? CCX?? What is ELP support? (DWL-520+), LEAP?
- completely analyse and comment frame handling code
- implement auto DMA transfer of packets as an alternative?
- improve currently crude 802.11 capability handling
- distribute the functions properly over various files, organize header files
  properly
  consider putting all of ihw.c and idma.c p80211conv.c into single file
	   moving acx100_helper2.c and acx80211frm.c into single file
	   acx100.c and acx100_helper.c should be in a single file
- add driver to linux-wlan-ng or airjack or ...
	maybe we can just submit it as is for kernel consideration
- make sure all structures are packed correctly!!! (it really does no good if
  we transfer wrongly aligned structs to the ACX100...)
  Note: we seem to be doing well.
- implement enable_wake function? Card cannot wake up notebook
  which is switched off anyway, right? (yep, seems it can't...)
- add a very verbose description to every driver function. I don't want to see
  an overly structured and rigid (and partially unused but space consuming!)
  description here, but instead actually useful comments that detail
  a function's purpose.
- Use ieee802_11.h from drivers/net/wireless of 2.6 and newer 2.4 kernels for
  the 802.11 defines instead of the wlan-ng p80211* headers. Hmm, we shouldn't do this as long as older 2.4.x are in very active use, and supporting both via defines wouldn't make much sense.
- grep for TODO and FIXME in the src directory
