Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
issue: 2690914 Remove forced split for retransmitted TSO segment
When a TSO segment appears in the unsent queue we split it to a set of small segments. This leads to a data corruption in configuration of large buffers. Probably because we can free and re-allocate pbuf which is transmitted. It can happen that we queue a spurious fast retransmission, split the big TSO segment into small ones, receive ACK for part of the original TSO segment and free few small segments as ACKed. If card still sends the freed pbuf, it can send corrupted data since the pbuf can be re-allocated. Also the freed pbuf must be the one which is not used for reference tracking in cq_mgr to be freed before the TX completion. As solution, don't split TSO segment into multiple small ones. Instead, reset TSO flag and let tcp_split_segment() and tcp_tso_segment() handle all scenarios. tcp_split_segment() splits a segment into 2 segments when necessary and creates maximum possible segment. This is more optimal. Signed-off-by: Dmytro Podgornyi <[email protected]>
- Loading branch information