]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c
Code clean up in NetLib:
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Tcp4Dxe / Tcp4Input.c
index 3a3e904c7c246497fda6c041d7c64f245285ed1c..9bea6b298b5ab5f1f7dbf3817efa06d6df033082 100644 (file)
@@ -1,36 +1,29 @@
 /** @file\r
+  TCP input process routines.\r
 \r
-Copyright (c) 2005 - 2007, Intel Corporation\r
+Copyright (c) 2005 - 2009, Intel Corporation<BR>\r
 All rights reserved. This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
+http://opensource.org/licenses/bsd-license.php<BR>\r
 \r
 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
-Module Name:\r
-\r
-  Tcp4Input.c\r
-\r
-Abstract:\r
-\r
-  TCP input process routines.\r
-\r
-\r
 **/\r
 \r
+\r
 #include "Tcp4Main.h"\r
 \r
 \r
 /**\r
-  Check whether the sequence number of the incoming segment\r
-  is acceptable.\r
+  Check whether the sequence number of the incoming segment is acceptable.\r
 \r
   @param  Tcb      Pointer to the TCP_CB of this TCP instance.\r
   @param  Seg      Pointer to the incoming segment.\r
 \r
-  @return 1 if the sequence number is acceptable, otherwise 0.\r
+  @retval 1       The sequence number is acceptable.\r
+  @retval 0       The sequence number is not acceptable.\r
 \r
 **/\r
 INTN\r
