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