0.15 - 15 Aug 2005

- Update for the new PCMCIA API in the kernel.
- Add support for dBm quality on Intersil firmware 1.3.1 and newer.
- Use a better formula for signal/noise for other firmwares.
- Disallow compilation for kernels with Orinoco driver already enabled.

0.15rc4 - 15 Dec 2005

* Fix compilation for Ubuntu kernels - get KERNELRELEASE from
  linux/version.h rather than from the kernel makefiles.
* Fixes for serious bitrot in airport and orinoco_nortel.
* Allow writing odd number of bytes to BAP.
* Don't pad transmitted packets.
* Simplified transmission padding code.
* Annotation for sparse provided.
* Remove lots of old debugging code.
* Fix setting power saving mode.
* Power management works in all PCI drivers.
* All PCI drivers free and re-acquire IRQ on suspend/resume.
* Use only iomem API for hardware access.

0.15rc3 - 21 Sep 2005

* Remove all compatibility code for 2.4 kernels - Linux 2.6.11 or newer
  is required.
* hermes.conf is automatically generated.
* hermes.conf is not installed by default - use "make installconf".
* Split firmware utilities to orinoco-fwutils package.
* Update to the current Linux kernel.
* Better integration with the kernel build system.
* Use ssleep() or msleep() instead of hardcoded schedule_timeout()s
  (Nishanth Aravamudan via kernel-janitors list).
* Several cleanups and bugfixes in pci/plx/tmd/nortel drivers.
* Fix memory leak in orinoco_join_ap().
* Change io handling to avoid sparse and gcc warnings.
* Use C99 array initializers and ARRAY_SIZE() for iw_handler tables.
* Cleanup of rx stats handling.

0.15rc2 - 28 Jul 2004

* orinoco_pci saves PCI registers on suspend (Simon Huggins).
* Monitor mode disabled on Agere 8.xx firmware - it's broken.
* BAP timeout increased - needed for Intersil firmware.
* Tx power is no longer reported - it's unreliable.
* Use 802.11 header in rx path.  Hide packets with ToDS flag from
  programs that don't need promiscuous mode (John Denker).
* Manual roaming implemented for Symbol and Intersil firmware.
* Use netdev_priv() instead of directly dereferencing dev->priv.
* Some simplification of pcmcia init code in orinoco_cs and spectrum_cs.
* Numerous trivial cleanups, mainly arising from long-overdue merge with
  mainline.

0.15rc1 - 19 Apr 2004

* Fix bug which prevented setting 32 character ESSIDs from iwconfig
  (Thomas Schulz).
* Fix for incorrect CIS access in orinoco_plx (Pavel Roskin).
* Fix setting WEP key if __orinoco_fastkeychange() is not supported
  (Pavel Roskin).
* New wireless extensions API and scanning support (patch from Moustafa
  Youssef, updated by Jim Carter and Pavel Roskin).
* Add minimal ethtool support (Pavel Roskin).
* Replace CardServices() calls for compatibility with Linux 2.6.2 and
  above (Pavel Roskin).
* Fix recognition of Intersil x.x.1 firmware (Pavel Roskin).
* Replace dump_recs with more flexible get_rid ioctl (Pavel Roskin).
* RF monitor mode support (Pavel Roskin).
* Lots of bugfixes.

0.14alpha2 - 20 Oct 2003

* Correctly turn off shared-key authentication when requested (bugfix
  from Robert J. Moore).
* Correct airport sleep interfaces for current 2.6 kernels.
* Add code for key change without disabling/enabling the MAC port.  This
  is supposed to allow 802.1x to work sanely, but doesn't seem to yet.

0.14alpha1 - 30 Sep 2003

* Replaced priv->connected logic with netif_carrier_on/off() calls.
* Remove has_ibss_any and never set the CREATEIBSS RID when the ESSID is
  empty.  Too many firmwares break if we do.
* 2.6 merges: Replace pdev->slot_name with pci_name(), remove
  __devinitdata from PCI ID tables, use free_netdev().
