summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2010-11-17 03:28:28 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2010-11-17 03:28:28 +0000
commit8363c46f4c64943e6c54b53e6ba18628d3c171ed (patch)
tree93412eb515802c43fbe50eac8bbc36c0ed1dcd5e /MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c
parent4d31c5205b738b17876ac8ca9ad8081cbda8980a (diff)
downloadedk2-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.c17
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)) {