Version 0.5 to 0.6 (21-DEC-1995)
==================

Bug fixes
---------

 - ARP ioctls stopped working for most non-ATM devices, oops
 - ATMTCP driver counted lack of memory as rx_err instead of rx_drop
 - select on driver using polling may have hung
 - atmarp man page and usage didn't indicate that the interface number is
   optional
 - restricted atmarpd and signaling control, and SIOCSIFATMADDR to the super
   user
 - atmtcp: fixed handling of VPI/VCI <= 0 for setsockopt(SO_CIRANGE)
 - eni and zn driver had static UBR shaper pointer, making it difficult to have
   more than one such device per system
 - eni driver initialization didn't work properly in systems with ASIC Tonga
 - suni.[ch]: confused MC (Master Config) and MCT (Master ConTrol) registers
 - (SVC) accept now returns PVC -EAGAIN as -EBUSY because the operation cannot
   be retried
 - qgen: fixed several bugs in case handling (and made defaults work for
   parsing)
 - svc_dup passed PF_ATMSVC instead of AAL to svc_create
 - plugged a few skb leaks in svc_accept
 - text2atm didn't properly NUL-terminate E.164 addresses

New features
------------

 - ZN1221 driver works partially for AAL5 (still hangs after a few dozen MB)
   (also wrote maint/zntune to monitor/adjust free buffer pools)
 - ENI driver now supports new Tonga ASIC boards
 - added Scott Shumate's ILMI demon (for automatic address registration)
 - text2atm: added wildcard support for SVCs (syntax: addr/bits)
 - new library function atm_equal to compare SVC addresses
 - new ioctl ATM_GETTYPE to obtain interface type name
 - new ioctl ATM_GETESI to obtain ESI (parallels /proc/atm/devices)
 - new ioctls SONET_SETFRAMING, SONET_GETFRAMING, and SONET_GETFRSENSE to
   handle SONET vs. SDH framing
 - added socket option SO_AALTYPE (SOL_AAL) to query AAL type (getsockopt
   only)
 - signaling demon is now notified on address changes (new message
   as_itf_notify)

Other changes
-------------

 - known bugs are now listed in a file called BUGS
 - all utility programs (aread, awrite, atmdump, br, bw, clip, ttcp) now use
   the notation [itf.]vpi.vci for PVCs (was  itf vpi vci , except for ttcp,
   where it was only  vpi vci  (no itf))
 - all ioctl values have changed
   Note: most programs have to be recompiled because of this
 - sigd and arpd now register their control sockets via ioctls
 - (old) clip now creates interfaces with an ioctl
 - text2atm now returns the wildcard length, i.e. a non-zero return value
   no longer implies failure
 - push_oam now returns an int (was void)
 - push_oam now has several flags (in a bit set) instead of the immed
   argument
 - the peek function must now update the statistics if it rejects a packet
 - (ATM device) close is now only invoked after a successful open
 - the SUNI_GETLOOP ioctl now has an int * argument (was unsigned long *)
 - uPD98402 driver no longer tries to detect return of the signal (didn't
   work anyway - would have to sample section errors)
 - ATMARP no longer supports mixed PVC/SVC entries (I'm sure this will be
   missed a lot :-)
 - ATMARP no longer supports "IP address discovery" via InARP for PVCs
   (maybe later)
 - specifying an invalid AAL now yields EPROTOTYPE
 - specifying an invalid address family (connect, bind) now yields EAFNOSUPPORT
 - make install  now also installs libraries (in /usr/lib)
 - improved many header file comments
 - re-arranged some comments to simplify automated document generation
 - added copyright statement
 - UNI 3.0 IE fields are now always recognized (but we shouldn't generate them)
 - UNI 3.0 wants octet 5a when using BCOB-X, so we'll set it to twice "No
   indication"
 - aread, awrite, br, bw, ttcp, atmsigd, and atmdump now set max_sdu
 - aread and awrite no longer print strerror(errno) on success


Version 0.4 to 0.5 (26-OCT-1995)
==================

Bug fixes
---------

 - now only root can open a CLIP socket (thereby creating an IP interface)
 - now only root can issue CLIP_NULENCAP and CLIP_LLCENCAP ioctls
 - atmdump: forgot  default  in getopt switch
 - eni driver: called misc_int on every interrupt
 - Q.2931 message description: various fixes and improvements
 - linux/atm.h: ATM_*_UNSPEC used the same value as ATM_*_ANY, oops !
 - SSCOP is now more careful about not accessing the descriptor if it might
   possibly have been deleted
 - typo in SSCF leading to wrong response to AA-RECOVER.indication
 - SSCOP now correctly copies N(PS) from POLL to STAT PDUs
 - SSCF now discards data when not ready instead of issuing a fatal error
 - AAL initialization failure no longer leaks memory
 - closing an SVC without VCC no longer yields a GPF

New features
------------

 - ZN1221 driver is starting to work
 - new, ARP-based mechanism for IP over ATM (with atmarpd, atmarp, etc.)
 - /proc/atm/pvc now displays more information for CLIP PVCs (after a patch
   by Raghavan Menon)
 - added max_pcr to struct atm_trafprm (also fixed a few comments in atm.h)
   Note: all programs using sockaddr_atm* will have to be recompiled.
 - qgen now handles value lists in named selections
 - signaling now supports bhli/blli, plus various other minor extensions
 - new ioctls to set/get local ATM address
 - added library with address to/from text conversion functions
 - finally implemented getname()

Other changes
-------------

 - eni driver: avoided potential generation of superfluous code if extended
   debugging is disabled
 - eni driver: detects new boards using ASIC PCI chip (doesn't support them
   yet, though)
 - qgen: semicolon is now comment character and no longer used to terminate
   clauses
 - qgen: replaced term "item" with "field"
 - linux/include/atmsap.h: removed obsolete comment "protocol cannot be fully
   encoded in current structure". Also re-arranged some comments to simplify
   automated document generation.
 - saal,sscf,sscop: callbacks don't pass the pointer to the descriptor of the
   calling protocol anymore
 - SSCOP no longer prints a number for non-'V' errors
 - improved handling of STATUS messages
 - select now indicates ready for writing if max_sdu packet can be enqueued
   without blocking
 - select can now also be used to check status of non-blocking connect
 - moved some common demon functions from sigd into a common demon library


Version 0.3 to 0.4 (27-SEP-1995)
==================

Bug fixes
---------

 - various minor documentation fixes
 - clip.c:atm_push_clip now updates statistics before forwarding the skb to
   the upper layer (which may free and overwrite the skb)

New features
------------

 - added partial UNI 3.x signaling
 - added various adapter debugging programs to the distribution
 - new config option CONFIG_ATM_ENI_DEBUG to enable extended debugging
   in eni driver

Other changes
-------------

 - upgraded to kernel version 1.3.24
 - changed the distribution directory structure (programs are now in maint/,
   test/, ip/, debug/, and sigd/, see INSTALL)
 - ATM interfaces are no longer named, only numbered. This affects the
   ATM_GETNAMES ioctl, all ioctls using struct atmif_sioc, the usage of atmdiag
   and sonetdiag, and various diagnostic kernel messages.
 - ATM socket state is now recorded in field "flags" (this also replaces the
   SVC fields "released", "registered", and "state")
 - added #ifdef __KERNEL__ to some header files
 - added "int immed" argument to send_oam
 - some minor modifications to the distribution process (mkdist)
 - removed devmap.c
 - SVC sockets no longer hang if the signaling demon dies


Version 0.2 to 0.3 (8-SEP-1995)
==================

Bug fixes
---------

 - select(2) didn't work (was sleeping on sock->wait instead of
   &ATM_SD(sock)->sleep)
 - ENI driver did allow binding to VPI/VCI already in use
 - ENI driver now properly handles PDUs with CRC errors
 - ENI driver had race condition when discarding PDUs causing new PDUs to be
   shifted in adapter memory by one word (which confused the driver quite a
   bit)
 - ENI driver now enables VC _after_ setting all pointers (caused crashes if
   data was already coming in while opening VC)
 - various bugs fixes related to SVC sockets
 - fixed GPF (in kernel) when running atmdiag without arguments
 - atmdiag now left-adjusts interface names
 - fixed ttcp.atm crash when not specifying vpi.vci
 - clip_xmit now checks for NULL vcc (e.g. after failure to connect)

