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)
* put ACX100/ACX111/TNETW1100/TNETW1130/TNETW1230 strings on project page
  /homepage once the driver has full support...
* driver really endianness-clean, e.g. for Mac use? Use cpu_to_leXX, leXX_to_cpu, should be working currently, 040727 [AM]
* unify function names to acx_this_is_a_function(), acx100_...(), acx111_...()
* 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
- 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
- check all alloc() type functions for proper after-use of free() type functions
- per-card debug setting? (using priv->debug, needs to check priv NULL though)
  Not really worth it...
- real init script syntax (add init-usable script to scripts/)
- average transfer rates in README: our driver vs. Windows standard driver
- completely overhaul README, split up properly
- 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

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!!
* 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
* acx100_reset_dev enables IRQs, but IRQ handler not available yet!!!
* /proc files won't get removed after card eject, only after driver unload!
+ 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
- when Tx is broken (no reception of peer),
  then it's possible to reactivate it using ACX100_CMD_ENABLE_TX and ENABLE_RX!!
  Does it happen in case of lots of traffic?
  Does reset work using other settings, too?
  Not possible using SET_RXCONFIG, GETSET_ANTENNA, GETSET_SENSITIVITY,
  GETSET_TXPOWER, GETSET_ED_THRESH, GETSET_CCA, GETSET_POWER_80211,
  GETSET_RETRY, GETSET_REG_DOMAIN, GETSET_WEP
  Maybe Tx disable is an overheating protection? It happens much more often with
  my *builtin* mini-PCI card... In this case we really shouldn't do anything about it in order to not destroy hardware... :-\
- 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]
- see Bug reports

ACX100 TODO ITEMS:

ACX100 USB TODO ITEMS:
+ ACX100 USB 2.6.x
- ACX100 USB implement Tx power setting (via I/O register access via firmware)
- ACX100 USB scan not working? (chip_type??)
- ACX100 USB no on-the-fly change of bitrate??
- stabilize ACX100 USB (DHCP etc.)
- crash on USB unload
- ACX100 USB endianness
- acx100usb_dump_bytes merge with acx100_dump_bytes
- merge USB structs with standard ACX100 structs

ACX111 TODO ITEMS:
* Tx descriptor is 4 bytes bigger than ACX100, but we don't account for
  it in all cases!!!!!!!!
* fix (broken?) rx_config setting
- find out why access to phy regs fails

COMMON TODO ITEMS:
* calibrate link quality scaling to display more useful values for kwavecontrol/iwconfig
* use -pedantic -Werror!
* Ad-Hoc "Master" not working? (Beacon packets??)
* finish ACX111 (TNETW1x30) support
* more verbose Info IRQ
* Working implementation of "ifconfig wlan0 hw ether 112233445566". Partially
  working, exact cause for Tx errors with different MAC unknown, 040413 [AM]
+ support kwavecontrol (new FIXED release after kwavecontrol 0.3 finally out?)
+ 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]
+ full AMD64, PPC support (PPC should be finished now)
- merge ACX100 USB support (acx100_usb.c) into main code somehow (many ioctl or /proc related things missing for USB)
- per-peer auto rate support (base work done by Denis Vlasenko already)
- rtnl_lock/unlock??
- implement 802.11b power save mode
- join generic Linux 802.11 stack (Jeff Garzik)
- WEP flag in assoc_req ok??
- split into README / INSTALL
- implement our own log ring buffer (to prevent having to write to system logs)
- 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
- do we need MII support? (SIOCETHTOOL / SIOCGMIIREG / SIOCDEVPRIVATE?)
+ Tx auto rate, crude first implementation done, 040413 [AM]
- auto power adjustment "iwconfig txpower 20 auto"
- implement packet fragmentation
+ 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 (PMD: I made it blink with range**)
+ 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 (should be gathered from statistics, probably not avail 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
	   [AM]: hmm, not so sure about that...
- add driver to kernel, using generic 802.11 stack to be created
- 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
