|
|
| 910 |
return; // Discard invalid packet |
910 |
return; // Discard invalid packet |
| 911 |
} |
911 |
} |
| 912 |
|
912 |
|
|
|
913 |
// if m_timestampEnabled == false. We can not determine re-orderiong |
| 914 |
// in this case m_preciousTS will be always less than m_timestampToEcho |
| 915 |
// which will be = 0; |
| 916 |
int64_t previousTS = -1; |
| 917 |
if (m_timestampEnabled) |
| 918 |
{ |
| 919 |
previousTS = m_timestampToEcho; |
| 920 |
} |
| 921 |
|
| 913 |
ReadOptions (tcpHeader); |
922 |
ReadOptions (tcpHeader); |
| 914 |
|
923 |
|
| 915 |
if (tcpHeader.GetFlags () & TcpHeader::ACK) |
924 |
if (tcpHeader.GetFlags () & TcpHeader::ACK) |
|
|
| 923 |
NS_LOG_LOGIC (this << " Leaving zerowindow persist state"); |
932 |
NS_LOG_LOGIC (this << " Leaving zerowindow persist state"); |
| 924 |
m_persistEvent.Cancel (); |
933 |
m_persistEvent.Cancel (); |
| 925 |
} |
934 |
} |
| 926 |
m_rWnd = tcpHeader.GetWindowSize (); |
935 |
|
|
|
936 |
// if current packet has TS less, than previous, don't change window size. |
| 937 |
if (previousTS < m_timestampToEcho) |
| 938 |
{ |
| 939 |
m_rWnd = tcpHeader.GetWindowSize(); |
| 940 |
} |
| 941 |
// m_rWnd = tcpHeader.GetWindowSize (); |
| 927 |
m_rWnd <<= m_rcvScaleFactor; |
942 |
m_rWnd <<= m_rcvScaleFactor; |
| 928 |
|
943 |
|
| 929 |
// Discard fully out of range data packets |
944 |
// Discard fully out of range data packets |