V1.0.4                            F. Sleeper Ros (sl33p3r@free.fr) 
    - Change adictrl behavior (-o doesn't send anymore option file. It
      just sets the path to the options file)
    - Change debug control. adictrl can now set/display dynamically debug level.
    - Add module_dbg_mask parameter, to set debug mask at load time
      Exe: insmod adiusbadsl module_dbg_mask=0xffff
    - Firmware is now sent directly by the driver when it detects that the 
      probed modem is a pre-firmware one. Thus adictrl -f does not make anything.
    - Merge OAM handling as present in Sagem 2.0.2 driver
    - Rewrite Control URB submission handling
    - Added some arch-independance while initializing messages
    - Change /proc info to decimal + fix some stats
    - Merge Routed Ethernet modifs from Sagem 2.0.2
    - Merge message init modifs from Sagem 2.0.2
    - Do a fix to prevent modem reboot when line quality is bad (mimic Windows driver)
    - Fix carrier sens information transition.
    - Add PPC support ( fleny68@free.fr )
    - Rewrite adictrl. New options ( --print & --wizard)
    - Install/Uninstall procedures revision ( olivier.borowski@free.fr )
    - Modified adiusbdsp script to synchronize instead of getting interface number
    - Change the size of the reassembly buffer accordingly to encapsulation.
      Should avoid the "Wrong length .." bug reported by pppoa
    - Module parameter if_name can be used for specifying the interface name.
      Exe: insmod adiusbadsl if_name="eth2"



V1.0.3                          F. Sleeper Ros (sl33p3r@free.fr) 
                                R. Guerin (rguerin@freebox.fr)
    - fix remaining memory leaks (adi_probe error and errors conditions)
    - add carrier sens information to Ethernet device
    - print all errors inconditionnaly and use decimal notation
    - add multimodem support (tested with 8 modems)
    - fix a bug introduced by CC5 that caused a Oops at rmmod time
    - fix a kernel panic that could occur if ioctl for options did not 
      reach driver but ioctl for DSP did.
    - Desynchronize boot process

V1.0.2-cc5	2003/02/13	C. Casteyde (casteyde.christian@free.fr)
    - fix race on the new IsWriting flag
    - fix USB unlink flag for IRQ urb on device removal
    - reset all URBs status flag on error (just in case the USB layer does
    not reset it on successfull URB operation completion)
    - add missing #ifdef on BULK hardware members
    - update FAQs

V1.0.2-cc4	2003/02/05	C. Casteyde (casteyde.christian@free.fr)
    - add version trace to module
    - unlink write URB on Ethernet device removall if still pending
    - fix invalid argument error in WriteAtmData after write URB cancelation
    - add signal handling in pppoa to send last packet to driver on pppd exit
    (this will certainly helps LNS to reset the connection correctly)
    - add english documentation

V1.0.2-cc3	2003/01/16	C. Casteyde (casteyde.christian@free.fr)
    - add nodetach and persist options to adsl.inittab script
    - fix France Telecom mire password
    - merge with rp-pppoe 3.5
    - check MTU and packet sizes
    - fix -ENOBUFS error with pppoa (simply ignore the error)
    - fix MTU packet size in pppoa (could send more data than Ethernet
    can accept)
    - fix synchronous mode in pppoa (must not keep PPP frame bytes)
    - fix pppoa packet size field in ReadSendItUp
    - fix pppoa crash on non PPPoA packet (which can be sent by any
    program making broadcast packets on the driver Ethernet interface)
    - fix kernel crash introduced in -cc1 by a calling netif_wake_queue too soon
    in case of a transmit time-out (race with start_xmit)
    - fix watchdog loop on transmit time-out
    - change netif_start_queue to netif_wake_queue in local ARP replies
    - do not return 1 from start_xmit, as it means the hardware is broken
    and this blocks the network interface for ever (at least if netif_stop_queue
    is called before returning, as it should be)
    - add detailed error statistics on network device
    - add FAQ

