1This file should be prepended to each time a release is made.
2
3Date:            March 24, 2002
4Version:         1.6
5Kernel Version:  2.4.14+
6Changes:         Removed 2.4 kernel patch from VLAN distribution..it's now in the
7                 standard linux kernel.  Other updates include vconfig changes
8                 to fix some compile problems, and to enable cross-compiling to
9                 ARM (this assumes you are using the Intrinsyc cross-compiler in
10                 it's standard location).
11
12
13
14Date:            Oct 20, 2001
15Version:         1.5
16Kernel Version:  2.4.12-pre5
17Changes:
18                 Mostly added other peoples fixes and patches (thanks folks!)
19                 Finally fixed mc-list leakage (Ard van Breemen)
20                 Flush mc-list at vlan-destory (Ard van Breemen)
21                 Add vconfig man page to distribution (Ard van Breemen)
22                 Fix problem with /proc and renaming VLAN devices (af AT devcon D.T net)
23                 Add relatively large change by Nick Eggelston that makes VLAN
24                    devices more transparent to tools like tcpdump and other raw
25                    packet snoopers.  This will only be enabled when the REORDER_HDR
26                    flag is set.
27
28
29Date:            August 16, 2001
30Version:         1.4
31Kernel Version:  2.4.9-pre4
32Status:          Should be stable, but a decent amount of rework went into
33                 this one...
34Changes:         
35                 Code should no longer require /proc interface in order to
36                 get at the IOCTLs. The IOCTLs are now tied to sockets.
37                 When using modules, it may auto-load now, too...
38
39                 Fixed format string error in proc fs display.
40
41                 Fixed crash bug relating to memory allocation with locks
42                 held (we now use GF_ATOMIC).
43
44                 hard_start_xmit will now grow the packet header if there
45                 is not enough headroom.  This may fix an MPLS-over-VLAN problem,
46                 though the real solution is to make MPLS allocate
47                 more headroom anyway...
48
49                 vconfig was changed to use the new IOCTL API, and the old
50                 vconfig WILL NOT WORK with this or any newer patches...
51
52
53Date:            August 5, 2001
54Version:         1.0.3
55Kernel Version:  2.4.7
56Status:          Should be stable, but a decent amount of rework went into
57                 this one...
58Changes:         
59                 Re-worked code to comply with linux network code gurus'
60                 wishes.  This included several boundary case fixes, including
61                 some that could crash your kernel.
62
63                 The default naming scheme is eth0.5 now, for VID == 5 on
64                 eth0.  Use vconfig to change the naming scheme if you want.
65
66                 There were *NO* changes to the 2.2 series patch, and there
67                 probably won't be any more changes to it, ever!
68
69
70Date:            April 16, 2001
71Version:         1.0.1
72Kernel Version:  2.2.18/19, 2.4.3-pre3
73Status:          Very similar to 1.0.0, should be relatively stable.
74Changes:         
75                 Incorporated a fix for changing a MAC on a VLAN, it now
76                 correctly sets PACKET_HOST.
77                   Thanks to Martin Bokaemper for this one.
78
79                 The 2.4 series patch should now compile as a module, thanks
80                 to a tweak from someone who's mail I have lost!  Anyway, 3
81                 cheers to the un-named coder!
82
83                 There were *NO* changes to the 2.2 series patch, though I did
84                 verify that it seems to work fine with the 2.2.19 kernel.
85
86
87
88Date:            January 14, 2001
89Version:         1.0.0
90Kernel Version:  2.2.18, 2.4.0
91Status:          Fairly similar to 0.0.15, should be relatively stable.
92Changes:         
93
94		 Really fixed (and tested) MAC change-ability. When you set the
95        	 MAC address on a VLAN, it will also attempt to set the underlying
96        	 device to PROMISCious mode (otherwise, the VLAN will not
97        	 receive any packets.) 
98
99	         Hashed-device lookup is disabled by default because some people
100        	 had trouble with the 'lo' device. Please feel free to re-enable by
101        	 editing the line in net/core/dev.
102                 (search for #define BEN_FAST_DEV_LOOKUP). 
103
104	         vconfig should warn when creating VLAN 1, because that VLAN is
105        	 not compatible with many switches.
106
107
108Date:            December 31, 2000
109Version:         0.0.15
110Kernel Version:  2.2.18, 2.4.prerelease
111Status:          This one is pretty fresh..beware, especially the 2.4 patch.
112Changes:         
113
114		 Merged most of Matti Aarnio's patches. This means no significant patch
115                 to eth.c now, and will help port VLANs to non-ethernet devices
116                 (ie ppp, TokenRing??).
117
118                 Setting the MAC address should work now..I think it was broken before.
119
120                 Miscellaneous code re-organization to make patches to existing files smaller. 
121
122
123Date:            October 26, 2000
124Version:         0.0.14
125Kernel Version:  2.2.17, 2.4.pre9
126Status:          Seems stable.
127Changes:         
128		 Removed vlan-space-per-machine, so vlan-space-per-NIC is mandatory now.
129
130   		 DHCP might work now, as I've added support for encapsulating regular ethernet
131       		 frames if they are sent to the vlan driver.
132
133  		 Fixed up the name/index hashing stuff to handle changing the name on a device.
134
135   		 Took out default VID & default priority, as their usefullness was in question,
136                 and the code was broken anyway.
137
138
139Date:            October 11, 2000
140Version:         0.0.13
141Kernel Version:  2.2.17, 2.4.pre9
142Status:          BUSTED!!  Don't use it.
143Changes:         
144	        Added support for MULTICAST to the VLAN devices. Thanks to
145	        Gleb & Co for most of that code. 
146        
147	        Added the ability to set the MAC address on the VLAN. For now,
148	        you'll either need to set your Ethernet NIC into PROMISC mode, or
149		maybe figure out some multi-cast ethernet address to set on the
150		NIC. This has not been tested well at all. 
151        
152	        Added a hashed device-name lookup scheme. This greatly speeds
153	        up ifconfig -a. I was able to run an ifconfig -a in 20 seconds on a
154	        Celeron 500, with 4000 vlan devices configured!! 
155        
156	        Added vlan_test.pl to help me find dumb bugs. Feel free to make this
157	        much more powerful, and send the code back to me! 
158        
159	        vconfig.c has been converted to C code now, instead of C++.
160	        Thanks to MATHIEU. 
161        
162	        Significantly cleaned up the code w/out decreasing any useful
163	        functionality, I believe.
164
165		Removed the dhcp stuff from the VLAN distribution.
166
167
168Date:            August 27, 2000
169Version:         0.0.12
170Kernel Version:  2.2.16, 2.4.pre7
171Status:          This one turned out pretty stable, no known bugs.
172Changes:         
173
174  		Added ability to re-order the VLAN packet so that it looks
175		like a real ethernet packet for the ingress pathway.  This
176		should help DHCP and other programs that insist on reading
177		the raw buffer and then make assumptions about byte offsets.
178		I don't have a good way to test this fully, so consider it
179		experimental :)  This behavior can be changed at run-time,
180		and is set on a per-VLAN basis.  The default is NOT to reorder
181		the header, which has been the only behavior up untill this
182		point.  The vconfig program can set/clear the flag, by using
183		a VLAN IOCTL.  You can read the flag's value from  the
184		/proc/net/vlan/vlan* files.
185		
186		You can also set a default priority on a NON-VLAN device.
187		This priority will only be used when the default_VID for the
188		device is set as well.  This priority won't be mapped anywhere,
189		just copied straight into the skb->priority.  It is a uint16.
190
191		The 2.3 patch is now the 2.4 patch, and it has been tested
192		against 2.4.pre7.
193
194
195Date:            April 23, 2000
196Version:         0.0.11
197Kernel Version:  2.2.13 & 2.2.14, 2.3.99
198Status:          As of August 27, this seems like a very stable patch.
199Changes:         
200		 Added real support for PRIORITY.  Through IOCTL calls (see the
201		 vconfig program), you can set explicit ingress and egress mappings
202		 to/from the VLAN QOS bits and the sk_buff->priority field.  This
203		 is not tested very well, as I don't know much about how people really
204		 use the priority field...  Took out the round-robin aggretation that
205		 went in in rls 0.10, as it was mainly just a hack, and doing link
206		 aggregation at a lower level and then putting VLAN on top of that
207		 virtual device probably makes more sense.  The vconfig program
208		 changed to support the new features..here's it's new usage:<br>
209
210	Usage: add             [interface-name] [vlan_id]
211	       rem             [vlan-name]
212	       set_dflt        [interface-name] [vlan_id]
213	       add_port        [port-name]      [vlan_id]
214	       rem_port        [port-name]      [vlan_id]
215	       set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos]
216	       set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos]
217	       set_name_type   [name-type]
218	       set_bind_mode   [bind-type]
219
220	* The [interface-name] is the name of the ethernet card that hosts
221	  the VLAN you are talking about.
222	* The port-name is the name of the physical interface that a VLAN
223	  may be attached to.
224	* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
225	* skb_priority is the priority in the socket buffer (sk_buff).
226	* vlan_qos is the 3 bit priority in the VLAN header
227	* name-type:  VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
228	              DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
229	* bind-type:  PER_DEVICE  # Allows vlan 5 on eth0 and eth1 to be unique.
230	              PER_KERNEL  # Forces vlan 5 to be unique across all devices.
231
232 		 The 2.3 patches have been ported foward to 2.3.99, thanks to
233		 Patrick for the vlanproc.c updates!
234
235
236
237Date:            February 26, 2000
238Version:         0.0.10
239Kernel Version:  2.2.13 & 2.2.14, 2.3.47
240Status:          Added several new features in the critical path...beware!
241Changes:         
242  		 Added support for PRIORITY.  The way it works is that the lower
243		 3 bits of the skb->priority are set into the PRIORITY field in
244		 the VLAN header.  No special handling is done with priority,
245 		 but it should be handled by other switches and such.  This has
246		 not been tested, but the default case (no priority in the skb)
247		 seems to work at least.
248
249 		 The big change is that you can now aggregate several ethernet
250		 ports in a single VLAN.  The packets will be transmitted in a
251		 round robin fashion.  In order for this to work, you have
252		 to change the MAC addresses on all cards to the same thing,
253		 and put the cards in promiscious mode (because most drivers don't
254		 __really__ honor the request to set the MAC all the way to
255 		 the NIC.  This works with two different speed NICs, but I think
256		 it will only be really useful if they are the same speed.  Here
257		 is how I set them up in my test environment:
258
259	        ifdown eth1
260	        ifconfig eth1 hw ether 00:40:05:41:00:5e  # This is the MAC of eth0
261	        ifup eth1
262	
263	        ifconfig eth1 promisc
264
265	        /usr/local/bin/vconfig add eth0 5
266	        /usr/local/bin/vconfig add_port eth1 5
267	        ifconfig vlan0005 192.168.2.1
268
269	  On my other machine, I have this:
270	        ifdown eth1
271	        ifconfig eth1 hw ether 00:48:54:66:68:68  # This is the MAC of eth0
272	        ifup eth1
273
274	        ifconfig eth1 promisc
275
276	        /usr/local/bin/vconfig add eth0 5
277	        /usr/local/bin/vconfig add_port eth1 5
278	        ifconfig vlan0005 192.168.2.3
279
280		 Note that there are now two patches, one for the 2.2 series,
281		 and one for the 2.3 series.
282
283
284Date:            February 6, 2000
285Version:         0.0.9
286Kernel Version:  2.2.13 & 2.2.14
287Status:          Mostly solid.  May be issues with adding/removing, but it
288                 works at least most of the time.
289Changes:         Changed the way vlan names are created:  They now have the
290                 VID in the name.  You can revert to the old behavior by
291                 changing an #define in the 802_18/vlan.h file.  Changed
292                 the destruction process for vlans.  Not sure if this fixed the
293  		 kernel lock problem I found while adding/removing VLAN devices,
294                 and also hacking with DHCP, but the problem seemed to go away.
295		 Added patch to dhcp to allow it to work with VLANs.  However,
296                 I don't grok DHCP as well as might be desired, so use at your
297                 own risk!!  Added some debugging code (you have to compile
298                 it in if you need it)
299		 
300
301Date:            December 22, 1999
302Version:         0.0.8
303Kernel Version:  2.2.13+
304Status:          ARP seems to fail in certain cases (but not on my machines.)
305Changes:         Fixed compile warnings and a linking problem due to #ifdef's.
306		 No major changes in functionality or performance.
307
308Date:            December 5, 1999
309Version:         0.0.7
310Kernel Version:  2.2.13+
311Status:          ARP seems to fail in certain cases (but not on my machines.)
312		 Several (many?) ethernet drivers can't handle the extra 4 bytes
313		 of VLAN, so the MTU on the network may have to be set to 1496,
314		 or fix the ethernet drivers!!
315Changes:         Re-wrote the /proc code to never go above 4k buffers.  This means
316		 that each port now has it's own file entry.  Fixed crash bug with
317		 removing VLAN devices.  Byte and pkt counters are now updated correctly,
318		 and are found in the /proc/net/vlan/<device> file.
319
320
321Date:            October 20, 1999
322Version:         0.0.6
323Kernel Version:  2.2.10+
324Status:          ping -f still kills one of my machines, but it takes longer...and I'm
325		 not sure if its the fault of the VLAN code, or maybe some hardware problem.
326Changes:         Coded around an extraneous skb alloc/free so that there should be no
327                 extra buffer copying as compared to an ethernet interface, unless the
328		 vlan device spans more than one interface.  Put #ifdef around all printk
329		 debugging calls, at least for non-control code (ie no more printk in the
330		 critical paths.)
331
332
333Date:            October 19, 1999
334Version:         0.0.6
335Kernel Version:  2.2.10
336Status:          Ping & FTP work, ping -f kills it after some time...not sure why yet.
337Changes:         Got tcpdump working with VLAN pkts (use the -e option).  Got basic VLAN
338		 functionality working, though problems remain, including a KERNEL CRASH
339		 that can be induced by ping -f on one of the vlan interfaces.  My test
340		 setup consists of two linux boxes, each running my modified kernel.
341		 Since I have no third-party implementation to test against, it is likely
342		 the code is not too right yet!!
343		 Performance isn't all that great:  Running a Cyrix 155 <-> a Cyrix 233,
344		 connected through a 10bt hub, I get 910 Mbps on regular ethernet,
345		 and only 650 Mbps on the VLAN device.  This was using a 30 MB file.
346
347
348Date:            Long time ago.
349Version:         0.0.3
350Kernel Version:  2.2.2
351Status:          Definately broken, but lots of code in there!!
352Changes:         Initial partially functional release (not very functional.)
353