For RTT calculations mid-session, we explicitly ignore ACKs with tsecr of 0 as
many borken middle-boxes tend to do that. But during 3whs, in syncache_expand(),
we don't do that which causes us to send a RST to such a client. Fix this
behavior by only using tsecr to compare against timestamp that we sent when it
is not 0.
Looks something like this:
15:56:18.908705 IP client > server: Flags [S], seq 166485759, win 14600, options [mss 1460,sackOK,TS val 4804245 ecr 0,nop,wscale 7], length 0
15:56:18.908715 IP server > client: Flags [S.], seq 1317800117, ack 166485760, win 65535, options [mss 1460,nop,wscale 4,sackOK,TS val 2375093244 ecr 4804245], length 0
15:56:19.001364 IP client > server: Flags [.], ack 1, win 115, options [nop,nop,TS val 4804254 ecr 0], length 0
15:56:19.001372 IP server > client: Flags [R], seq 1317800118, win 0, length 0
Here, we send RST because tsecr of 3rd ACK is not reflecting tsval we send in SYN+ACK we sent.
Patch here relaxes this requirement when tsecr is (known broken) 0.