V1.0.2-cc2	2003/01/07	C. Casteyde (casteyde.christian@free.fr)
    - reorganize a little the directory structure
    - fix makefile for root user
    - fix compile problem for gcc 2.95.3
    - fix regression from 1.0.2-cc1 (modem structure not reinitialized
    on probing a new modem after unplug)
    - fix modem reboot loop (endianess conversion omitted in ADDMSG when called
    from ADDMSG_IF_VAR_NOT_ZERO after first initialization, due to MsgInitDone
    static variable not reinitialized - what a sh... code!!)
    - more cleanup:
	* remove all C++ comments
	* remove inline in static functions (compiler will inline anyway)
    - fix invalid user to kernel transfer for ioctl struct
    - do not assume user ioctl pointers are valid (use copy_from_user
    instead of __copy_from_user)
    - add ioctl code to syncrhonize user client scripts with the modem
    operational state
    - add ioctl code to retreive the network interface name
    - create Ethernet interface only on Ethernet name request ioctl (to let
    the other Ethernet device initialize and get their own name first)
    - add options for sync and get network itf name in adictrl
    - return correct error code from adictrl
    - rewrite adi_start_xmit for full error handling and NET3 conformance
    - wake-up network interface if transmit errors occurs
    - fix Ethernet statistics accounting
    - start interrupt URB only after DSP code loading via ioctl (to prevent
    crash on IDMA load page to occur before DSP code is there on module
    reloading)
    - check options values from user space (would lead to use of uninitialized
    variables if they are invalid)
    - rewrite of ReadSendItUp (too complex for what it has to do)
    - do not unlink IRQ URB on modem unplug and leave adi_disconnect do its job
    (the alternative UHCI USB driver won't always unlink the URB and can still
    call the ISR event after module unloading)
    - save nearly 50% of memory usage by releasing BNM files data
    after DSP processing:
	* remove aliasing to BNM data
	* free BNM data from adictrl
    - simplify memory usage for DSP code processing:
	* removall of DSP allocation macros
	* rewrite of FreeDspData
	* remove all memory tracking members previously used by FreeDspData
	from the Hardware struct
    - ensure new DSP code is correct before replacing old one
    - remove all memory leaks in DSP processing code in case of error
    - check for all possible buffer overflow in DSP processing code
    - prevent crash in case a swap page has no block (correctly initialize
    the block count and do not rely on the "FileOffset" value in the first
    block)
    - add critical section to protect DSP code loading from ioctl / modem
    unload and usage from the modem ISR
    - add critical section to protect network interface and ioctl from race
conditions
    - add S-Record checksum control in buildDSP
    - remove the awfull debug trace in pppoa.c that fills syslog
    - add support of USR modems
    - automatically find *.bnm files in buildDSP
    - partial merge with USR version:
	* added support to handle PTI/OAM cells
	* fix LLCPPPOA header test endianess
	* finish encapsulation ROUTED_IP_LLC and ROUTED_IP_VC
	* fix wrong trace in pppoa (use of pppoe instead of pppoa)
	* add missing break in pppoa in frame lookup in AsyncReadFromPPP
	* do not send packets that are too short to be sent in pppoa
	* small optimizations in pppoa
    Not merged:
	* MTU change for Ethernet device in module (default MTU is the good
value)
	* MTU change in pppoa (pppoa payload is really Ethernet paylod-2,
not 1512-2, and in any case Ethernet packet maximum size is 1514 because of
the protocol field)
	* URB reset in case of error in ReadIsoCompletion and StartReadPipe
(there is no need to initialize out parameters, and if all this was required,
the kernel would be so buggy that USB would be unusable anyway)
	* asynchronous input (no other network drivers seems to do that
in Linux, and dev_skb_alloc uses non pageable memory and can therefore be used
safely in ISRs)
	* output buffer (I do not see the need of all this stuff, it should
work as is, and sending is always easier to synchronize than receiving since
input data are by nature asynchronous. It could just improve performances.)
    - update hotplug scripts
    - add main makefile with install target
    - documentation update


V1.0.2-cc1	2002/12/09	C. Casteyde (casteyde.christian@free.fr)
    - update to kernel 2.4.20 USB API
    - make module GPL compliant
    - PPPoA kmalloc memory leak fix in ReadSendItUp
    - PPPoA buffer overflow in ReadSendItUp
    - firmware extraction and loading from user space support
    - two pass initialization for firmware and DSP loading
    - add free tool to build firmware file from non GPL headers
    - add tool to build DSP code binary file from BNM files (licensed GPL)
    - full rewrite of adictrl (licensed GPL)
    - removal of reset ioctl command
    - fix all memory leaks in ioctl
    - suppress useless data sharing in ioctl
    - make sure ioctl cannnot be used while ethernet interface is up
    - return correct errno from ioctl
    - fix network interface memory leak in module unload code
    - race fix in ethernet interface release
    - replacement of ADIModem with ethernet device naming convention
    - code cleanup for gcc 3.2.1 support
    - removal of min and max macros
    - removal of useless and stupid macros
    - replacement of custom macros with their standard kernel counterpart
    - add SMP support to makefile
    - add build configuration options at top of makefile
    - CR/LF cleanup
    - code cleanup for multidevice (work in progress)
    - header fix and project reorganization
    - removal of unused AdjustTimerInterval function (Me.c)
    - move /proc/adimodem to /proc/driver/adimodem
    - add standard C integer types support to pppoa plugin
    - unifies default options and make them compatible with Free ISP by default