* Enabled shared-key authentication for Agere firmware (from Robert J.
  Moore <Robert.J.Moore AT allanbank.com>)
* Move netif_wake_queue() (back) to the Tx completion from the ALLOC
  event.  This seems to prevent/mitigate the rolling error -110 problems
  at least on some Intersil firmwares.  Theoretically reduces
  performance, but I can't measure it.  Patch from Andrew Tridgell
  <tridge AT samba.org>

0.13e - 12 May 2003

* Support for post-2.5.68 return values from irq handler.
* Fixed bug where underlength packets would be double counted in the
  rx_dropped statistics.
* Provided a module parameter to suppress linkstatus messages.

0.13d - 22 Apr 2003

* Make hw_unavailable a counter, rather than just a flag, this is
  necessary to avoid some races (such as a card being removed in the
  middle of orinoco_reset().
* Restore Release/RequestConfiguration in the PCMCIA event handler when
  dealing with a driver initiated hard reset.  This is necessary to
  prevent hangs due to a spurious interrupt while the reset is in
  progress.
* Clear the 802.11 header when transmitting, even though we don't use
  it.  This fixes a long standing bug on some firmwares, which seem to
  get confused if that isn't done.
* Be less eager to de-encapsulate SNAP frames, only do so if the OUI is
  00:00:00 or 00:00:f8, leave others alone.  The old behavior broke CDP
  (Cisco Discovery Protocol).
* Use dev instead of priv for free_irq() as well as request_irq()
  (oops).
* Attempt to reset rather than giving up if we get too many IRQs.
* Changed semantics of __orinoco_down() so it can be called safely with
  hw_unavailable set.  It also now clears the linkstatus (since we're
  going to have to reassociate).

0.13c - 11 Mar 2003

* Cleanup: use dev instead of priv in various places.
* Bug fix: Don't ReleaseConfiguration on RESET_PHYSICAL event if we're
  in the middle of a (driver initiated) hard reset.
* Bug fix: ETH_ZLEN is supposed to include the header (Dionysus Blazakis
  and Manish Karir)
* Convert to using workqueues instead of taskqueues (and backwards
  compatibility macros for pre 2.5.41 kernels).
* Drop redundant (I think...) MOD_{INC,DEC}_USE_COUNT in airport.c
* New orinoco_tmd.c init module from Joerg Dorchain for TMD7160 based
  PCI to PCMCIA bridges (similar to orinoco_plx.c).

0.13b - 10 Feb 2003

* Implemented hard reset for Airport cards
* Experimental suspend/resume implementation for orinoco_pci
* Abolished /proc debugging support, replaced with a debugging iwpriv.
  Now it's ugly and simple instead of ugly and complex.
* Bugfix in hermes.c if the firmware returned a record length of 0, we
  could go clobbering memory.
* Bugfix in orinoco_stop() - it used to fail if hw_unavailable was set,
  which was usually true on PCMCIA hot removes.
* Track LINKSTATUS messages, silently drop Tx packets before we are
  connected (avoids confusing the firmware), and only give LINKSTATUS
  printk()s if the status has changed.

0.13a - 30 Sep 2002

* Minor cleanups to info frame handling.  Add basic support for
  linkstatus info frames.
* Include required kernel headers in orinoco.h, to avoid compile
  problems.

0.13 - 27 Sep 2002

* Re-introduced full resets (via schedule_task()) on Tx timeout.

0.13beta1 - 13 Sep 2002

* Revert the broken 0.12* locking scheme and go to a new yet simpler
  scheme.
* Do firmware resets only in orinoco_init() and when waking the card
  from hard sleep.

0.12c - 26 Jul 2002

* Change to C9X style designated initializers.
* Add support for 3Com AirConnect PCI.
* No longer ignore the hard_reset argument to alloc_orinocodev().  Oops.

0.12b - 11 Jul 2002

* Fix hw->num_init testing code, so num_init is actually incremented.
* Fix very stupid bug in orinoco_cs which broke compile with CONFIG_SMP.
* Squashed a warning.

0.12a - 4 Jul 2002

* Some rearrangement of code.
* Numerous fixups to locking and rest handling, particularly for PCMCIA.
* This allows open and stop net_device methods to be in orinoco.c now,
  rather than in the init modules.
* In orinoco_cs.c link->priv now points to the struct net_device, not to
  the struct orinoco_private.
* Added a check for undersized SNAP frames, which could cause crashes.

0.12 - 19 Jun 2002

* Support changing the MAC address.
* Correct display of Intersil firmware revision numbers.
* Entirely revised locking scheme.  Should be both simpler and better.
* Merged some common code in orinoco_plx, orinoco_pci and airport by
  creating orinoco_default_{open,stop,reset}(), which are used as the
  dev->open, dev->stop, priv->reset callbacks if none are specified when
  alloc_orinocodev() is called.
* Removed orinoco_plx_interrupt() and orinoco_pci_interrupt().  They
  didn't do anything.

0.11b - 1 May 2002

* Better error reporting in orinoco_plx_init_one()
* Fixed multiple bad kfree() bugs introduced by the alloc_orinocodev()
  changes.

0.11a - 29 Apr 2002

* Handle different register spacing, necessary for Prism 2.5 PCI
  adaptors (Steve Hill).
* Cleaned up initialization of card structures in orinoco_cs and
  airport.  Removed card->priv field.
* Make response structure optional for hermes_docmd_wait()
  (Pavel Roskin)
* Added PCI id for Nortel emobility to orinoco_plx.c.
* Cleanup to handling of Symbol's allocation bug (Pavel Roskin)
* Cleanups to firmware capability detection.
* Arrange for orinoco_pci.c to override firmware detection.  We should
  be able to support the PCI Intersil cards now.
* Cleanup handling of reset_cor and hard_reset (Pavel Roskin)
* Remove erroneous use of USER_BAP in the TxExc handler (Jouni Malinen)
* Makefile changes for better integration into David Hinds pcmcia-cs
  package.

0.11 - 5 Apr 2002

* Laid the groundwork in hermes.[ch] for devices which map into PCI
  memory space rather than IO space.
* Fixed bug in multicast handling (cleared multicast list when leaving
  promiscuous mode).
* Relegated Tx error messages to debug.
* Cleaned up / corrected handling of allocation lengths.
* Set OWNSSID in IBSS mode for WinXP interoperability (jimc).
* Change to using alloc_etherdev() for structure allocations.
* Check for and drop undersized packets.
* Fixed a race in stopping/waking the queue.  This should fix the
  timeout problems (Pavel Roskin)
* Reverted to netif_wake_queue() on the ALLOC event.
* Fixes for recent Symbol firmwares which lack AP density (Pavel Roskin)

0.10 - 25 Feb 2002

* Removed nested structures used for header parsing, so the driver
  should now work without hackery on ARM
* Fix for WEP handling on Intersil (Hawk Newton)
* Eliminated the /proc/hermes/ethXX/regs debugging file.  It was never
  very useful.
* Make Rx errors less noisy.

0.09b - 16 Jan 2002

* Fixed even stupider mistake in new interrupt handling, which seriously
  broke things on big-endian machines.
* Removed a bunch of redundant includes and exports.
* Removed a redundant MOD_{INC,DEC}_USE_COUNT pair in airport.c
* Don't attempt to do hardware level multicast reception on Intersil
  firmware, just go promisc instead.
* Typo fixed in hermes_issue_cmd()
* Eliminated WIRELESS_SPY #ifdefs
* Status code reported on Tx exceptions
* Moved netif_wake_queue() from ALLOC interrupts to TX and TXEXC
  interrupts, which should fix the timeouts we're seeing.

0.09a - 2 Jan 2002

* Fixed stupid mistake in multicast list handling, triggering a BUG()

0.09 - 21 Dec 2001

* Some new PCI IDs for PLX cards.
* Removed broken attempt to do ALLMULTI reception.  Just use promiscuous
  mode instead.
* Preliminary work for list-AP (Jean II)
* Airport updates from (BenH)
* Eliminated racy hw_ready stuff
* Fixed generation of fake events in irq handler.  This should finally
  kill the EIO problems (Jean II and dgibson)
* Fixed breakage of bitrate set/get on Agere firmware (Jean II)

0.08b - 20 Nov 2001

* Lots of cleanup and bugfixes in orinoco_plx.c
* Cleanup to handling of Tx rate setting.
* Removed support for old encapsulation method.
* Removed old "dldwd" names.
* Split RID constants into a new file hermes_rid.h
* Renamed RID constants to match linux-wlan-ng and prism2.o
* Bugfixes in hermes.c
* Poke the PLX's INTCSR register, so it actually starts generating
  interrupts.  These cards might actually work now.
* Update to wireless extensions v12 (Jean II)
* Support for tallies and inquire command (Jean II)
* Airport updates for newer PPC kernels (BenH)

0.08a - 9 Oct 2001

* Inserted some missing acknowledgments/info into the Changelog.
* Fixed some bugs in the normalization of signal level reporting.
* Fixed bad bug in WEP key handling on Intersil and Symbol firmware,
  which led to an instant crash on big-endian machines.

0.08 - 3 Oct 2001

* Fixed a possible buffer overrun found by the Stanford checker (in
  dldwd_ioctl_setiwencode()).  Can only be called by root anyway, so not
  a big problem.
* Turned has_big_wep on for Intersil cards.  That's not true for all of
  them but we should at least let the capable ones try.
* Wait for BUSY to clear at the beginning of hermes_bap_seek().  I
  realized that my assumption that the driver's serialization would
  prevent the BAP being busy on entry was possibly false, because things
  other than seeks may make the BAP busy.
* Use "alternate" (oui 00:00:00) encapsulation by default.  Setting
  use_old_encaps will mimic the old behavior, but I think we will be
  able to eliminate this.
* Don't try to make __initdata const (the version string).  This can't
  work because of the way the __initdata sectioning works.
* Added MODULE_LICENSE tags.
* Support for PLX (transparent PCMCIA->PCI bridge) cards.
* Changed to using the new type-fascist min/max.

0.07a - 1 Oct 2001

* Add code to read Symbol firmware revision, inspired by latest code in
  Spectrum24 by Lee John Keyser-Allen - Thanks Lee!
* Thanks to Jared Valentine <hidden AT xmission.com> for "providing" me
  a 3Com card with a recent firmware, fill out Symbol firmware
  capabilities of latest rev (2.20), as well as older Symbol cards.
* Disable Power Management in newer Symbol firmware, the API has changed
  (documentation needed).

0.07 - 20 Aug 2001

* Removed BAP error retries from hermes_bap_seek().  For Tx we now let
  the upper layers handle the retry, we retry explicitly in the Rx path,
  but don't make as much noise about it.
* Firmware detection cleanups.

0.06f - 14 Aug 2001

* Wording fix to license
* Added a 'use_alternate_encaps' module parameter for APs which need an
  oui of 00:00:00.  We really need a better way of handling this, but
  the module flag is better than nothing for now.

0.06e - 1 Aug 2001

* Removed some redundant global initializers (orinoco_cs.c).
* Added some module metadata

0.06d - 6 Jul 2001

* Change a bunch of KERN_INFO messages to KERN_DEBUG, as per Linus'
  wishes to reduce the number of unnecessary messages.
* Removed bogus message on CRC error.
* Merged fixes for 0.08 Prism 2 firmware from William Waghorn
  <willwaghorn AT yahoo.co.uk>
* Slight cleanup/re-arrangement of firmware detection code.

0.06c - 29 May 2001

* Show first spy address in /proc/net/wireless for IBSS mode as well

0.06b - 25 May 2001

* IBSS on Symbol use port_mode = 4.  Please don't ask...

0.06 - 25 May 2001

  Original patch from Hong Lin <alin AT redhat.com>,
  Ian Kinner <ikinner AT redhat.com>
  and David Smith <dsmith AT redhat.com>:
* Init of priv->tx_rate_ctrl in firmware specific section.
* Prism2/Symbol rate, upto should be 0xF and not 0x15.  Doh!
* Spectrum card always need cor_reset (for every reset)
* Fix cor_reset to not lose bit 7 in the register
* flush_stale_links to remove zombie Pcmcia instances
* Ack previous hermes event before reset
  Jean Tourrilhes:
* Allow orinoco.c to call cor_reset via priv->card_reset_handler
* Add priv->need_card_reset to toggle this feature
* Fix various buglets when setting WEP in Symbol firmware.  Now,
  encryption is fully functional on Symbol cards.  Youpi!

0.05d - 5 May 2001

* Workaround to SNAP decapsulate frame from Linksys AP
  original patch from: Dong Liu <dliu AT research.bell-labs.com>
  (note: the memcmp bug was mine - fixed)
* Remove set_retry stuff, no firmware support it (bloat--).

0.05c - 5 May 2001

* Adapt airport.c to latest changes in orinoco.c
* Remove deferred power enabling code

0.05b - 4 May 2001

* add module parameter 'ignore_cis_vcc' for D-Link @ 5V
* D-Link firmware doesn't support multicast.  We just print a few error
  messages, but otherwise everything works...
* For David: set/getport3 works fine, just upgrade iwpriv...

0.05a - 4 May 2001

* Revert to old Pcmcia code to fix breakage of Ben's changes...

0.05 - 3 May 2001

* Spin-off Pcmcia code.  This file is renamed orinoco.c, and
  orinoco_cs.c now contains only the Pcmcia specific stuff.
* Add Airport driver support on top of orinoco.c (see airport.c)

0.04c - 24 Apr 2001

* Tim Hurley <timster AT seiki.bliztech.com> reported a D-Link card
  with vendor 02 and firmware 0.08.  Added in the capabilities...
* Tested Lucent firmware 7.28, everything works...

0.04b - 22 Apr 2001

* Removed the 'eth' parameter - always use ethXX as the interface name
  instead of dldwdXX.  The other was racy anyway.
* Clean up RID definitions in hermes.h, other cleanups

0.04 - 30 Mar 2001

* Update to Wireless 11 - add retry limit/lifetime support
* Tested with a D-Link DWL 650 card, fill in firmware support
* Warning on Vcc mismatch (D-Link 3.3v card in Lucent 5v only slot)
* Fixed the Prism2 WEP bugs that I introduced in 0.03 :-(
  It works on D-Link *only* after a tcpdump.  Weird...
  And still doesn't work on Intel card.  Grrrr...
* Update the mode after a setport3
* Add preamble setting for Symbol cards (not yet enabled)
* Don't complain as much about Symbol cards...

0.03 - 23 Mar 2001

* Start adding Symbol support - need to check all that
* Fix Prism2/Symbol WEP to accept 128 bits keys
* Add Symbol WEP (add authentication type)
* Add Prism2/Symbol rate
* Add PM timeout (holdover duration)
* Enable "iwconfig eth0 key off" and friends (toggle flags)
* Enable "iwconfig eth0 power unicast/all" (toggle flags)
* Try with an Intel card.  It report firmware 1.01, behave like an
  antiquated firmware, however on windows it says 2.00.  Yuck!
* Workaround firmware bug in allocate buffer (Intel 1.01)
* Finish external renaming to orinoco...
* Testing with various Wavelan firmwares

0.02 - 21 Mar 2001

* Allow to use regular ethX device name instead of dldwdX
* Warning on IBSS with ESSID=any for firmware 6.06
* Put proper range.throughput values (optimistic)
* IWSPY support (IOCTL and stat gather in Rx path)
* Allow setting frequency in Ad-Hoc mode
* Disable WEP setting if !has_wep to work on old firmware
* Fix txpower range
* Start adding support for Samsung/Compaq firmware

