client: arm
server: windows server 2016. Mellanox ConnectX-4 Lx Ether Adapter
client send 1963 bytes to server in tcp connection
and 1963 bytes are split into two tcp segments.
seg1: 1448 bytes,
seg2: 515 bytes.
server only sends ack to the first segment. and tsecr(tcp timestamp echo reply defined in RFC1323) doesn’t equal to seg1’s tsval(tcp timestamp value defined in RFC1323), but we find they have some relation that is:
ack.tsecr = seg1.tsval & 0x80000000
after the ack to seg1.
client does’t get ack for seg2. client will keep retransmit seg2 all the time.
server will not accept seg2 because of seg2.tsval < tsecr(stored in server)
so, is this a bug in driver or firmware?