this patch consists of two bits of work submitted as one patch. the first bit fixed a "pacing" problem, where a tcp connection rate-limited by the reading process would experience 10% of the expected throughput, and could even get into live lock. it was noticed at the time of this initial work that the stack often sent tiny grams. some good bits from nix' original tcp were merged in. the test program /n/sources/contrib/quanstro/tcptest.c will verify that under most conditions, a reader-paced connection now gets the expected throughput. expected arguments would be tcptest -s1 -n 5000 -l the second bit is a first step in preparing tcp to handle modest (1-2MB) bandwidth-delay products. the strategy was to completely implement NewReno. the testing network was a 7/35/70ms by 100Mbit wan emulator with 0/.05/.1% loss. here are the performance comparisons from the changes after the first round "old" to the submitted patch "new". the smallest improvement was 80%, the largest was 11x. loss% rtt old new 0.10 7 4.40 7.85 0.10 35 0.88 1.79 0.10 70 0.47 0.84 0.05 7 4.80 9.38 0.05 35 1.00 2.02 0.05 70 0.52 1.77 0.01 7 5.33 11.87 0.01 35 1.14 10.97 0.01 70 0.54 4.75 0.00 7 4.49 11.92 0.00 35 1.04 11.35 0.00 70 0.58 10.56 since the diff is not very easy to read, i wrote a small paper detailing the changes http://www.quanstro.net/plan9/tcp/tcp.pdf - erik