Mellanox ConnectX4 Lx Win2016 server: Got bad tsecr in tcp ack packet

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?

ConntctX-4 Lx might offload tcp segment (TSO enabled),
Could you test without TSO enabled? This might help to isolate whether the issue is related to NIC or not.