This file should be prepended to each time a release is made.

Date:            Sept 30, 2003
Version:         1.8
Kernel Version:  2.4.21+
Changes:         Compile fixes for newer gcc, VLAN rework, inclusion of entire
                 Candela Technologies kernel networking patch (MAC-VLANs too).

Date:            March 11, 2003
Version:         1.7
Kernel Version:  2.4.14+
Changes:         Added Alex's MAC-Vlan code to the repository.  See README for more.


Date:            March 24, 2002
Version:         1.6
Kernel Version:  2.4.14+
Changes:         Removed 2.4 kernel patch from VLAN distribution..it's now in the
                 standard linux kernel.  Other updates include vconfig changes
                 to fix some compile problems, and to enable cross-compiling to
                 ARM (this assumes you are using the Intrinsyc cross-compiler in
                 it's standard location).


Date:            Oct 20, 2001
Version:         1.5
Kernel Version:  2.4.12-pre5
Changes:
                 Mostly added other peoples fixes and patches (thanks folks!)
                 Finally fixed mc-list leakage (Ard van Breemen)
                 Flush mc-list at vlan-destory (Ard van Breemen)
                 Add vconfig man page to distribution (Ard van Breemen)
                 Fix problem with /proc and renaming VLAN devices (af AT devcon D.T net)
                 Add relatively large change by Nick Eggelston that makes VLAN
                    devices more transparent to tools like tcpdump and other raw
                    packet snoopers.  This will only be enabled when the REORDER_HDR
                    flag is set.


Date:            August 16, 2001
Version:         1.4
Kernel Version:  2.4.9-pre4
Status:          Should be stable, but a decent amount of rework went into
                 this one...
Changes:         
                 Code should no longer require /proc interface in order to
                 get at the IOCTLs. The IOCTLs are now tied to sockets.
                 When using modules, it may auto-load now, too...

                 Fixed format string error in proc fs display.

                 Fixed crash bug relating to memory allocation with locks
                 held (we now use GF_ATOMIC).

                 hard_start_xmit will now grow the packet header if there
                 is not enough headroom.  This may fix an MPLS-over-VLAN problem,
                 though the real solution is to make MPLS allocate
                 more headroom anyway...

                 vconfig was changed to use the new IOCTL API, and the old
                 vconfig WILL NOT WORK with this or any newer patches...


Date:            August 5, 2001
Version:         1.0.3
Kernel Version:  2.4.7
Status:          Should be stable, but a decent amount of rework went into
                 this one...
Changes:         
                 Re-worked code to comply with linux network code gurus'
                 wishes.  This included several boundary case fixes, including
                 some that could crash your kernel.

                 The default naming scheme is eth0.5 now, for VID == 5 on
                 eth0.  Use vconfig to change the naming scheme if you want.

                 There were *NO* changes to the 2.2 series patch, and there
                 probably won't be any more changes to it, ever!


Date:            April 16, 2001
Version:         1.0.1
Kernel Version:  2.2.18/19, 2.4.3-pre3
Status:          Very similar to 1.0.0, should be relatively stable.
Changes:         
                 Incorporated a fix for changing a MAC on a VLAN, it now
                 correctly sets PACKET_HOST.
                   Thanks to Martin Bokaemper for this one.

                 The 2.4 series patch should now compile as a module, thanks
                 to a tweak from someone who's mail I have lost!  Anyway, 3
                 cheers to the un-named coder!

                 There were *NO* changes to the 2.2 series patch, though I did
                 verify that it seems to work fine with the 2.2.19 kernel.



Date:            January 14, 2001
Version:         1.0.0
Kernel Version:  2.2.18, 2.4.0
Status:          Fairly similar to 0.0.15, should be relatively stable.
Changes:         

		 Really fixed (and tested) MAC change-ability. When you set the
        	 MAC address on a VLAN, it will also attempt to set the underlying
        	 device to PROMISCious mode (otherwise, the VLAN will not
        	 receive any packets.) 

	         Hashed-device lookup is disabled by default because some people
        	 had trouble with the 'lo' device. Please feel free to re-enable by
        	 editing the line in net/core/dev.
                 (search for #define BEN_FAST_DEV_LOOKUP). 

	         vconfig should warn when creating VLAN 1, because that VLAN is
        	 not compatible with many switches.


Date:            December 31, 2000
Version:         0.0.15
Kernel Version:  2.2.18, 2.4.prerelease
Status:          This one is pretty fresh..beware, especially the 2.4 patch.
Changes:         

		 Merged most of Matti Aarnio's patches. This means no significant patch
                 to eth.c now, and will help port VLANs to non-ethernet devices
                 (ie ppp, TokenRing??).

                 Setting the MAC address should work now..I think it was broken before.

                 Miscellaneous code re-organization to make patches to existing files smaller. 


Date:            October 26, 2000
Version:         0.0.14
Kernel Version:  2.2.17, 2.4.pre9
Status:          Seems stable.
Changes:         
		 Removed vlan-space-per-machine, so vlan-space-per-NIC is mandatory now.

   		 DHCP might work now, as I've added support for encapsulating regular ethernet
       		 frames if they are sent to the vlan driver.

  		 Fixed up the name/index hashing stuff to handle changing the name on a device.

   		 Took out default VID & default priority, as their usefullness was in question,
                 and the code was broken anyway.


Date:            October 11, 2000
Version:         0.0.13
Kernel Version:  2.2.17, 2.4.pre9
Status:          BUSTED!!  Don't use it.
Changes:         
	        Added support for MULTICAST to the VLAN devices. Thanks to
	        Gleb & Co for most of that code. 
        
	        Added the ability to set the MAC address on the VLAN. For now,
	        you'll either need to set your Ethernet NIC into PROMISC mode, or
		maybe figure out some multi-cast ethernet address to set on the
		NIC. This has not been tested well at all. 
        
	        Added a hashed device-name lookup scheme. This greatly speeds
	        up ifconfig -a. I was able to run an ifconfig -a in 20 seconds on a
	        Celeron 500, with 4000 vlan devices configured!! 
        
	        Added vlan_test.pl to help me find dumb bugs. Feel free to make this
	        much more powerful, and send the code back to me! 
        
	        vconfig.c has been converted to C code now, instead of C++.
	        Thanks to MATHIEU. 
        
	        Significantly cleaned up the code w/out decreasing any useful
	        functionality, I believe.

		Removed the dhcp stuff from the VLAN distribution.


Date:            August 27, 2000
Version:         0.0.12
Kernel Version:  2.2.16, 2.4.pre7
Status:          This one turned out pretty stable, no known bugs.
Changes:         

  		Added ability to re-order the VLAN packet so that it looks
		like a real ethernet packet for the ingress pathway.  This
		should help DHCP and other programs that insist on reading
		the raw buffer and then make assumptions about byte offsets.
		I don't have a good way to test this fully, so consider it
		experimental :)  This behavior can be changed at run-time,
		and is set on a per-VLAN basis.  The default is NOT to reorder
		the header, which has been the only behavior up untill this
		point.  The vconfig program can set/clear the flag, by using
		a VLAN IOCTL.  You can read the flag's value from  the
		/proc/net/vlan/vlan* files.
		
		You can also set a default priority on a NON-VLAN device.
		This priority will only be used when the default_VID for the
		device is set as well.  This priority won't be mapped anywhere,
		just copied straight into the skb->priority.  It is a uint16.

		The 2.3 patch is now the 2.4 patch, and it has been tested
		against 2.4.pre7.


Date:            April 23, 2000
Version:         0.0.11
Kernel Version:  2.2.13 & 2.2.14, 2.3.99
Status:          As of August 27, this seems like a very stable patch.
Changes:         
		 Added real support for PRIORITY.  Through IOCTL calls (see the
		 vconfig program), you can set explicit ingress and egress mappings
		 to/from the VLAN QOS bits and the sk_buff->priority field.  This
		 is not tested very well, as I don't know much about how people really
		 use the priority field...  Took out the round-robin aggretation that
		 went in in rls 0.10, as it was mainly just a hack, and doing link
		 aggregation at a lower level and then putting VLAN on top of that
		 virtual device probably makes more sense.  The vconfig program
		 changed to support the new features..here's it's new usage:<br>

	Usage: add             [interface-name] [vlan_id]
	       rem             [vlan-name]
	       set_dflt        [interface-name] [vlan_id]
	       add_port        [port-name]      [vlan_id]
	       rem_port        [port-name]      [vlan_id]
	       set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos]
	       set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos]
	       set_name_type   [name-type]
	       set_bind_mode   [bind-type]

	* The [interface-name] is the name of the ethernet card that hosts
	  the VLAN you are talking about.
	* The port-name is the name of the physical interface that a VLAN
	  may be attached to.
	* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
	* skb_priority is the priority in the socket buffer (sk_buff).
	* vlan_qos is the 3 bit priority in the VLAN header
	* name-type:  VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
	              DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
	* bind-type:  PER_DEVICE  # Allows vlan 5 on eth0 and eth1 to be unique.
	              PER_KERNEL  # Forces vlan 5 to be unique across all devices.

 		 The 2.3 patches have been ported foward to 2.3.99, thanks to
		 Patrick for the vlanproc.c updates!