New features
------------

 - zatm driver now reads ESI correctly
 - blocking svc_connect is now interruptible
 - atmdump now also displays the numeric PTI value of incoming cells
 - added RX/TX buffer quotas (default is 64 kB)
 - added OAM hooks to device driver interface (but there's no OAM support yet)

Other changes
-------------

 - ENI driver now checks ID field of reassembly buffer descriptors
 - ENI driver now uses vremap
 - ENI driver now prints more useful physical layer type information (e.g.
   "MMF" and "UTP" instead of "UTOPIA")
 - some redesign of the protocol used for signaling between kernel and demon
 - disabled "Grr, servicing VCC twice" message in ENI driver
 - device drivers now have to adapt AAL0 cell header byte order
 - some cleanup in common.c:atm_getsockopt
 - device drivers are now required to use the peek function; protocols now
   must provide it


Version 0.1 to 0.2 (15-AUG-1995)
==================

Bug fixes
---------

 - VCC family field is now correctly set to protocol family in
   common.c:atm_create (was pvc.c:pvc_create). With protocol set to zero,
   this created all types of strange problems, because the family field
   is used to indicate whether an VCC slot is busy/free.
 - fixed race condition in common.c:atm_read (reader might have blocked
   even if data is ready)
 - fixed dereferencing of uninitialized skb->dev pointer in
   clip.c:atm_push_clip
 - SIOCSIFATMTCP now refuses to attach the same socket twice
 - zatm.c: fixed setting of the VPI/VCI mask
 - USAGE said ttcp uses -B for the bandwidth, but it's -P
 - mkdist didn't include man pages

New features
------------

 - added some /proc/atm functionality
 - added support for ATM_{VPI,VCI}_ANY
 - SIOCSIFATMTCP now returns the interface number and atmtcp(8) prints it
 - wrote atmtcp man page
 - added kernel part of SVC support

Other changes
-------------

 - common.c: only root is now allowed to bind to reserved VCIs
 - Classical IP interfaces are now removed by downing by ifconfig; clip(8)
   returns immediately
 - PVC-connect for non-existing device now returns ENODEV instead of EINVAL
 - new field (type) in struct atm_dev to indicate device type
 - moved getsockopt(SO_CIRANGE) to common.c (removed atmtcp's own version)
 - added ci_range to struct atm_dev (and removed it from atmtcp's private
   structure)
 - added code to read the ESI to zatm.c (but that code doesn't seem to work
   yet)
