75ee267c22
work by yar, thompsa and myself. The checksum offloading part also involves work done by Mihail Balikov. The most important changes: o Instead of global linked list of all vlan softc use a per-trunk hash. The size of hash is dynamically adjusted, depending on number of entries. This changes struct ifnet, replacing counter of vlans with a pointer to trunk structure. This change is an improvement for setups with big number of VLANs, several interfaces and several CPUs. It is a small regression for a setup with a single VLAN interface. An alternative to dynamic hash is a per-trunk static array with 4096 entries, which is a compile time option - VLAN_ARRAY. In my experiments the array is not an improvement, probably because such a big trunk structure doesn't fit into CPU cache. o Introduce an UMA zone for VLAN tags. Since drivers depend on it, the zone is declared in kern_mbuf.c, not in optional vlan(4) driver. This change is a big improvement for any setup utilizing vlan(4). o Use rwlock(9) instead of mutex(9) for locking. We are the first ones to do this! :) o Some drivers can do hardware VLAN tagging + hardware checksum offloading. Add an infrastructure for this. Whenever vlan(4) is attached to a parent or parent configuration is changed, the flags on vlan(4) interface are updated. In collaboration with: yar, thompsa In collaboration with: Mihail Balikov <mihail.balikov interbgc.com> |
||
---|---|---|
.. | ||
defines | ||
files | ||
files.alpha | ||
files.amd64 | ||
files.arm | ||
files.i386 | ||
files.ia64 | ||
files.pc98 | ||
files.powerpc | ||
files.sparc64 | ||
kern.mk | ||
kern.post.mk | ||
kern.pre.mk | ||
kmod_syms.awk | ||
kmod.mk | ||
ldscript.alpha | ||
ldscript.amd64 | ||
ldscript.arm | ||
ldscript.i386 | ||
ldscript.ia64 | ||
ldscript.powerpc | ||
ldscript.sparc64 | ||
Makefile.alpha | ||
Makefile.amd64 | ||
Makefile.arm | ||
Makefile.i386 | ||
Makefile.ia64 | ||
Makefile.pc98 | ||
Makefile.powerpc | ||
Makefile.sparc64 | ||
makeLINT.mk | ||
makeLINT.sed | ||
newvers.sh | ||
NOTES | ||
options | ||
options.alpha | ||
options.amd64 | ||
options.arm | ||
options.i386 | ||
options.ia64 | ||
options.pc98 | ||
options.powerpc | ||
options.sparc64 | ||
systags.sh |