tcp: (fixes #2769) Set ssthresh correctly upon RTO

This commit is contained in:
Michele Polese
2017-09-17 14:59:26 -07:00
parent fc951f6669
commit fba9b08f18
2 changed files with 4 additions and 1 deletions

View File

@@ -116,6 +116,7 @@ Bugs fixed
- Bug 2761 - Packet has no Traffic ID for CTS frames when A-MPDU is used
- Bug 2762 - BindToNetDevice behaviour is not coherent with Linux
- Bug 2763 - wifi management packets in the PCAPs are all marked as wrong by Wireshark
- Bug 2769 - Set ssthresh correctly upon RTO
Known issues
------------

View File

@@ -3152,6 +3152,8 @@ TcpSocketBase::ReTxTimeout ()
return;
}
uint32_t inFlightBeforeRto = BytesInFlight();
// From RFC 6675, Section 5.1
// [RFC2018] suggests that a TCP sender SHOULD expunge the SACK
// information gathered from a receiver upon a retransmission timeout
@@ -3204,7 +3206,7 @@ TcpSocketBase::ReTxTimeout ()
// retransmission timer, decrease ssThresh
if (m_tcb->m_congState != TcpSocketState::CA_LOSS || !m_txBuffer->IsHeadRetransmitted ())
{
m_tcb->m_ssThresh = m_congestionControl->GetSsThresh (m_tcb, BytesInFlight ());
m_tcb->m_ssThresh = m_congestionControl->GetSsThresh (m_tcb, inFlightBeforeRto);
}
// Cwnd set to 1 MSS