3 * Fix compilation for Ubuntu kernels - get KERNELRELEASE from
4 linux/version.h rather than from the kernel makefiles.
5 * Fixes for serious bitrot in airport and orinoco_nortel.
6 * Allow writing odd number of bytes to BAP.
7 * Don't pad transmitted packets.
8 * Simplified transmission padding code.
9 * Annotation for sparse provided.
10 * Remove lots of old debugging code.
11 * Fix setting power saving mode.
12 * Power management works in all PCI drivers.
13 * All PCI drivers free and re-acquire IRQ on suspend/resume.
14 * Use only iomem API for hardware access.
18 * Remove all compatibility code for 2.4 kernels - Linux 2.6.11 or newer
20 * hermes.conf is automatically generated.
21 * hermes.conf is not installed by default - use "make installconf".
22 * Split firmware utilities to orinoco-fwutils package.
23 * Update to the current Linux kernel.
24 * Better integration with the kernel build system.
25 * Use ssleep() or msleep() instead of hardcoded schedule_timeout()s
26 (Nishanth Aravamudan via kernel-janitors list).
27 * Several cleanups and bugfixes in pci/plx/tmd/nortel drivers.
28 * Fix memory leak in orinoco_join_ap().
29 * Change io handling to avoid sparse and gcc warnings.
30 * Use C99 array initializers and ARRAY_SIZE() for iw_handler tables.
31 * Cleanup of rx stats handling.
35 * orinoco_pci saves PCI registers on suspend (Simon Huggins).
36 * Monitor mode disabled on Agere 8.xx firmware - it's broken.
37 * BAP timeout increased - needed for Intersil firmware.
38 * Tx power is no longer reported - it's unreliable.
39 * Use 802.11 header in rx path. Hide packets with ToDS flag from
40 programs that don't need promiscuous mode (John Denker).
41 * Manual roaming implemented for Symbol and Intersil firmware.
42 * Use netdev_priv() instead of directly dereferencing dev->priv.
43 * Some simplification of pcmcia init code in orinoco_cs and spectrum_cs.
44 * Numerous trivial cleanups, mainly arising from long-overdue merge with
49 * Fix bug which prevented setting 32 character ESSIDs from iwconfig
51 * Fix for incorrect CIS access in orinoco_plx (Pavel Roskin).
52 * Fix setting WEP key if __orinoco_fastkeychange() is not supported
54 * New wireless extensions API and scanning support (patch from Moustafa
55 Youssef, updated by Jim Carter and Pavel Roskin).
56 * Add minimal ethtool support (Pavel Roskin).
57 * Replace CardServices() calls for compatibility with Linux 2.6.2 and
59 * Fix recognition of Intersil x.x.1 firmware (Pavel Roskin).
60 * Replace dump_recs with more flexible get_rid ioctl (Pavel Roskin).
61 * RF monitor mode support (Pavel Roskin).
64 0.14alpha2 - 20 Oct 2003
66 * Correctly turn off shared-key authentication when requested (bugfix
67 from Robert J. Moore).
68 * Correct airport sleep interfaces for current 2.6 kernels.
69 * Add code for key change without disabling/enabling the MAC port. This
70 is supposed to allow 802.1x to work sanely, but doesn't seem to yet.
72 0.14alpha1 - 30 Sep 2003
74 * Replaced priv->connected logic with netif_carrier_on/off() calls.
75 * Remove has_ibss_any and never set the CREATEIBSS RID when the ESSID is
76 empty. Too many firmwares break if we do.
77 * 2.6 merges: Replace pdev->slot_name with pci_name(), remove
78 __devinitdata from PCI ID tables, use free_netdev().
79 * Enabled shared-key authentication for Agere firmware (from Robert J.
80 Moore <Robert.J.Moore AT allanbank.com>)
81 * Move netif_wake_queue() (back) to the Tx completion from the ALLOC
82 event. This seems to prevent/mitigate the rolling error -110 problems
83 at least on some Intersil firmwares. Theoretically reduces
84 performance, but I can't measure it. Patch from Andrew Tridgell
89 * Support for post-2.5.68 return values from irq handler.
90 * Fixed bug where underlength packets would be double counted in the
91 rx_dropped statistics.
92 * Provided a module parameter to suppress linkstatus messages.
96 * Make hw_unavailable a counter, rather than just a flag, this is
97 necessary to avoid some races (such as a card being removed in the
98 middle of orinoco_reset().
99 * Restore Release/RequestConfiguration in the PCMCIA event handler when
100 dealing with a driver initiated hard reset. This is necessary to
101 prevent hangs due to a spurious interrupt while the reset is in
103 * Clear the 802.11 header when transmitting, even though we don't use
104 it. This fixes a long standing bug on some firmwares, which seem to
105 get confused if that isn't done.
106 * Be less eager to de-encapsulate SNAP frames, only do so if the OUI is
107 00:00:00 or 00:00:f8, leave others alone. The old behavior broke CDP
108 (Cisco Discovery Protocol).
109 * Use dev instead of priv for free_irq() as well as request_irq()
111 * Attempt to reset rather than giving up if we get too many IRQs.
112 * Changed semantics of __orinoco_down() so it can be called safely with
113 hw_unavailable set. It also now clears the linkstatus (since we're
114 going to have to reassociate).
118 * Cleanup: use dev instead of priv in various places.
119 * Bug fix: Don't ReleaseConfiguration on RESET_PHYSICAL event if we're
120 in the middle of a (driver initiated) hard reset.
121 * Bug fix: ETH_ZLEN is supposed to include the header (Dionysus Blazakis
123 * Convert to using workqueues instead of taskqueues (and backwards
124 compatibility macros for pre 2.5.41 kernels).
125 * Drop redundant (I think...) MOD_{INC,DEC}_USE_COUNT in airport.c
126 * New orinoco_tmd.c init module from Joerg Dorchain for TMD7160 based
127 PCI to PCMCIA bridges (similar to orinoco_plx.c).
131 * Implemented hard reset for Airport cards
132 * Experimental suspend/resume implementation for orinoco_pci
133 * Abolished /proc debugging support, replaced with a debugging iwpriv.
134 Now it's ugly and simple instead of ugly and complex.
135 * Bugfix in hermes.c if the firmware returned a record length of 0, we
136 could go clobbering memory.
137 * Bugfix in orinoco_stop() - it used to fail if hw_unavailable was set,
138 which was usually true on PCMCIA hot removes.
139 * Track LINKSTATUS messages, silently drop Tx packets before we are
140 connected (avoids confusing the firmware), and only give LINKSTATUS
141 printk()s if the status has changed.
145 * Minor cleanups to info frame handling. Add basic support for
146 linkstatus info frames.
147 * Include required kernel headers in orinoco.h, to avoid compile
152 * Re-introduced full resets (via schedule_task()) on Tx timeout.
154 0.13beta1 - 13 Sep 2002
156 * Revert the broken 0.12* locking scheme and go to a new yet simpler
158 * Do firmware resets only in orinoco_init() and when waking the card
163 * Change to C9X style designated initializers.
164 * Add support for 3Com AirConnect PCI.
165 * No longer ignore the hard_reset argument to alloc_orinocodev(). Oops.
169 * Fix hw->num_init testing code, so num_init is actually incremented.
170 * Fix very stupid bug in orinoco_cs which broke compile with CONFIG_SMP.
171 * Squashed a warning.
175 * Some rearrangement of code.
176 * Numerous fixups to locking and rest handling, particularly for PCMCIA.
177 * This allows open and stop net_device methods to be in orinoco.c now,
178 rather than in the init modules.
179 * In orinoco_cs.c link->priv now points to the struct net_device, not to
180 the struct orinoco_private.
181 * Added a check for undersized SNAP frames, which could cause crashes.
185 * Support changing the MAC address.
186 * Correct display of Intersil firmware revision numbers.
187 * Entirely revised locking scheme. Should be both simpler and better.
188 * Merged some common code in orinoco_plx, orinoco_pci and airport by
189 creating orinoco_default_{open,stop,reset}(), which are used as the
190 dev->open, dev->stop, priv->reset callbacks if none are specified when
191 alloc_orinocodev() is called.
192 * Removed orinoco_plx_interrupt() and orinoco_pci_interrupt(). They
197 * Better error reporting in orinoco_plx_init_one()
198 * Fixed multiple bad kfree() bugs introduced by the alloc_orinocodev()
203 * Handle different register spacing, necessary for Prism 2.5 PCI
204 adaptors (Steve Hill).
205 * Cleaned up initialization of card structures in orinoco_cs and
206 airport. Removed card->priv field.
207 * Make response structure optional for hermes_docmd_wait()
209 * Added PCI id for Nortel emobility to orinoco_plx.c.
210 * Cleanup to handling of Symbol's allocation bug (Pavel Roskin)
211 * Cleanups to firmware capability detection.
212 * Arrange for orinoco_pci.c to override firmware detection. We should
213 be able to support the PCI Intersil cards now.
214 * Cleanup handling of reset_cor and hard_reset (Pavel Roskin)
215 * Remove erroneous use of USER_BAP in the TxExc handler (Jouni Malinen)
216 * Makefile changes for better integration into David Hinds pcmcia-cs
221 * Laid the groundwork in hermes.[ch] for devices which map into PCI
222 memory space rather than IO space.
223 * Fixed bug in multicast handling (cleared multicast list when leaving
225 * Relegated Tx error messages to debug.
226 * Cleaned up / corrected handling of allocation lengths.
227 * Set OWNSSID in IBSS mode for WinXP interoperability (jimc).
228 * Change to using alloc_etherdev() for structure allocations.
229 * Check for and drop undersized packets.
230 * Fixed a race in stopping/waking the queue. This should fix the
231 timeout problems (Pavel Roskin)
232 * Reverted to netif_wake_queue() on the ALLOC event.
233 * Fixes for recent Symbol firmwares which lack AP density (Pavel Roskin)
237 * Removed nested structures used for header parsing, so the driver
238 should now work without hackery on ARM
239 * Fix for WEP handling on Intersil (Hawk Newton)
240 * Eliminated the /proc/hermes/ethXX/regs debugging file. It was never
242 * Make Rx errors less noisy.
246 * Fixed even stupider mistake in new interrupt handling, which seriously
247 broke things on big-endian machines.
248 * Removed a bunch of redundant includes and exports.
249 * Removed a redundant MOD_{INC,DEC}_USE_COUNT pair in airport.c
250 * Don't attempt to do hardware level multicast reception on Intersil
251 firmware, just go promisc instead.
252 * Typo fixed in hermes_issue_cmd()
253 * Eliminated WIRELESS_SPY #ifdefs
254 * Status code reported on Tx exceptions
255 * Moved netif_wake_queue() from ALLOC interrupts to TX and TXEXC
256 interrupts, which should fix the timeouts we're seeing.
260 * Fixed stupid mistake in multicast list handling, triggering a BUG()
264 * Some new PCI IDs for PLX cards.
265 * Removed broken attempt to do ALLMULTI reception. Just use promiscuous
267 * Preliminary work for list-AP (Jean II)
268 * Airport updates from (BenH)
269 * Eliminated racy hw_ready stuff
270 * Fixed generation of fake events in irq handler. This should finally
271 kill the EIO problems (Jean II and dgibson)
272 * Fixed breakage of bitrate set/get on Agere firmware (Jean II)
276 * Lots of cleanup and bugfixes in orinoco_plx.c
277 * Cleanup to handling of Tx rate setting.
278 * Removed support for old encapsulation method.
279 * Removed old "dldwd" names.
280 * Split RID constants into a new file hermes_rid.h
281 * Renamed RID constants to match linux-wlan-ng and prism2.o
282 * Bugfixes in hermes.c
283 * Poke the PLX's INTCSR register, so it actually starts generating
284 interrupts. These cards might actually work now.
285 * Update to wireless extensions v12 (Jean II)
286 * Support for tallies and inquire command (Jean II)
287 * Airport updates for newer PPC kernels (BenH)
291 * Inserted some missing acknowledgments/info into the Changelog.
292 * Fixed some bugs in the normalization of signal level reporting.
293 * Fixed bad bug in WEP key handling on Intersil and Symbol firmware,
294 which led to an instant crash on big-endian machines.
298 * Fixed a possible buffer overrun found by the Stanford checker (in
299 dldwd_ioctl_setiwencode()). Can only be called by root anyway, so not
301 * Turned has_big_wep on for Intersil cards. That's not true for all of
302 them but we should at least let the capable ones try.
303 * Wait for BUSY to clear at the beginning of hermes_bap_seek(). I
304 realized that my assumption that the driver's serialization would
305 prevent the BAP being busy on entry was possibly false, because things
306 other than seeks may make the BAP busy.
307 * Use "alternate" (oui 00:00:00) encapsulation by default. Setting
308 use_old_encaps will mimic the old behavior, but I think we will be
309 able to eliminate this.
310 * Don't try to make __initdata const (the version string). This can't
311 work because of the way the __initdata sectioning works.
312 * Added MODULE_LICENSE tags.
313 * Support for PLX (transparent PCMCIA->PCI bridge) cards.
314 * Changed to using the new type-fascist min/max.
318 * Add code to read Symbol firmware revision, inspired by latest code in
319 Spectrum24 by Lee John Keyser-Allen - Thanks Lee!
320 * Thanks to Jared Valentine <hidden AT xmission.com> for "providing" me
321 a 3Com card with a recent firmware, fill out Symbol firmware
322 capabilities of latest rev (2.20), as well as older Symbol cards.
323 * Disable Power Management in newer Symbol firmware, the API has changed
324 (documentation needed).
328 * Removed BAP error retries from hermes_bap_seek(). For Tx we now let
329 the upper layers handle the retry, we retry explicitly in the Rx path,
330 but don't make as much noise about it.
331 * Firmware detection cleanups.
335 * Wording fix to license
336 * Added a 'use_alternate_encaps' module parameter for APs which need an
337 oui of 00:00:00. We really need a better way of handling this, but
338 the module flag is better than nothing for now.
342 * Removed some redundant global initializers (orinoco_cs.c).
343 * Added some module metadata
347 * Change a bunch of KERN_INFO messages to KERN_DEBUG, as per Linus'
348 wishes to reduce the number of unnecessary messages.
349 * Removed bogus message on CRC error.
350 * Merged fixes for 0.08 Prism 2 firmware from William Waghorn
351 <willwaghorn AT yahoo.co.uk>
352 * Slight cleanup/re-arrangement of firmware detection code.
356 * Show first spy address in /proc/net/wireless for IBSS mode as well
360 * IBSS on Symbol use port_mode = 4. Please don't ask...
364 Original patch from Hong Lin <alin AT redhat.com>,
365 Ian Kinner <ikinner AT redhat.com>
366 and David Smith <dsmith AT redhat.com>:
367 * Init of priv->tx_rate_ctrl in firmware specific section.
368 * Prism2/Symbol rate, upto should be 0xF and not 0x15. Doh!
369 * Spectrum card always need cor_reset (for every reset)
370 * Fix cor_reset to not lose bit 7 in the register
371 * flush_stale_links to remove zombie Pcmcia instances
372 * Ack previous hermes event before reset
374 * Allow orinoco.c to call cor_reset via priv->card_reset_handler
375 * Add priv->need_card_reset to toggle this feature
376 * Fix various buglets when setting WEP in Symbol firmware. Now,
377 encryption is fully functional on Symbol cards. Youpi!
381 * Workaround to SNAP decapsulate frame from Linksys AP
382 original patch from: Dong Liu <dliu AT research.bell-labs.com>
383 (note: the memcmp bug was mine - fixed)
384 * Remove set_retry stuff, no firmware support it (bloat--).
388 * Adapt airport.c to latest changes in orinoco.c
389 * Remove deferred power enabling code
393 * add module parameter 'ignore_cis_vcc' for D-Link @ 5V
394 * D-Link firmware doesn't support multicast. We just print a few error
395 messages, but otherwise everything works...
396 * For David: set/getport3 works fine, just upgrade iwpriv...
400 * Revert to old Pcmcia code to fix breakage of Ben's changes...
404 * Spin-off Pcmcia code. This file is renamed orinoco.c, and
405 orinoco_cs.c now contains only the Pcmcia specific stuff.
406 * Add Airport driver support on top of orinoco.c (see airport.c)
410 * Tim Hurley <timster AT seiki.bliztech.com> reported a D-Link card
411 with vendor 02 and firmware 0.08. Added in the capabilities...
412 * Tested Lucent firmware 7.28, everything works...
416 * Removed the 'eth' parameter - always use ethXX as the interface name
417 instead of dldwdXX. The other was racy anyway.
418 * Clean up RID definitions in hermes.h, other cleanups
422 * Update to Wireless 11 - add retry limit/lifetime support
423 * Tested with a D-Link DWL 650 card, fill in firmware support
424 * Warning on Vcc mismatch (D-Link 3.3v card in Lucent 5v only slot)
425 * Fixed the Prism2 WEP bugs that I introduced in 0.03 :-(
426 It works on D-Link *only* after a tcpdump. Weird...
427 And still doesn't work on Intel card. Grrrr...
428 * Update the mode after a setport3
429 * Add preamble setting for Symbol cards (not yet enabled)
430 * Don't complain as much about Symbol cards...
434 * Start adding Symbol support - need to check all that
435 * Fix Prism2/Symbol WEP to accept 128 bits keys
436 * Add Symbol WEP (add authentication type)
437 * Add Prism2/Symbol rate
438 * Add PM timeout (holdover duration)
439 * Enable "iwconfig eth0 key off" and friends (toggle flags)
440 * Enable "iwconfig eth0 power unicast/all" (toggle flags)
441 * Try with an Intel card. It report firmware 1.01, behave like an
442 antiquated firmware, however on windows it says 2.00. Yuck!
443 * Workaround firmware bug in allocate buffer (Intel 1.01)
444 * Finish external renaming to orinoco...
445 * Testing with various Wavelan firmwares
449 * Allow to use regular ethX device name instead of dldwdX
450 * Warning on IBSS with ESSID=any for firmware 6.06
451 * Put proper range.throughput values (optimistic)
452 * IWSPY support (IOCTL and stat gather in Rx path)
453 * Allow setting frequency in Ad-Hoc mode
454 * Disable WEP setting if !has_wep to work on old firmware
456 * Start adding support for Samsung/Compaq firmware