Hi Eric, Thanks for the detailed review and explanation.
> Applications using SO_RCVBUF with tiny values can not expect kernel > behavior to be stable, > since rcvbuf management depends on metadata size, which can vary > between kernels versions/options. I agree with your reasoning. Applications locking SO_RCVBUF to small values appear to be the primary trigger here, disabling auto-tuning against modern metadata overhead. > If a kernel change is needed, I would rather enforce a sane sk_rcvbuf > floor when the MSS is learnt > at accept()/connect() time. > > ( TCP_SKB_MIN_TRUESIZE / SOCK_MIN_RCVBUF definitions ) Enforcing a safe sk_rcvbuf floor based on the learned MSS and TCP_SKB_MIN_TRUESIZE at connect()/accept() time is a much cleaner and safer solution to protect such applications from SWS stalls. I will implement this approach in v4 and update the packetdrill test. Thanks, Ankit

