
Change Log for ARCnet ALPHA drivers for Linux
---------------------------------------------

How version numbers work:

	0 . 4  2
	|   |  |
	|   |   \-- Buglevel - increased on bugfix releases.
	|   |
	|    \-- Subversion - increased on rewrites or new features.
	|
	 \-- Major version 0 - still in testing phase.


	** = major rewrites, new features, and possible danger!
	
0.42: (bug fixes)
	- Thanks to Michael Chastain <mec@shell.portal.com> for pointing out
          a small bug in the snarf_region macro (which is now
          request_region, by the way)
        - Fixed a small bug (I hope) that caused lockups at random times,
          but not very often.
        - Updated patch file for kernel 1.1.88.
        - Changed irq= to irqnum= for the module loader (modutils 1.1.87
	  didn't like it?!)
	- Rewrote much of the README file.
	
0.41: (bug fixes, more bug fixes, and then I fixed a few bugs)
	- Changes to the README to reflect many suggestions, especially that
          people should always use arc0 in place of eth0 while reading all
          HOWTO's.
        - arcnet.c did not compile correctly with CAREFUL_XMIT disabled; I
          made a few last-minute changes to 0.40 before releasing and forgot
          to fix this.
        - Net-Tools and Linux Kernel patches removed; Linux 1.1.80 contains
          the ARCnet patches along with arcnet.c from ARCnet 0.32.  To
          upgrade to future versions of ARCnet, just copy over
          drivers/net/arcnet.c.
	- IPX support from Tomasz Motylewski <motylewski@trurl.ch.uj.edu.pl>.
        - Reduced number of apparently useless delays.  (define EXTRA_DELAYS
          at the top of arcnet.c if this causes problems)
        - You can now set the debug level without rebooting using ifconfig
          and the otherwise meaningless "metric" operator.  For example:
		ifconfig arc0 metric 13 down
		/etc/rc.d/rc.inet1
	  will set the debug level to 3 (13 minus 10) and reset the metric
          value to 1 just in case the network layer would get confused.  The
          #defines in arcnet.c list the various values for the debug
          constants.  D_EXTRA (debug level 3) is the default as distributed.
            NOTE: the metric value is only checked when the card is
                  initialized.  This is why you need to do an ifconfig down. 
                  /etc/rc.d/rc.inet1 is the Slackware (and possibly
                  standard) place to put the network initialization which is
                  necessary to bring the card back up with your routing, etc
                  intact.
	- Fixed a nasty bug which caused transmits to be retried
          indefinitely AND lose track of kernel memory.  Ouch!
        - IRQ_TX now marks "unsplit" transmits as complete as soon as
          they are begun, in order to speed up IRQ transmits some more.  I
          finally broke 200k/second!
        - Changed snarf_region to request_region for the new Linux kernel.
	- Loadable module support at last!  Geesh, I should have done this
          before.  What a timesaver!  To use it, apply the included kernel
          patch (back already!), compile the kernel WITHOUT ARCnet support,
          and then type "make modules".  You can then use the insmod command
          to insert linux/modules/arcnet.o.
        - Now using udelay() for delay loops (old version of JIFFER caused
	  lockups when compiling as a loadable module)
	- Improved IRQ autoprobe.  It should work better now, assuming it
          doesn't lock up after status5.  If it does, undefine DANGER_PROBE
          in arcnet.c and e-mail me.  No, I didn't fix the problem with
          NE2000's yet.  Don't ask :)
        - IRQ_TX now works properly and is the new default.

** 0.40: (IRQ-driven XMITs, ping-pong XMITs)
        - Added ping-pong transmit buffers for increased speed.  I should
          have done this long ago, but Joachim's information file finally
          convinced me.
        - Removed video card addresses from autoprobe.  Those were a little
          silly anyway :)
        - Reassembling packets is not aborted if ANY segment that has been
          received is retransmitted.  Before, only the most recently sent
          segment would be allowed.  I don't think anyone actually had
          problems like this, but it seemed more correct than the old way. 
          Thanks to Tomasz Motylewski <motylewski@trurl.ch.uj.edu.pl> for
          pointing this out.
	- Added IRQ-driven transmitter support, which should drastically
          reduce system load and speed up transmission.
          
          Info for this fix came from V.Shergin <vsher@sao.stavropol.su>,
          who sent some very nice ARCnet source code he had been working on,
          and Joachim Koenig <jojo@repas.de>, who sent both source code and
          information.
          
          I was handling the IRQ mask register incorrectly.
          
          This option is disabled by default due to some small problems.

