Summary of network stack locking changes in FreeBSD 7.0 - Support for non-MPSAFE network protocols has been fully eliminated, removing debug.mpsafenet and the NET_*_GIANT() macros (rwatson) - Network stack now uses direct dispatch from the ithread for input processing by default, doing execution to completion in the stack up to the socket layer without a context switch (rwatson) - FAST_IPSEC now supports IPv6, allowing KAME IPSEC to be removed (gnn, bz) - i4b, ng_h4, IPX over IP tunneling, and netatm have been removed as non-MPSAFE (bz, maxim, rwatson) - Firewire is now MPSAFE (simokawa) - Several locking and scheduling primitives have been heavily optimized leading to systemic performance improvements and more uniform use of central locking primitives instead of worse-performing custom primitives (attilio, jeff) - The NFS client is now MPSAFE (mohans) - Heavily cleaned up socket layer, including optimized sosend for datagrams and stream sockets (rwatson, andre) - Optimized sendfile(2) implementation (andre) - Optimized sx(9) locks for socket buffer I/O serialization, file descriptor array (rwatson) - TSO, LRO support (jvogel, andre, gallatin) - Fine-grained UNIX domain socket locking (rwatson) - Socket/pcb reference model cleaned up, invariants strengthed, global lock acquisition greatly reduced from socket path for TCP, UDP (rwatson) - Giant removed from fcntl(2) path (jeff) - Extensive benchmarking and profiling (kris) - Scheduler optimization and cleanup (jeff) - aio(2) MPSAFE (davidxu) - BPF(4) now MPSAFE for the system call path (csjp) - pfil(4) now uses rwlock(9) for improved performance over a custom lock primitive (csjp) - New SCTP(4) protocol uses fine-grained locking throughout (rrs) - Syncache locking broken out from regular TCP locking (andre)