diff options
author | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-11-17 03:28:28 +0000 |
---|---|---|
committer | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-11-17 03:28:28 +0000 |
commit | 8363c46f4c64943e6c54b53e6ba18628d3c171ed (patch) | |
tree | 93412eb515802c43fbe50eac8bbc36c0ed1dcd5e /MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c | |
parent | 4d31c5205b738b17876ac8ca9ad8081cbda8980a (diff) | |
download | edk2-8363c46f4c64943e6c54b53e6ba18628d3c171ed.tar.gz edk2-8363c46f4c64943e6c54b53e6ba18628d3c171ed.tar.bz2 edk2-8363c46f4c64943e6c54b53e6ba18628d3c171ed.zip |
sync patch r10831 from main trunk.
The patch acknowledges the TCP zero window probe message, either the format with 1 byte new data, or no new data. It also increases exponentially the interval between successive probes when performing TCP zero window probe.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/branches/UDK2008@11070 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c')
-rw-r--r-- | MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c b/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c index 882a6b70cf..66ee1e9e1f 100644 --- a/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c +++ b/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c @@ -1,7 +1,7 @@ /** @file
TCP input process routines.
-Copyright (c) 2005 - 2007, Intel Corporation<BR>
+Copyright (c) 2005 - 2010, Intel Corporation<BR>
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -33,7 +33,7 @@ TcpSeqAcceptable ( )
{
return (TCP_SEQ_LEQ (Tcb->RcvWl2, Seg->End) &&
- TCP_SEQ_LEQ (Seg->Seq, Tcb->RcvWl2 + Tcb->RcvWnd));
+ TCP_SEQ_LT (Seg->Seq, Tcb->RcvWl2 + Tcb->RcvWnd));
}
@@ -926,6 +926,14 @@ TcpInput ( //
//
+ // Clear probe timer since the RecvWindow is opened.
+ //
+ if (Tcb->ProbeTimerOn && (Seg->Wnd != 0)) {
+ TcpClearTimer (Tcb, TCP_TIMER_PROBE);
+ Tcb->ProbeTimerOn = FALSE;
+ }
+
+ //
// First step: Check whether SEG.SEQ is acceptable
//
if (TcpSeqAcceptable (Tcb, Seg) == 0) {
@@ -1281,11 +1289,6 @@ StepSix: Tcb->Idle = 0;
TcpSetKeepaliveTimer (Tcb);
- if (TCP_TIMER_ON (Tcb->EnabledTimer, TCP_TIMER_PROBE)) {
-
- TcpClearTimer (Tcb, TCP_TIMER_PROBE);
- }
-
if (TCP_FLG_ON (Seg->Flag, TCP_FLG_URG) &&
!TCP_FIN_RCVD (Tcb->State)) {
|