0.32: (bug fixes) - included in Linux kernel 1.1.80!
	- Fixed bug that caused lockups when CAREFUL_XMIT fails (ie. a
	  system on the network suddenly goes down or a cable is unplugged). 
          CAREFUL_XMIT, in a fit of carefulness, would retry forever or
          until the target system responded, which reduced system
	  performance to, well, zero.
        - Removed annoying (and scary) messages like "IRQ ignored" in the
          D_INIT debug level.  This was basically done by adding a new debug
          level, D_EXTRA, and moving them to that.  Note: these messages
          happened to everyone and were really nothing to worry about.
        - Made the timer handler (8 times a second) a configurable option,
          disabled by default.  It doesn't seem to be necessary any more.
          Do check the options near the top of arcnet.c.  You might like
	  them.
	- I forgot to include the promised patch to arcether.asm.  It's
	  here now.
	- Received sequence numbers are now handled "correctly" - assembly
          is aborted if the sequence numbers in the segments of a split
          packet are not all the same.  The RFC doesn't really explain what
          to do, but this seems to be the accepted standard.
	- The patch for Linux 1.1.56 has been removed.  Use a newer version
          of Linux.
        - The extreme death warning from 0.30 has been cancelled.  0.32
          fixes all dangerous bugs and puts us well on our way to BETA and
          inclusion in the kernel archive itself.  See the top of arcnet.c
          for existing to-do's.
	
0.31: (bug fixes)
	- Oops!  We were doing sequence numbers incorrectly.  We should
	  be incrementing them on every new complete packet, NOT every
	  segment of a split packet.  ARCether and friends died silently
	  on every split packet we were sending.  I don't know how I missed
	  this...
	
** 0.30: (packet splitting, cleanups, reorganizations, bugfixes)
	- Packet splitting introduced.  This may still be buggy, since I
          had to rewrite a LOT of the code for this to work.  To disable
          packet splitting, manually set an MTU of 510, ie:
	  	ifconfig arc0 HOSTNAME mtu 510
	- The default MTU is now 1500, the same as an ethernet.  You can set
          it higher or lower as desired, up to Linux's maximum of 3800. 
          Anything bigger than 1500 seems to confuse DOS.  The driver itself
          should be able to handle 8k packets without trouble. (really big
          NFS blocks, for instance, seem to work)
	- Debug levels are a little shorter.  DEBUG_INIT, etc, are now
          D_INIT, etc, and there is a new macro to shorten the code a bit. 
          This shouldn't affect anyone but me, really.  Also made a macro
          to save typing while printing debug info :)
        - Packet dumps (D_TX and D_RX) now display the WHOLE packet being
	  sent, including whitespace.
	- Increased reset/transmit command delays, as J.S. van Oosten
	  <jvoosten@compiler.tdcnet.nl> was having troubles.
	- Included patch to ARCether's source code (for DOS).  Mail me if
	  you need the binary... I'll send this patch to the author of
	  arcether if a few people can verify that it works correctly. 
	  The original patch was by Stephen A. Wood <saw@cebaf.gov>, and I
	  modified it slightly (commented out a line instead of deleting).
	  BTW, get ARCether and other packet driver source code from:
	  	oak.oakland.edu:/pub/msdos/pktdrvr
	- More great card info from Juergen Seifert <seifert@htwm.de>, this
	  time for the CNet CN160-series boards, as well as some 8/16 bit
	  noname cards.
	- Linux 1.1.46 kernel patch removed.  Get a newer kernel, since they
          have LOTS of bug fixes, including changes to NFS.
        - Made a patch for Linux net-tools-1.1.56 to add direct Linux
          support.  This isn't included here; it was posted to the mailing
          list and should be included in the next release of net-tools.

0.22: (bug fixes)
       	- The ARCnet patch wasn't actually changed, even though there were
          two versions (exactly the same) in 0.21.  Oops?
        - Files renamed, and this history moved out of arcnet.c into a
	  separate file.
	- Gee, I feel silly.  When 0.21 added all those extra probe
	  addresses, I forgot the last "0" in each one!  Fixed that...
	- Truckloads and oodles of thanks to Juergen Seifert
          <seifert@htwm.de> for his VERY complete information about
          PC130, PC500, and CN120 boards.  I'm starting to feel guilty
          because all I did was write the driver! :)
        - Added info about IPX and Appletalk packets to the driver.  We
          don't support them, just ignore them (I don't think Linux knows
          what to do with them).  I'll look into this deeper later.  Thanks
          to Juergen for this.
        - Messages about "unrecognized packet" are only shown for
          DEBUG_DURING and higher.  Juergen noticed that it was causing
	  annoyances with IPX.
	- patch to net/inet/arp.c changed to include a #ifdef for
          CONFIG_AVE_ARCNET.  If you care about this (it will leave out
          about five lines of code if you don't use arcnet support after
          installing this patch, which is silly in itself) you might want to
          reapply the patch as listed in README.  Otherwise don't bother.
	- DEBUG_TX and DEBUG_RX output improved slightly thanks to Lutz
                Donnerhacke <lutz@as-node.jena.thur.de>
        - We have a mailing list at last!  Read README for details on how to
          subscribe.