@@ -50,13 +43,11 @@ TcpSeqAcceptable (
   @param  Tcb      Pointer to the TCP_CB of this TCP instance.\r
   @param  Seg      Segment that triggers the fast recovery.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 TcpFastRecover (\r
-  IN TCP_CB  *Tcb,\r
-  IN TCP_SEG *Seg\r
+  IN OUT TCP_CB  *Tcb,\r
+  IN     TCP_SEG *Seg\r
   )\r
 {\r
   UINT32  FlightSize;\r
@@ -84,8 +75,8 @@ TcpFastRecover (
     TcpRetransmit (Tcb, Tcb->SndUna);\r
     Tcb->CWnd = Tcb->Ssthresh + 3 * Tcb->SndMss;\r
 \r
-    TCP4_DEBUG_TRACE (("TcpFastRecover: enter fast retransmission"\r
-      " for TCB %x, recover point is %d\n", Tcb, Tcb->Recover));\r
+    DEBUG ((EFI_D_INFO, "TcpFastRecover: enter fast retransmission"\r
+      " for TCB %p, recover point is %d\n", Tcb, Tcb->Recover));\r
     return;\r
   }\r
 \r
@@ -103,8 +94,8 @@ TcpFastRecover (
     // by TcpToSendData\r
     //\r
     Tcb->CWnd += Tcb->SndMss;\r
-    TCP4_DEBUG_TRACE (("TcpFastRecover: received another"\r
-      " duplicated ACK (%d) for TCB %x\n", Seg->Ack, Tcb));\r
+    DEBUG ((EFI_D_INFO, "TcpFastRecover: received another"\r
+      " duplicated ACK (%d) for TCB %p\n", Seg->Ack, Tcb));\r
 \r
   } else {\r
 \r
@@ -123,8 +114,8 @@ TcpFastRecover (
       Tcb->CWnd         = MIN (Tcb->Ssthresh, FlightSize + Tcb->SndMss);\r
 \r
       Tcb->CongestState = TCP_CONGEST_OPEN;\r
-      TCP4_DEBUG_TRACE (("TcpFastRecover: received a full ACK(%d)"\r
-        " for TCB %x, exit fast recovery\n", Seg->Ack, Tcb));\r
+      DEBUG ((EFI_D_INFO, "TcpFastRecover: received a full ACK(%d)"\r
+        " for TCB %p, exit fast recovery\n", Seg->Ack, Tcb));\r
 \r
     } else {\r
 \r
@@ -148,8 +139,8 @@ TcpFastRecover (
 \r
       Tcb->CWnd -= Acked;\r
 \r
-      TCP4_DEBUG_TRACE (("TcpFastRecover: received a partial"\r
-        " ACK(%d) for TCB %x\n", Seg->Ack, Tcb));\r
+      DEBUG ((EFI_D_INFO, "TcpFastRecover: received a partial"\r
+        " ACK(%d) for TCB %p\n", Seg->Ack, Tcb));\r
 \r
     }\r
   }\r
@@ -162,13 +153,11 @@ TcpFastRecover (
   @param  Tcb      Pointer to the TCP_CB of this TCP instance.\r
   @param  Seg      Segment that triggers the fast loss recovery.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 TcpFastLossRecover (\r
-  IN TCP_CB  *Tcb,\r
-  IN TCP_SEG *Seg\r
+  IN OUT TCP_CB  *Tcb,\r
+  IN     TCP_SEG *Seg\r
   )\r
 {\r
   if (TCP_SEQ_GT (Seg->Ack, Tcb->SndUna)) {\r
@@ -185,8 +174,8 @@ TcpFastLossRecover (
       Tcb->LossTimes    = 0;\r
       Tcb->CongestState = TCP_CONGEST_OPEN;\r
 \r
-      TCP4_DEBUG_TRACE (("TcpFastLossRecover: received a "\r
-        "full ACK(%d) for TCB %x\n", Seg->Ack, Tcb));\r
+      DEBUG ((EFI_D_INFO, "TcpFastLossRecover: received a "\r
+        "full ACK(%d) for TCB %p\n", Seg->Ack, Tcb));\r
 \r
     } else {\r
 \r
@@ -195,26 +184,24 @@ TcpFastLossRecover (
       // fast retransmit the first unacknowledge field.\r
       //\r
       TcpRetransmit (Tcb, Seg->Ack);\r
-      TCP4_DEBUG_TRACE (("TcpFastLossRecover: received a "\r
-        "partial ACK(%d) for TCB %x\n", Seg->Ack, Tcb));\r
+      DEBUG ((EFI_D_INFO, "TcpFastLossRecover: received a "\r
+        "partial ACK(%d) for TCB %p\n", Seg->Ack, Tcb));\r
     }\r
   }\r
 }\r
 \r
 \r
 /**\r
-  Compute the RTT as specified in RFC2988\r
+  Compute the RTT as specified in RFC2988.\r
 \r
   @param  Tcb      Pointer to the TCP_CB of this TCP instance.\r
   @param  Measure  Currently measured RTT in heart beats.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 TcpComputeRtt (\r
-  IN TCP_CB *Tcb,\r
-  IN UINT32 Measure\r
+  IN OUT TCP_CB *Tcb,\r
+  IN     UINT32 Measure\r
   )\r
 {\r
   INT32 Var;\r
@@ -256,7 +243,7 @@ TcpComputeRtt (
 \r
   }\r
 \r
-  TCP4_DEBUG_TRACE (("TcpComputeRtt: new RTT for TCB %x"\r
+  DEBUG ((EFI_D_INFO, "TcpComputeRtt: new RTT for TCB %p"\r
     " computed SRTT: %d RTTVAR: %d RTO: %d\n",\r
     Tcb, Tcb->SRtt, Tcb->RttVar, Tcb->Rto));\r
 \r
@@ -264,18 +251,14 @@ TcpComputeRtt (
 \r
 \r
 /**\r
-  Trim the data, SYN and FIN to fit into the window defined by\r
-  Left and Right.\r
+  Trim the data, SYN and FIN to fit into the window defined by Left and Right.\r
 \r
   @param  Nbuf     Buffer that contains received TCP segment without IP header.\r
   @param  Left     The sequence number of the window's left edge.\r
   @param  Right    The sequence number of the window's right edge.\r
 \r
-  @return 0, the data is successfully trimmed.\r
-\r
 **/\r
-STATIC\r
-INTN\r
+VOID\r
 TcpTrimSegment (\r
   IN NET_BUF   *Nbuf,\r
   IN TCP_SEQNO Left,\r
@@ -299,7 +282,7 @@ TcpTrimSegment (
 \r
     Seg->Seq = Seg->End;\r
     NetbufTrim (Nbuf, Nbuf->TotalSize, NET_BUF_HEAD);\r
-    return 0;\r
+    return;\r
   }\r
 \r
   //\r
@@ -329,7 +312,7 @@ TcpTrimSegment (
       }\r
     }\r
 \r
-    if (Drop) {\r
+    if (Drop != 0) {\r
       NetbufTrim (Nbuf, Drop, NET_BUF_HEAD);\r
     }\r
   }\r
@@ -347,13 +330,12 @@ TcpTrimSegment (
       Drop--;\r
     }\r
 \r
-    if (Drop) {\r
+    if (Drop != 0) {\r
       NetbufTrim (Nbuf, Drop, NET_BUF_TAIL);\r
     }\r
   }\r
 \r
-  ASSERT (TcpVerifySegment (Nbuf));\r
-  return 0;\r
+  ASSERT (TcpVerifySegment (Nbuf) != 0);\r
 }\r
 \r
 \r
@@ -363,16 +345,14 @@ TcpTrimSegment (
   @param  Tcb      Pointer to the TCP_CB of this TCP instance.\r
   @param  Nbuf     Pointer to the NET_BUF containing the received tcp segment.\r
 \r
-  @return 0, the data is trimmed.\r
-\r
 **/\r
-INTN\r
+VOID\r
 TcpTrimInWnd (\r
   IN TCP_CB  *Tcb,\r
   IN NET_BUF *Nbuf\r
   )\r
 {\r
-  return TcpTrimSegment (Nbuf, Tcb->RcvNxt, Tcb->RcvWl2 + Tcb->RcvWnd);\r
+  TcpTrimSegment (Nbuf, Tcb->RcvNxt, Tcb->RcvWl2 + Tcb->RcvWnd);\r
 }\r
 \r
 \r
@@ -389,22 +369,22 @@ TcpTrimInWnd (
 **/\r
 INTN\r
 TcpDeliverData (\r
-  IN TCP_CB *Tcb\r
+  IN OUT TCP_CB *Tcb\r
   )\r
 {\r
-  NET_LIST_ENTRY  *Entry;\r
+  LIST_ENTRY      *Entry;\r
   NET_BUF         *Nbuf;\r
   TCP_SEQNO       Seq;\r
   TCP_SEG         *Seg;\r
   UINT32          Urgent;\r
 \r
-  ASSERT (Tcb && Tcb->Sk);\r
+  ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL));\r
 \r
   //\r
   // make sure there is some data queued,\r
   // and TCP is in a proper state\r
   //\r
-  if (NetListIsEmpty (&Tcb->RcvQue) || !TCP_CONNECTED (Tcb->State)) {\r
+  if (IsListEmpty (&Tcb->RcvQue) || !TCP_CONNECTED (Tcb->State)) {\r
 \r
     return 0;\r
   }\r
@@ -419,7 +399,7 @@ TcpDeliverData (
     Nbuf  = NET_LIST_USER_STRUCT (Entry, NET_BUF, List);\r
     Seg   = TCPSEG_NETBUF (Nbuf);\r
 \r
-    ASSERT (TcpVerifySegment (Nbuf));\r
+    ASSERT (TcpVerifySegment (Nbuf) != 0);\r
     ASSERT (Nbuf->Tcp == NULL);\r
 \r
     if (TCP_SEQ_GT (Seg->Seq, Seq)) {\r
@@ -430,7 +410,7 @@ TcpDeliverData (
     Seq         = Seg->End;\r
     Tcb->RcvNxt = Seq;\r
 \r
-    NetListRemoveEntry (&Nbuf->List);\r
+    RemoveEntryList (&Nbuf->List);\r
 \r
     //\r
     // RFC793 Eighth step: process FIN in sequence\r
@@ -441,16 +421,16 @@ TcpDeliverData (
       // The peer sends to us junky data after FIN,\r
       // reset the connection.\r
       //\r
-      if (!NetListIsEmpty (&Tcb->RcvQue)) {\r
-        TCP4_DEBUG_ERROR (("TcpDeliverData: data received after"\r
-          " FIN from peer of TCB %x, reset connection\n", Tcb));\r
+      if (!IsListEmpty (&Tcb->RcvQue)) {\r
+        DEBUG ((EFI_D_ERROR, "TcpDeliverData: data received after"\r
+          " FIN from peer of TCB %p, reset connection\n", Tcb));\r
 \r
         NetbufFree (Nbuf);\r
         return -1;\r
       }\r
 \r
-      TCP4_DEBUG_TRACE (("TcpDeliverData: processing FIN "\r
-        "from peer of TCB %x\n", Tcb));\r
+      DEBUG ((EFI_D_INFO, "TcpDeliverData: processing FIN "\r
+        "from peer of TCB %p\n", Tcb));\r
 \r
       switch (Tcb->State) {\r
       case TCP_SYN_RCVD:\r
@@ -480,8 +460,8 @@ TcpDeliverData (
           TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout);\r
         } else {\r
 \r
-          TCP4_DEBUG_WARN (("Connection closed immediately "\r
-            "because app disables TIME_WAIT timer for %x\n", Tcb));\r
+          DEBUG ((EFI_D_WARN, "Connection closed immediately "\r
+            "because app disables TIME_WAIT timer for %p\n", Tcb));\r
 \r
           TcpSendAck (Tcb);\r
           TcpClose (Tcb);\r
@@ -499,6 +479,8 @@ TcpDeliverData (
         NetbufFree (Nbuf);\r
         return -1;\r
         break;\r
+      default:\r
+        break;\r
       }\r
 \r
       TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW);\r
@@ -514,7 +496,7 @@ TcpDeliverData (
       TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW);\r
     }\r
 \r
-    if (Nbuf->TotalSize) {\r
+    if (Nbuf->TotalSize != 0) {\r
       Urgent = 0;\r
 \r
       if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_URG) &&\r
@@ -548,22 +530,20 @@ TcpDeliverData (
   @param  Tcb      Pointer to the TCP_CB of this TCP instance.\r
   @param  Nbuf     Pointer to the buffer containing the data to be queued.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 TcpQueueData (\r
-  IN TCP_CB  *Tcb,\r
-  IN NET_BUF *Nbuf\r
+  IN OUT TCP_CB  *Tcb,\r
+  IN     NET_BUF *Nbuf\r
   )\r
 {\r
   TCP_SEG         *Seg;\r
-  NET_LIST_ENTRY  *Head;\r
-  NET_LIST_ENTRY  *Prev;\r
-  NET_LIST_ENTRY  *Cur;\r
+  LIST_ENTRY      *Head;\r
+  LIST_ENTRY      *Prev;\r
+  LIST_ENTRY      *Cur;\r
   NET_BUF         *Node;\r
 \r
-  ASSERT (Tcb && Nbuf && (Nbuf->Tcp == NULL));\r
+  ASSERT ((Tcb != NULL) && (Nbuf != NULL) && (Nbuf->Tcp == NULL));\r
 \r
   NET_GET_REF (Nbuf);\r
 \r
@@ -574,9 +554,9 @@ TcpQueueData (
   // Fast path to process normal case. That is,\r
   // no out-of-order segments are received.\r
   //\r
-  if (NetListIsEmpty (Head)) {\r
+  if (IsListEmpty (Head)) {\r
 \r
-    NetListInsertTail (Head, &Nbuf->List);\r
+    InsertTailList (Head, &Nbuf->List);\r
     return ;\r
   }\r
 \r
@@ -613,7 +593,7 @@ TcpQueueData (
     }\r
   }\r
 \r
-  NetListInsertHead (Prev, &Nbuf->List);\r
+  InsertHeadList (Prev, &Nbuf->List);\r
 \r
   TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW);\r
 \r
@@ -627,7 +607,7 @@ TcpQueueData (
 \r
       Cur = Cur->ForwardLink;\r
 \r
-      NetListRemoveEntry (&Node->List);\r
+      RemoveEntryList (&Node->List);\r
       NetbufFree (Node);\r
       continue;\r
     }\r
@@ -636,7 +616,7 @@ TcpQueueData (
 \r
       if (TCP_SEQ_LEQ (TCPSEG_NETBUF (Node)->Seq, Seg->Seq)) {\r
 \r
-        NetListRemoveEntry (&Nbuf->List);\r
+        RemoveEntryList (&Nbuf->List);\r
         NetbufFree (Nbuf);\r
         return ;\r
       }\r
@@ -656,8 +636,6 @@ TcpQueueData (
   @param  Tcb      Pointer to the TCP_CB of this TCP instance.\r
   @param  Ack      The acknowledge seuqence number of the received segment.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 TcpAdjustSndQue (\r
@@ -665,8 +643,8 @@ TcpAdjustSndQue (
   IN TCP_SEQNO Ack\r
   )\r
 {\r
-  NET_LIST_ENTRY  *Head;\r
-  NET_LIST_ENTRY  *Cur;\r
+  LIST_ENTRY      *Head;\r
+  LIST_ENTRY      *Cur;\r
   NET_BUF         *Node;\r
   TCP_SEG         *Seg;\r
 \r
@@ -687,7 +665,7 @@ TcpAdjustSndQue (
     if (TCP_SEQ_LEQ (Seg->End, Ack)) {\r
       Cur = Cur->ForwardLink;\r
 \r
-      NetListRemoveEntry (&Node->List);\r
+      RemoveEntryList (&Node->List);\r
       NetbufFree (Node);\r
       continue;\r
     }\r
@@ -736,9 +714,9 @@ TcpInput (
   Len     = Nbuf->TotalSize - (Head->HeadLen << 2);\r
 \r
   if ((Head->HeadLen < 5) || (Len < 0) ||\r
-      TcpChecksum (Nbuf, NetPseudoHeadChecksum (Src, Dst, 6, 0))) {\r
+      (TcpChecksum (Nbuf, NetPseudoHeadChecksum (Src, Dst, 6, 0)) != 0)) {\r
 \r
-    TCP4_DEBUG_TRACE (("TcpInput: received an mal-formated packet\n"));\r
+    DEBUG ((EFI_D_INFO, "TcpInput: received an mal-formated packet\n"));\r
     goto DISCARD;\r
   }\r
 \r
@@ -759,7 +737,7 @@ TcpInput (
           );\r
 \r
   if ((Tcb == NULL) || (Tcb->State == TCP_CLOSED)) {\r
-    TCP4_DEBUG_TRACE (("TcpInput: send reset because no TCB find\n"));\r
+    DEBUG ((EFI_D_INFO, "TcpInput: send reset because no TCB find\n"));\r
 \r
     Tcb = NULL;\r
     goto SEND_RESET;\r
@@ -772,8 +750,8 @@ TcpInput (
   // (in fact, an illegal option length) is reset.\r
   //\r
   if (TcpParseOption (Nbuf->Tcp, &Option) == -1) {\r
-    TCP4_DEBUG_ERROR (("TcpInput: reset the peer because"\r
-      " of mal-format option for Tcb %x\n", Tcb));\r
+    DEBUG ((EFI_D_ERROR, "TcpInput: reset the peer because"\r
+      " of mal-format option for Tcb %p\n", Tcb));\r
 \r
     goto SEND_RESET;\r
   }\r
@@ -784,10 +762,6 @@ TcpInput (
   NetbufTrim (Nbuf, (Head->HeadLen << 2), NET_BUF_HEAD);\r
   Nbuf->Tcp = NULL;\r
 \r
-  //\r
-  // TODO: add fast path process here\r
-  //\r
-\r
   //\r
   // Process the segment in LISTEN state.\r
   //\r
@@ -796,8 +770,8 @@ TcpInput (
     // First step: Check RST\r
     //\r
     if (TCP_FLG_ON (Seg->Flag, TCP_FLG_RST)) {\r
-      TCP4_DEBUG_WARN (("TcpInput: discard a reset segment "\r
-        "for TCB %x in listening\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "TcpInput: discard a reset segment "\r
+        "for TCB %p in listening\n", Tcb));\r
 \r
       goto DISCARD;\r
     }\r
@@ -807,8 +781,8 @@ TcpInput (
     // Any ACK sent to TCP in LISTEN is reseted.\r
     //\r
     if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) {\r
-      TCP4_DEBUG_WARN (("TcpInput: send reset because of"\r
-        " segment with ACK for TCB %x in listening\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "TcpInput: send reset because of"\r
+        " segment with ACK for TCB %p in listening\n", Tcb));\r
 \r
       goto SEND_RESET;\r
     }\r
@@ -824,13 +798,13 @@ TcpInput (
 \r
       Tcb     = TcpCloneTcb (Parent);\r
       if (Tcb == NULL) {\r
-        TCP4_DEBUG_ERROR (("TcpInput: discard a segment because"\r
-          "failed to clone a child for TCB%x\n", Tcb));\r
+        DEBUG ((EFI_D_ERROR, "TcpInput: discard a segment because"\r
+          " failed to clone a child for TCB%x\n", Tcb));\r
 \r
         goto DISCARD;\r
       }\r
 \r
-      TCP4_DEBUG_TRACE (("TcpInput: create a child for TCB %x"\r
+      DEBUG ((EFI_D_INFO, "TcpInput: create a child for TCB %p"\r
         " in listening\n", Tcb));\r
 \r
       //\r
@@ -859,8 +833,8 @@ TcpInput (
     //\r
     if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK) && (Seg->Ack != Tcb->Iss + 1)) {\r
 \r
-      TCP4_DEBUG_WARN (("TcpInput: send reset because of "\r
-        "wrong ACK received for TCB %x in SYN_SENT\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "TcpInput: send reset because of "\r
+        "wrong ACK received for TCB %p in SYN_SENT\n", Tcb));\r
 \r
       goto SEND_RESET;\r
     }\r
@@ -872,15 +846,15 @@ TcpInput (
 \r
       if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) {\r
 \r
-        TCP4_DEBUG_WARN (("TcpInput: connection reset by"\r
-          " peer for TCB%x in SYN_SENT\n", Tcb));\r
+        DEBUG ((EFI_D_WARN, "TcpInput: connection reset by"\r
+          " peer for TCB %p in SYN_SENT\n", Tcb));\r
 \r
         SOCK_ERROR (Tcb->Sk, EFI_CONNECTION_RESET);\r
         goto DROP_CONNECTION;\r
       } else {\r
 \r
-        TCP4_DEBUG_WARN (("TcpInput: discard a reset segment "\r
-          "because of no ACK for TCB%x in SYN_SENT\n", Tcb));\r
+        DEBUG ((EFI_D_WARN, "TcpInput: discard a reset segment "\r
+          "because of no ACK for TCB %p in SYN_SENT\n", Tcb));\r
 \r
         goto DISCARD;\r
       }\r
@@ -922,8 +896,8 @@ TcpInput (
 \r
         TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW);\r
 \r
-        TCP4_DEBUG_TRACE (("TcpInput: connection established"\r
-          " for TCB %x in SYN_SENT\n", Tcb));\r
+        DEBUG ((EFI_D_INFO, "TcpInput: connection established"\r
+          " for TCB %p in SYN_SENT\n", Tcb));\r
 \r
         goto StepSix;\r
       } else {\r
@@ -937,8 +911,8 @@ TcpInput (
 \r
         TcpTrimInWnd (Tcb, Nbuf);\r
 \r
-        TCP4_DEBUG_WARN (("TcpInput: simultanous open "\r
-          "for TCB %x in SYN_SENT\n", Tcb));\r
+        DEBUG ((EFI_D_WARN, "TcpInput: simultanous open "\r
+          "for TCB %p in SYN_SENT\n", Tcb));\r
 \r
         goto StepSix;\r
       }\r
@@ -954,9 +928,9 @@ TcpInput (
   //\r
   // First step: Check whether SEG.SEQ is acceptable\r
   //\r
-  if (!TcpSeqAcceptable (Tcb, Seg)) {\r
-    TCP4_DEBUG_WARN (("TcpInput: sequence acceptance"\r
-      " test failed for segment of TCB %x\n", Tcb));\r
+  if (TcpSeqAcceptable (Tcb, Seg) == 0) {\r
+    DEBUG ((EFI_D_WARN, "TcpInput: sequence acceptance"\r
+      " test failed for segment of TCB %p\n", Tcb));\r
 \r
     if (!TCP_FLG_ON (Seg->Flag, TCP_FLG_RST)) {\r
       TcpSendAck (Tcb);\r
@@ -977,7 +951,7 @@ TcpInput (
   //\r
   if (TCP_FLG_ON (Seg->Flag, TCP_FLG_RST)) {\r
 \r
-    TCP4_DEBUG_WARN (("TcpInput: connection reset for TCB %x\n", Tcb));\r
+    DEBUG ((EFI_D_WARN, "TcpInput: connection reset for TCB %p\n", Tcb));\r
 \r
     if (Tcb->State == TCP_SYN_RCVD) {\r
 \r
@@ -990,17 +964,14 @@ TcpInput (
       // if it comes from a LISTEN TCB.\r
       //\r
     } else if ((Tcb->State == TCP_ESTABLISHED) ||\r
-             (Tcb->State == TCP_FIN_WAIT_1) ||\r
-             (Tcb->State == TCP_FIN_WAIT_2) ||\r
-             (Tcb->State == TCP_CLOSE_WAIT)\r
-            ) {\r
+               (Tcb->State == TCP_FIN_WAIT_1) ||\r
+               (Tcb->State == TCP_FIN_WAIT_2) ||\r
+               (Tcb->State == TCP_CLOSE_WAIT)) {\r
 \r
       SOCK_ERROR (Tcb->Sk, EFI_CONNECTION_RESET);\r
 \r
     } else {\r
-      //\r
-      // TODO: set socket error to CLOSED\r
-      //\r
+\r
     }\r
 \r
     goto DROP_CONNECTION;\r
@@ -1020,8 +991,8 @@ TcpInput (
   //\r
   if (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)) {\r
 \r
-    TCP4_DEBUG_WARN (("TcpInput: connection reset "\r
-      "because received extra SYN for TCB %x\n", Tcb));\r
+    DEBUG ((EFI_D_WARN, "TcpInput: connection reset "\r
+      "because received extra SYN for TCB %p\n", Tcb));\r
 \r
     SOCK_ERROR (Tcb->Sk, EFI_CONNECTION_RESET);\r
     goto RESET_THEN_DROP;\r
@@ -1031,8 +1002,8 @@ TcpInput (
   // Fifth step: Check the ACK\r
   //\r
   if (!TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) {\r
-    TCP4_DEBUG_WARN (("TcpInput: segment discard because"\r
-      " of no ACK for connected TCB %x\n", Tcb));\r
+    DEBUG ((EFI_D_WARN, "TcpInput: segment discard because"\r
+      " of no ACK for connected TCB %p\n", Tcb));\r
 \r
     goto DISCARD;\r
 \r
@@ -1052,15 +1023,15 @@ TcpInput (
       TcpClearTimer (Tcb, TCP_TIMER_CONNECT);\r
       TcpDeliverData (Tcb);\r
 \r
-      TCP4_DEBUG_TRACE (("TcpInput: connection established "\r
-        " for TCB %x in SYN_RCVD\n", Tcb));\r
+      DEBUG ((EFI_D_INFO, "TcpInput: connection established "\r
+        " for TCB %p in SYN_RCVD\n", Tcb));\r
 \r
       //\r
       // Continue the process as ESTABLISHED state\r
       //\r
     } else {\r
-      TCP4_DEBUG_WARN (("TcpInput: send reset because of"\r
-        " wrong ACK for TCB %x in SYN_RCVD\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "TcpInput: send reset because of"\r
+        " wrong ACK for TCB %p in SYN_RCVD\n", Tcb));\r
 \r
       goto SEND_RESET;\r
     }\r
@@ -1068,15 +1039,15 @@ TcpInput (
 \r
   if (TCP_SEQ_LT (Seg->Ack, Tcb->SndUna)) {\r
 \r
-    TCP4_DEBUG_WARN (("TcpInput: ignore the out-of-data"\r
-      " ACK for connected TCB %x\n", Tcb));\r
+    DEBUG ((EFI_D_WARN, "TcpInput: ignore the out-of-data"\r
+      " ACK for connected TCB %p\n", Tcb));\r
 \r
     goto StepSix;\r
 \r
   } else if (TCP_SEQ_GT (Seg->Ack, Tcb->SndNxt)) {\r
 \r
-    TCP4_DEBUG_WARN (("TcpInput: discard segment for "\r
-      "future ACK for connected TCB %x\n", Tcb));\r
+    DEBUG ((EFI_D_WARN, "TcpInput: discard segment for "\r
+      "future ACK for connected TCB %p\n", Tcb));\r
 \r
     TcpSendAck (Tcb);\r
     goto DISCARD;\r
@@ -1163,7 +1134,7 @@ TcpInput (
     Tcb->SndUna = Seg->Ack;\r
 \r
     if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_URG) &&\r
-        (TCP_SEQ_LT (Tcb->SndUp, Seg->Ack))) {\r
+        TCP_SEQ_LT (Tcb->SndUp, Seg->Ack)) {\r
 \r
       TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_URG);\r
     }\r
@@ -1186,8 +1157,8 @@ TcpInput (
         goto NO_UPDATE;\r
       }\r
 \r
-      TCP4_DEBUG_WARN (("TcpInput: peer shrinks the"\r
-        " window  for connected TCB %x\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "TcpInput: peer shrinks the"\r
+        " window for connected TCB %p\n", Tcb));\r
 \r
       if ((Tcb->CongestState == TCP_CONGEST_RECOVER) &&\r
           (TCP_SEQ_LT (Right, Tcb->Recover))) {\r
@@ -1224,8 +1195,8 @@ NO_UPDATE:
   if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_SENT) &&\r
       (Tcb->SndUna == Tcb->SndNxt)) {\r
 \r
-    TCP4_DEBUG_TRACE (("TcpInput: local FIN is ACKed by"\r
-      " peer for connected TCB %x\n", Tcb));\r
+    DEBUG ((EFI_D_INFO, "TcpInput: local FIN is ACKed by"\r
+      " peer for connected TCB %p\n", Tcb));\r
 \r
     TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED);\r
   }\r
@@ -1264,8 +1235,8 @@ NO_UPDATE:
         TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout);\r
       } else {\r
 \r
-        TCP4_DEBUG_WARN (("Connection closed immediately "\r
-          "because app disables TIME_WAIT timer for %x\n", Tcb));\r
+        DEBUG ((EFI_D_WARN, "Connection closed immediately "\r
+          "because app disables TIME_WAIT timer for %p\n", Tcb));\r
 \r
         TcpClose (Tcb);\r
       }\r
@@ -1290,12 +1261,15 @@ NO_UPDATE:
       TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout);\r
     } else {\r
 \r
-      TCP4_DEBUG_WARN (("Connection closed immediately "\r
-        "because app disables TIME_WAIT timer for %x\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "Connection closed immediately "\r
+        "because app disables TIME_WAIT timer for %p\n", Tcb));\r
 \r
       TcpClose (Tcb);\r
     }\r
     break;\r
+\r
+  default:\r
+    break;\r
   }\r
 \r
   //\r
@@ -1315,8 +1289,8 @@ StepSix:
   if (TCP_FLG_ON (Seg->Flag, TCP_FLG_URG) &&\r
       !TCP_FIN_RCVD (Tcb->State)) {\r
 \r
-    TCP4_DEBUG_TRACE (("TcpInput: received urgent data "\r
-      "from peer for connected TCB %x\n", Tcb));\r
+    DEBUG ((EFI_D_INFO, "TcpInput: received urgent data "\r
+      "from peer for connected TCB %p\n", Tcb));\r
 \r
     Urg = Seg->Seq + Seg->Urg;\r
 \r
@@ -1338,15 +1312,15 @@ StepSix:
 \r
     if (TCP_FIN_RCVD (Tcb->State)) {\r
 \r
-      TCP4_DEBUG_WARN (("TcpInput: connection reset because"\r
-        " data is lost for connected TCB %x\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "TcpInput: connection reset because"\r
+        " data is lost for connected TCB %p\n", Tcb));\r
 \r
       goto RESET_THEN_DROP;\r
     }\r
 \r
     if (TCP_LOCAL_CLOSED (Tcb->State) && (Nbuf->TotalSize != 0)) {\r
-      TCP4_DEBUG_WARN (("TcpInput: connection reset because"\r
-        " data is lost for connected TCB %x\n", Tcb));\r
+      DEBUG ((EFI_D_WARN, "TcpInput: connection reset because"\r
+        " data is lost for connected TCB %p\n", Tcb));\r
 \r
       goto RESET_THEN_DROP;\r
     }\r
@@ -1356,7 +1330,7 @@ StepSix:
       goto RESET_THEN_DROP;\r
     }\r
 \r
-    if (!NetListIsEmpty (&Tcb->RcvQue)) {\r
+    if (!IsListEmpty (&Tcb->RcvQue)) {\r
       TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW);\r
     }\r
   }\r
@@ -1372,14 +1346,14 @@ StepSix:
   // Tcb is a new child of the listening Parent,\r
   // commit it.\r
   //\r
-  if (Parent) {\r
+  if (Parent != NULL) {\r
     Tcb->Parent = Parent;\r
     TcpInsertTcb (Tcb);\r
   }\r
 \r
   if ((Tcb->State != TCP_CLOSED) &&\r
-      (!TcpToSendData (Tcb, 0)) &&\r
-      (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW) || Nbuf->TotalSize)) {\r
+      (TcpToSendData (Tcb, 0) == 0) &&\r
+      (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW) || (Nbuf->TotalSize != 0))) {\r
 \r
     TcpToSendAck (Tcb);\r
   }\r
@@ -1391,7 +1365,7 @@ RESET_THEN_DROP:
   TcpSendReset (Tcb, Head, Len, Dst, Src);\r
 \r
 DROP_CONNECTION:\r
-  ASSERT (Tcb && Tcb->Sk);\r
+  ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL));\r
 \r
   NetbufFree (Nbuf);\r
   TcpClose (Tcb);\r
@@ -1407,12 +1381,12 @@ DISCARD:
   //\r
   // Tcb is a child of Parent, and it doesn't survive\r
   //\r
-  TCP4_DEBUG_WARN (("Tcp4Input: Discard a packet\n"));\r
+  DEBUG ((EFI_D_WARN, "Tcp4Input: Discard a packet\n"));\r
   NetbufFree (Nbuf);\r
 \r
-  if (Parent && Tcb) {\r
+  if ((Parent != NULL) && (Tcb != NULL)) {\r
 \r
-    ASSERT (Tcb->Sk);\r
+    ASSERT (Tcb->Sk != NULL);\r
     TcpClose (Tcb);\r
   }\r
 \r
@@ -1429,13 +1403,11 @@ DISCARD:
   @param  Src      Source address of the ICMP error message.\r
   @param  Dst      Destination address of the ICMP error message.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 TcpIcmpInput (\r
   IN NET_BUF     *Nbuf,\r
-  IN ICMP_ERROR  IcmpErr,\r
+  IN UINT8       IcmpErr,\r
   IN UINT32      Src,\r
   IN UINT32      Dst\r
   )\r
@@ -1469,7 +1441,12 @@ TcpIcmpInput (
     goto CLEAN_EXIT;\r
   }\r
 \r
-  IcmpErrStatus = IpIoGetIcmpErrStatus (IcmpErr, &IcmpErrIsHard, &IcmpErrNotify);\r
+  IcmpErrStatus = IpIoGetIcmpErrStatus (\r
+                    IcmpErr,\r
+                    IP_VERSION_4,\r
+                    &IcmpErrIsHard,\r
+                    &IcmpErrNotify\r
+                    );\r
 \r
   if (IcmpErrNotify) {\r
 \r