smp-*.dif.gz are patches wrt vger trees dated by stamps on corresponding patch. Note, that smp-0615 and before fitted to any of 2.3.5-2.3.10, smp-0703 does not. * Before the history started (smp-05.., smp-06..) - Dave relaxes kernel lock in TCP. - start_bh_atomic's become vulnerable. Main ones are removed. (Dave) < Checkpoint: 2.3.4 > - neighbour cache, dev_queue_xmit and packet scheduler... < Last checkpoint: 2.3.6 > - Before removing kernel lock and start of history lots of dirty work inside core/ipv4/ipv6 bowels to clean them of global locks... * smp-0703: "No Kernel Lock" - It clears kernel lock finally. The immediate consequence of this is that all the protocol families but IP, UNIX, IPv6, PACKET and NETLINK become buggy on SMP machines. - UNIX, PACKET and NETLINK are supposed to be free of bugs. IP and IPv6 in the part of forwarding, datagram and raw sockets are also clean. TCP is still buggy a bit, but I hope the bugs are invisible. * smp-0717: "TCP Cleanup" - net_timer is shot finally. To be more exact, now it waits only for FIN-WAIT-2 timeout. TCP socket destruction is made by refcnt. - TCP timers are refcounted. The way for softnet is finally open. I see only one hole now: timewait buckets are safe only if accessed from single threaded net_bh. It may be (???) not true, if packet from backlog on listening socket hits timewait bucket. Practically impossible and, probably, even theoretically impossible without threaded BH. [ NOTE: all this craft was made today in one shot, I cannot believe that I did not miss anything, but this kernel booted after all this massive edit and does not show any leaks all the evening. It's imposiible, but it's truth. 8) I would not release this patch before more careful testing, but this weekend gave chance to test it on our server, where kernel sources are stored. 8) So that, if it will kill disk this night, I have backup 8)8) ] * smp-0723: "TCP is OK." - Sanitized: passive TCP connection code machine. - Sanitized: TIME-WAIT state machine. - Send ACKs in TIME-WAIT, as it is prescribed by specs. - keepalive timer and fin timer are merged: it is one thing really, only we do not send probe, because of its uselessness and timeout is different (much shorter). * smp-0729: "Rock solid" - Lots of RED-PEN notes are resolved and, hence, removed. - Andi's sysctl patch is added. - TCP ABORT is implemented (partially) [ Tests show no errors now ] * smp-0730: - updated to vger, synced to 2.3.12 - Optional fast tw recycling. Though looking bizarre, this trick is valid and allows to break through 64K/1TIMEWAIT conn/sec barrier. Now I can test kernel at rates ~3000-4000 conn/sec. * smp-0731: - updated to vger, synced to 2.3.13-1 - kernel rarp support is removed, tree is cleaned of its traces except for defconfig. - one more RED-PEN is added about wrong TIME-WAIT -> SYN-RECV transition. * smp-0802: - dev_queue_xmit returns drop notifications. - stupid dead lock in IPv6 flowlabel manager. - tcp_init_metrics() does not touch srtt to avoid rtt misprediction after long period sending only small packets. Otherwise, links with rate less 5 full sized packet per second really can be broken. * smp-0803: It is less tested than previous ones, because changes are pretty significant. - Old mss/mtu cleanup patch by Andrey Savochkin. It is necessary. We were in serious contradiction with all known RFCs. Actually, draft-ietf-tcpimpl-pmtud-03 was written exactly about Linux. We managed to step to all the holes, described there 8)8) I made Andrey's patch more conservative (particularly, delayed acks changes are removed), but improved it a bit, so that all the bugs are mine. - special locking for hash table of listening sockets to clean /proc/net/tcp. (Wow! 2.3 appeared to lock wrong lock for listening sockets in unhash()! OK, it means that different lock even does not make code more dirty. Superb.) - Procedure of waking up listening socket is made more intelligible. It is still tricky, but now it is clear why it works, at least 8) - Restart window. Probably, wrong. - One bug in PAWS is fixed (24 day check was exactly opposite to correct one. It was the reason why alpha died after 24 days of uptime, rather then 64bit arithmetic bugs) PAWS needs more repairing... Well, I continue to read papers 8) STATUS ------ Almost all RED-PENs are resolved. Actually, only one serious RED-PEN remained: PAWS checks are missing in SYN-RECV and TIME-WAIT states. Generally, PAWS does not look correct. I do not believe, that bugs worked around in our code have no real solution. Killing PAWS for bare ACKs is not good. * smp-0805: - PAWS is repaired, I hope. Or broken finally 8) Also it works now for TIME-WAIT and SYN-RECV sockets. - rtt is measured in SYN-{SENT|RECV} states too. - TCP sockets are never removed from binding hash to ensure state invariance. STATUS ------ No more serious RED-PENs. Debugging messages are commented out too. JOB DONE. * smp-0806: - merged netfilter. - PAWS fixes. * smp-0808: - merged decnet patches plus misc fixes by Steve Whitehouse . - pmtu strategy is changed a bit to be more tolerant to low mtu networks. It is interesting, but thing, which looked as too complicated turned out to be great simplification. pmtu and advertised mss are split in destination entries and routes, all the arithmetics moved to routing, tcp mss calculations reduced to nothing! It is very good now and satisifies all, I hope. * smp-0809: "DIRTY WORK. FINAL CLEANUP." - locking wrappers for all underdeveloped protocols. - fixed netsyms exports. Thanks to Alexandr D. Kanevskiy - dev_get() cleanup over all the tree. - room for device names increased to IFNAMSIZ to make SIOCSIFNAME useful. - minor fixes to netfilter. Now it compiles without NETFILTER_DEBUG. 8)8) * smp-0810 - remove wrappers, if __SMP__ is not defined. - tcp_rcv_synsent_state_process() is split and one bug in it is fixed, by the way. * smp-0811 - decnet (and not only decnet) fixes by Steve Whitehouse . - netfilter is sanitized. * smp-0812 - fixes to netfilter from Paul Rusty Russel arrived. - ATM is merged. STATUS. It is spilit to three sets: - smp-0812-net - networking plus some ATM bits. - smp-0812-atm-compact - bulk of ATM dist. - smp-0812-atm-scatter - parts of ATM intersecting with kernel outside of linux/net/ * smp-0813 - sockops->accept for protocols (except for IP/IPv6) is updated to new conventions. ATM svc_accept, fixed yesterday, is simplified. - lazy skb cloning in net_bh. Saves 1...infinity skb clones per packet, when sniffers are running. - TPACKET_STATS is copied from turbo-packet. And improved significantly, now it gathers really reliable stats even about clone failures. STATUS. ... more decnet fixes are pending. * smp-0814 - decnet fixes and some changes in neigh. cache, motivated by decnet, by Steve Whitehouse . - ATM clip is updated to reflect changes in neigh. cache. Wow! I forgot to allocate SLAB for CLIP. Done. - Some surgery in TCP wait queues to make them if not more robust and effective, but at least looking more robust and effective. * smp-0816 - Old race condition in tcp_connect between unique_address() and hash(). Well, all this time I pretended that do not know about this flaw. 8) OK, unique_address() merged with hash() to atomic hash_connecting(). - sk->ip_* moved to sk->protinfo.af_inet freeing 36 bytes in struct sock. Not so great win, but yet... - more decnet fixes by Steve Whitehouse . * smp-0817 - bsd syn in timewait is cleaned up. - MSG_PROXY is killed and replaced with MSG_PROBE. MSG_CONFIRM is added, so that we can send reachability indications without an overhead. * smp-0819 (all parts are in one large file) - memory mapped packet socket. (turbopacket in previous incarnation, but now it is linusly correct 8)) * LAUNCHED! linux-2.3.15-pre3. * Next phase is softnet. Goto README.softnet. Alexey Kuznetsov kuznet@ms2.inr.ac.ru