Ok, here's the patch against 2.4.10-ac10. This seems to produce acceptable behaviour in the cases I tested, at least. Someone with one of those "ridiculously small MTU" links might give it a go to check that the rcv_mss estimation still works as expected. It should, though, as I didn't really make any changes to it. Andi Kleen wrote: > The only special case for PSH in RX left I can is in rcv_mss estimation, > where is assumes that a packet with PSH set is not full sized. On further > look the 2.4 tcp_measure_rcv_mss will never update rcv_mss for packets > which do have PSH set and in this case cause random ack behaviour depending > on the initial rcv_mss guess. A too low rcv_mss estimate isn't a problem, as the estimate is immediately increased when the first larger segment arrives. A too high estimate can be difficult to adjust down, though, if the sender suddenly starts sending smalls segments with PSH set. > Not very nice; definitely violates the "be conservative what you accept" > rule. I'm not sure how to fix it, adding a fallback to every-two-packet-add > would pollute the fast path a bit. Hopefully a bit more conservative now. I didn't implement the fall back to ack-every-two-packets, though, as I had the exact opposite problem. :) Regards, MikaL