Date:            February 26, 2000
Version:         0.0.10
Kernel Version:  2.2.13 & 2.2.14, 2.3.47
Status:          Added several new features in the critical path...beware!
Changes:         
  		 Added support for PRIORITY.  The way it works is that the lower
		 3 bits of the skb->priority are set into the PRIORITY field in
		 the VLAN header.  No special handling is done with priority,
 		 but it should be handled by other switches and such.  This has
		 not been tested, but the default case (no priority in the skb)
		 seems to work at least.

 		 The big change is that you can now aggregate several ethernet
		 ports in a single VLAN.  The packets will be transmitted in a
		 round robin fashion.  In order for this to work, you have
		 to change the MAC addresses on all cards to the same thing,
		 and put the cards in promiscious mode (because most drivers don't
		 __really__ honor the request to set the MAC all the way to
 		 the NIC.  This works with two different speed NICs, but I think
		 it will only be really useful if they are the same speed.  Here
		 is how I set them up in my test environment:

	        ifdown eth1
	        ifconfig eth1 hw ether 00:40:05:41:00:5e  # This is the MAC of eth0
	        ifup eth1
	
	        ifconfig eth1 promisc

	        /usr/local/bin/vconfig add eth0 5
	        /usr/local/bin/vconfig add_port eth1 5
	        ifconfig vlan0005 192.168.2.1

	  On my other machine, I have this:
	        ifdown eth1
	        ifconfig eth1 hw ether 00:48:54:66:68:68  # This is the MAC of eth0
	        ifup eth1

	        ifconfig eth1 promisc

	        /usr/local/bin/vconfig add eth0 5
	        /usr/local/bin/vconfig add_port eth1 5
	        ifconfig vlan0005 192.168.2.3

		 Note that there are now two patches, one for the 2.2 series,
		 and one for the 2.3 series.


Date:            February 6, 2000
Version:         0.0.9
Kernel Version:  2.2.13 & 2.2.14
Status:          Mostly solid.  May be issues with adding/removing, but it
                 works at least most of the time.
Changes:         Changed the way vlan names are created:  They now have the
                 VID in the name.  You can revert to the old behavior by
                 changing an #define in the 802_18/vlan.h file.  Changed
                 the destruction process for vlans.  Not sure if this fixed the
  		 kernel lock problem I found while adding/removing VLAN devices,
                 and also hacking with DHCP, but the problem seemed to go away.
		 Added patch to dhcp to allow it to work with VLANs.  However,
                 I don't grok DHCP as well as might be desired, so use at your
                 own risk!!  Added some debugging code (you have to compile
                 it in if you need it)
		 

Date:            December 22, 1999
Version:         0.0.8
Kernel Version:  2.2.13+
Status:          ARP seems to fail in certain cases (but not on my machines.)
Changes:         Fixed compile warnings and a linking problem due to #ifdef's.
		 No major changes in functionality or performance.

Date:            December 5, 1999
Version:         0.0.7
Kernel Version:  2.2.13+
Status:          ARP seems to fail in certain cases (but not on my machines.)
		 Several (many?) ethernet drivers can't handle the extra 4 bytes
		 of VLAN, so the MTU on the network may have to be set to 1496,
		 or fix the ethernet drivers!!
Changes:         Re-wrote the /proc code to never go above 4k buffers.  This means
		 that each port now has it's own file entry.  Fixed crash bug with
		 removing VLAN devices.  Byte and pkt counters are now updated correctly,
		 and are found in the /proc/net/vlan/<device> file.


Date:            October 20, 1999
Version:         0.0.6
Kernel Version:  2.2.10+
Status:          ping -f still kills one of my machines, but it takes longer...and I'm
		 not sure if its the fault of the VLAN code, or maybe some hardware problem.
Changes:         Coded around an extraneous skb alloc/free so that there should be no
                 extra buffer copying as compared to an ethernet interface, unless the
		 vlan device spans more than one interface.  Put #ifdef around all printk
		 debugging calls, at least for non-control code (ie no more printk in the
		 critical paths.)


Date:            October 19, 1999
Version:         0.0.6
Kernel Version:  2.2.10
Status:          Ping & FTP work, ping -f kills it after some time...not sure why yet.
Changes:         Got tcpdump working with VLAN pkts (use the -e option).  Got basic VLAN
		 functionality working, though problems remain, including a KERNEL CRASH
		 that can be induced by ping -f on one of the vlan interfaces.  My test
		 setup consists of two linux boxes, each running my modified kernel.
		 Since I have no third-party implementation to test against, it is likely
		 the code is not too right yet!!
		 Performance isn't all that great:  Running a Cyrix 155 <-> a Cyrix 233,
		 connected through a 10bt hub, I get 910 Mbps on regular ethernet,
		 and only 650 Mbps on the VLAN device.  This was using a 30 MB file.


Date:            Long time ago.
Version:         0.0.3
Kernel Version:  2.2.2
Status:          Definately broken, but lots of code in there!!
Changes:         Initial partially functional release (not very functional.)