0.21: (bug fixes)
       	- "addr[0]=D1h (not D1h)" bug fixed.  I feel silly!
       	- ARP faking - for ARCETHER and various stupid TCP/IP DOS programs
          that insist on sending the address '00h' as the source in ARP
          packets... if we get one of those, we change it to the proper
          value.
       	- Patch for net/inet/arp.c removed from the ARCnet patch, since it
          was just incorporated into Linux 1.1.56.
       	- Probing more addresses because they're actually supported by some
          PUREDATA cards.  Thanks to Mark Rejhon <mdrejhon@magi.com> for
          sending in this info.
	- Decreased timing delay.  We check ARCnet status for "stuckness" 8
          times a second now.
        - tsx-11.mit.edu is now a secondary distribution site for the
	  drivers.
        

** 0.20: (ping-pong receive buffers, bug fixes)
       	- Added ping-pong receive buffers in order to (hopefully) reduce
          network packet loss.  Seems to work!
      	- DIDN'T add ping-pong _transmit_ buffers, because that would
          probably INCREASE packet loss!
       	- Increased time for "Waiting for reset..." to hopefully fix some
          troubles with 16-bit cards on fast computers.
       	- Changed some variable names to make more sense.
       	- Found the problem that reduced transfer speeds: it was the
          debugging code that filled I/O buffers with 0x42 to make them
          cleaner for packet dumps.  This is now only enabled for
          DEBUG_DURING and higher.  70k/sec ftp again!
        - Various IRQ handler, transmitter, etc improvements to try to
          reduce ARCnet locks.  Succeeded somewhat, but not completely.
        - Reduced total time needed to reset the card.  Hopefully this won't
          break anything... (it works for me!)
	- Added a timer (2 times a second) which should recover us if we
          miss a receive IRQ.

0.15: (bug fixes)
       	- Update jumpers.txt for more cards (thanks everyone!)
       	- Change order of autoprobe so "suggested" values are first
       	- Fixed freeze-up bug?! - nope, guess not.
        	
0.14: (bug fixes)
       	- Include jumpers.txt, a description of ARCnet jumper and IRQ
          settings. (only lists PC100 for now)
       	- Autoprobe now scans all possible (I think) I/O and Memory
          addresses for the PC100 card, and hopefully all others.
        - Thanks to John Paul Morrison <jmorriso@bogomips.ee.ubc.ca> for the
          patches to use arc0 instead of eth0, and for noticing that I
          forgot to patch the config.in file...

0.13: (bug fixes)
      	- Autoprobe should now detect IRQ's better. (I hope!)
        - If you *disabled* shared-memory autoprobe by giving values with
          lilo or by changing Space.c, we'd cause a null-pointer assignment
          and, needless to say, the driver wouldn't work.
        - Okay, resetting the card lots again because at least it worked
          that way... we started having bigger problems, because if
          something broke the card wouldn't reset...(sigh)
          ...of course, the best solution is still to fix the weird
          packet-dropping stuff.  Maybe ping-pong buffers...

0.12: (bug fixes)
      	- Added this change history.
       	- Now an actual release, with instructions and everything :) Also
          includes a patch now, because the changes to other files in the
          kernel were getting a little hard to explain.
       	- Fixed a bug with exception packets that caused 224-byte pings (and
          so, some other size of generic packets) to be blocked.
        
0.11: (bug fixes, ARCether-compatible, slowdown)
       	- Silly bug fixed which caused ClientData header to be an extra byte
          long (I can't BELIEVE I was that close to arcether and didn't
          notice). By the way, are structs SUPPOSED to round their sizes to
          the nearest 16 bits?
	- The driver now correctly reports its hardware type as
          ARPHRD_ARCNET, instead of ARPHRD_ETHER (we needed to patch
          net/inet/arp.c for this, though)
	- I think I reduced the number of card resets.  Maybe.
	- Something I did dropped FTP speed to 50k/s.  Hmm...
	
** 0.10: (bug fixes, major rewrite)
	- MANY changes towards arcether-for-DOS compatibility, but we still
          haven't quite made it (sigh).
	- My close examination of arcether.c made me notice the need for
          "exception" packets - turns out this is the primary reason for
          most of the lost/corrupted packets.
	- NFS now works (relatively) if you set your block size to about 400
          or so (although 200 seems a little more reliable)
	- First public announcement...

0.02: (MANY bug fixes)
	- It seems we were only noticing received packets when we sent one. 
          Or was it the other way around?  In any case, that slowed our
          thruput by a LOT - now we're up to about 70k/sec FTP or so.
	- Far too much else to remember, let alone describe.
	  
0.01: (initial release)
	- Only e-mailed to one person, who (probably luckily for him)
          couldn't figure out how to install it.
