]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/TcpDxe/TcpOutput.c
NetworkPkg: Apply uncrustify changes
[mirror_edk2.git] / NetworkPkg / TcpDxe / TcpOutput.c
index a7e59f0ed6e0e60aa97aa2e755f0be4222eccd38..294c8956fe1b1696275597314728cdfc780771dc 100644 (file)
@@ -1,15 +1,9 @@
 /** @file\r
   TCP output process routines.\r
 \r
-  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
 \r
-  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
-\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
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -39,7 +33,7 @@ UINT8  mTcpOutFlag[] = {
 **/\r
 UINT32\r
 TcpRcvWinOld (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
   UINT32  OldWin;\r
@@ -47,11 +41,10 @@ TcpRcvWinOld (
   OldWin = 0;\r
 \r
   if (TCP_SEQ_GT (Tcb->RcvWl2 + Tcb->RcvWnd, Tcb->RcvNxt)) {\r
-\r
     OldWin = TCP_SUB_SEQ (\r
-              Tcb->RcvWl2 + Tcb->RcvWnd,\r
-              Tcb->RcvNxt\r
-              );\r
+               Tcb->RcvWl2 + Tcb->RcvWnd,\r
+               Tcb->RcvNxt\r
+               );\r
   }\r
 \r
   return OldWin;\r
@@ -67,7 +60,7 @@ TcpRcvWinOld (
 **/\r
 UINT32\r
 TcpRcvWinNow (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
   SOCKET  *Sk;\r
@@ -78,11 +71,11 @@ TcpRcvWinNow (
   Sk = Tcb->Sk;\r
   ASSERT (Sk != NULL);\r
 \r
-  OldWin    = TcpRcvWinOld (Tcb);\r
+  OldWin = TcpRcvWinOld (Tcb);\r
 \r
-  Win       = SockGetFreeSpace (Sk, SOCK_RCV_BUF);\r
+  Win = SockGetFreeSpace (Sk, SOCK_RCV_BUF);\r
 \r
-  Increase  = 0;\r
+  Increase = 0;\r
   if (Win > OldWin) {\r
     Increase = Win - OldWin;\r
   }\r
@@ -93,7 +86,6 @@ TcpRcvWinNow (
   // half of the receive buffer.\r
   //\r
   if ((Increase > Tcb->SndMss) || (2 * Increase >= GET_RCV_BUFFSIZE (Sk))) {\r
-\r
     return Win;\r
   }\r
 \r
@@ -112,8 +104,8 @@ TcpRcvWinNow (
 **/\r
 UINT16\r
 TcpComputeWnd (\r
-  IN OUT TCP_CB  *Tcb,\r
-  IN     BOOLEAN Syn\r
+  IN OUT TCP_CB   *Tcb,\r
+  IN     BOOLEAN  Syn\r
   )\r
 {\r
   UINT32  Wnd;\r
@@ -122,17 +114,15 @@ TcpComputeWnd (
   // RFC requires that initial window not be scaled\r
   //\r
   if (Syn) {\r
-\r
     Wnd = GET_RCV_BUFFSIZE (Tcb->Sk);\r
   } else {\r
-\r
-    Wnd         = TcpRcvWinNow (Tcb);\r
+    Wnd = TcpRcvWinNow (Tcb);\r
 \r
     Tcb->RcvWnd = Wnd;\r
   }\r
 \r
   Wnd = MIN (Wnd >> Tcb->RcvWndScale, 0xffff);\r
-  return NTOHS ((UINT16) Wnd);\r
+  return NTOHS ((UINT16)Wnd);\r
 }\r
 \r
 /**\r
@@ -145,11 +135,11 @@ TcpComputeWnd (
 **/\r
 TCP_SEQNO\r
 TcpGetMaxSndNxt (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
-  LIST_ENTRY      *Entry;\r
-  NET_BUF         *Nbuf;\r
+  LIST_ENTRY  *Entry;\r
+  NET_BUF     *Nbuf;\r
 \r
   if (IsListEmpty (&Tcb->SndQue)) {\r
     return Tcb->SndNxt;\r
@@ -174,8 +164,8 @@ TcpGetMaxSndNxt (
 **/\r
 UINT32\r
 TcpDataToSend (\r
-  IN TCP_CB *Tcb,\r
-  IN INTN   Force\r
+  IN TCP_CB  *Tcb,\r
+  IN INTN    Force\r
   )\r
 {\r
   SOCKET  *Sk;\r
@@ -198,7 +188,6 @@ TcpDataToSend (
   Limit = Tcb->SndWl2 + Tcb->SndWnd;\r
 \r
   if (TCP_SEQ_GT (Limit, Tcb->SndUna + Tcb->CWnd)) {\r
-\r
     Limit = Tcb->SndUna + Tcb->CWnd;\r
   }\r
 \r
@@ -212,19 +201,19 @@ TcpDataToSend (
   // buffer. The later can be non-zero if the peer shrinks\r
   // its advertised window.\r
   //\r
-  Left  = GET_SND_DATASIZE (Sk) + TCP_SUB_SEQ (TcpGetMaxSndNxt (Tcb), Tcb->SndNxt);\r
+  Left = GET_SND_DATASIZE (Sk) + TCP_SUB_SEQ (TcpGetMaxSndNxt (Tcb), Tcb->SndNxt);\r
 \r
-  Len   = MIN (Win, Left);\r
+  Len = MIN (Win, Left);\r
 \r
   if (Len > Tcb->SndMss) {\r
     Len = Tcb->SndMss;\r
   }\r
 \r
-  if ((Force != 0)|| (Len == 0 && Left == 0)) {\r
+  if ((Force != 0) || ((Len == 0) && (Left == 0))) {\r
     return Len;\r
   }\r
 \r
-  if (Len == 0 && Left != 0) {\r
+  if ((Len == 0) && (Left != 0)) {\r
     goto SetPersistTimer;\r
   }\r
 \r
@@ -237,14 +226,13 @@ TcpDataToSend (
   // expecting an ACK, or the Nagle algorithm is disabled.\r
   //\r
   if ((Len == Tcb->SndMss) || (2 * Len >= Tcb->SndWndMax)) {\r
-\r
     return Len;\r
   }\r
 \r
   if ((Len == Left) &&\r
       ((Tcb->SndNxt == Tcb->SndUna) || TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_NAGLE))\r
-      ) {\r
-\r
+      )\r
+  {\r
     return Len;\r
   }\r
 \r
@@ -254,11 +242,10 @@ TcpDataToSend (
   //\r
 SetPersistTimer:\r
   if (!TCP_TIMER_ON (Tcb->EnabledTimer, TCP_TIMER_REXMIT)) {\r
-\r
     DEBUG (\r
-      (EFI_D_WARN,\r
-      "TcpDataToSend: enter persistent state for TCB %p\n",\r
-      Tcb)\r
+      (DEBUG_WARN,\r
+       "TcpDataToSend: enter persistent state for TCB %p\n",\r
+       Tcb)\r
       );\r
 \r
     if (!Tcb->ProbeTimerOn) {\r
@@ -282,8 +269,8 @@ SetPersistTimer:
 **/\r
 INTN\r
 TcpTransmitSegment (\r
-  IN OUT TCP_CB  *Tcb,\r
-  IN     NET_BUF *Nbuf\r
+  IN OUT TCP_CB   *Tcb,\r
+  IN     NET_BUF  *Nbuf\r
   )\r
 {\r
   UINT16    Len;\r
@@ -292,18 +279,20 @@ TcpTransmitSegment (
   BOOLEAN   Syn;\r
   UINT32    DataLen;\r
 \r
-  ASSERT ((Nbuf != NULL) && (Nbuf->Tcp == NULL) && (TcpVerifySegment (Nbuf) != 0));\r
+  ASSERT ((Nbuf != NULL) && (Nbuf->Tcp == NULL));\r
+\r
+  if (TcpVerifySegment (Nbuf) == 0) {\r
+    return -1;\r
+  }\r
 \r
   DataLen = Nbuf->TotalSize;\r
 \r
-  Seg     = TCPSEG_NETBUF (Nbuf);\r
-  Syn     = TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN);\r
+  Seg = TCPSEG_NETBUF (Nbuf);\r
+  Syn = TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN);\r
 \r
   if (Syn) {\r
-\r
     Len = TcpSynBuildOption (Tcb, Nbuf);\r
   } else {\r
-\r
     Len = TcpBuildOption (Tcb, Nbuf);\r
   }\r
 \r
@@ -311,24 +300,24 @@ TcpTransmitSegment (
 \r
   Len += sizeof (TCP_HEAD);\r
 \r
-  Head = (TCP_HEAD *) NetbufAllocSpace (\r
-                        Nbuf,\r
-                        sizeof (TCP_HEAD),\r
-                        NET_BUF_HEAD\r
-                        );\r
+  Head = (TCP_HEAD *)NetbufAllocSpace (\r
+                       Nbuf,\r
+                       sizeof (TCP_HEAD),\r
+                       NET_BUF_HEAD\r
+                       );\r
 \r
   ASSERT (Head != NULL);\r
 \r
-  Nbuf->Tcp       = Head;\r
+  Nbuf->Tcp = Head;\r
 \r
-  Head->SrcPort   = Tcb->LocalEnd.Port;\r
-  Head->DstPort   = Tcb->RemoteEnd.Port;\r
-  Head->Seq       = NTOHL (Seg->Seq);\r
-  Head->Ack       = NTOHL (Tcb->RcvNxt);\r
-  Head->HeadLen   = (UINT8) (Len >> 2);\r
-  Head->Res       = 0;\r
-  Head->Wnd       = TcpComputeWnd (Tcb, Syn);\r
-  Head->Checksum  = 0;\r
+  Head->SrcPort  = Tcb->LocalEnd.Port;\r
+  Head->DstPort  = Tcb->RemoteEnd.Port;\r
+  Head->Seq      = NTOHL (Seg->Seq);\r
+  Head->Ack      = NTOHL (Tcb->RcvNxt);\r
+  Head->HeadLen  = (UINT8)(Len >> 2);\r
+  Head->Res      = 0;\r
+  Head->Wnd      = TcpComputeWnd (Tcb, Syn);\r
+  Head->Checksum = 0;\r
 \r
   //\r
   // Check whether to set the PSH flag.\r
@@ -338,13 +327,11 @@ TcpTransmitSegment (
   if (DataLen != 0) {\r
     if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_PSH) &&\r
         TCP_SEQ_BETWEEN (Seg->Seq, Tcb->SndPsh, Seg->End)\r
-        ) {\r
-\r
+        )\r
+    {\r
       TCP_SET_FLG (Seg->Flag, TCP_FLG_PSH);\r
       TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_PSH);\r
-\r
     } else if ((Seg->End == Tcb->SndNxt) && (GET_SND_DATASIZE (Tcb->Sk) == 0)) {\r
-\r
       TCP_SET_FLG (Seg->Flag, TCP_FLG_PSH);\r
     }\r
   }\r
@@ -355,25 +342,24 @@ TcpTransmitSegment (
   TCP_CLEAR_FLG (Seg->Flag, TCP_FLG_URG);\r
 \r
   if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_URG) && TCP_SEQ_LEQ (Seg->Seq, Tcb->SndUp)) {\r
-\r
     TCP_SET_FLG (Seg->Flag, TCP_FLG_URG);\r
 \r
     if (TCP_SEQ_LT (Tcb->SndUp, Seg->End)) {\r
-\r
-      Seg->Urg = (UINT16) TCP_SUB_SEQ (Tcb->SndUp, Seg->Seq);\r
+      Seg->Urg = (UINT16)TCP_SUB_SEQ (Tcb->SndUp, Seg->Seq);\r
     } else {\r
-\r
-      Seg->Urg = (UINT16) MIN (\r
-                            TCP_SUB_SEQ (Tcb->SndUp,\r
-                            Seg->Seq),\r
-                            0xffff\r
-                            );\r
+      Seg->Urg = (UINT16)MIN (\r
+                           TCP_SUB_SEQ (\r
+                             Tcb->SndUp,\r
+                             Seg->Seq\r
+                             ),\r
+                           0xffff\r
+                           );\r
     }\r
   }\r
 \r
-  Head->Flag      = Seg->Flag;\r
-  Head->Urg       = NTOHS (Seg->Urg);\r
-  Head->Checksum  = TcpChecksum (Nbuf, Tcb->HeadSum);\r
+  Head->Flag     = Seg->Flag;\r
+  Head->Urg      = NTOHS (Seg->Urg);\r
+  Head->Checksum = TcpChecksum (Nbuf, Tcb->HeadSum);\r
 \r
   //\r
   // Update the TCP session's control information.\r
@@ -403,38 +389,37 @@ TcpTransmitSegment (
 **/\r
 NET_BUF *\r
 TcpGetSegmentSndQue (\r
-  IN TCP_CB    *Tcb,\r
-  IN TCP_SEQNO Seq,\r
-  IN UINT32    Len\r
+  IN TCP_CB     *Tcb,\r
+  IN TCP_SEQNO  Seq,\r
+  IN UINT32     Len\r
   )\r
 {\r
-  LIST_ENTRY      *Head;\r
-  LIST_ENTRY      *Cur;\r
-  NET_BUF         *Node;\r
-  TCP_SEG         *Seg;\r
-  NET_BUF         *Nbuf;\r
-  TCP_SEQNO       End;\r
-  UINT8           *Data;\r
-  UINT8           Flag;\r
-  INT32           Offset;\r
-  INT32           CopyLen;\r
+  LIST_ENTRY  *Head;\r
+  LIST_ENTRY  *Cur;\r
+  NET_BUF     *Node;\r
+  TCP_SEG     *Seg;\r
+  NET_BUF     *Nbuf;\r
+  TCP_SEQNO   End;\r
+  UINT8       *Data;\r
+  UINT8       Flag;\r
+  INT32       Offset;\r
+  INT32       CopyLen;\r
 \r
   ASSERT ((Tcb != NULL) && TCP_SEQ_LEQ (Seq, Tcb->SndNxt) && (Len > 0));\r
 \r
   //\r
   // Find the segment that contains the Seq.\r
   //\r
-  Head  = &Tcb->SndQue;\r
+  Head = &Tcb->SndQue;\r
 \r
-  Node  = NULL;\r
-  Seg   = NULL;\r
+  Node = NULL;\r
+  Seg  = NULL;\r
 \r
   NET_LIST_FOR_EACH (Cur, Head) {\r
-    Node  = NET_LIST_USER_STRUCT (Cur, NET_BUF, List);\r
-    Seg   = TCPSEG_NETBUF (Node);\r
+    Node = NET_LIST_USER_STRUCT (Cur, NET_BUF, List);\r
+    Seg  = TCPSEG_NETBUF (Node);\r
 \r
     if (TCP_SEQ_LT (Seq, Seg->End) && TCP_SEQ_LEQ (Seg->Seq, Seq)) {\r
-\r
       break;\r
     }\r
   }\r
@@ -450,8 +435,8 @@ TcpGetSegmentSndQue (
   if ((Seg->Seq == Seq) &&\r
       TCP_SEQ_LEQ (Seg->End, Seg->Seq + Len) &&\r
       !NET_BUF_SHARED (Node)\r
-      ) {\r
-\r
+      )\r
+  {\r
     NET_GET_REF (Node);\r
     return Node;\r
   }\r
@@ -467,8 +452,8 @@ TcpGetSegmentSndQue (
 \r
   NetbufReserve (Nbuf, TCP_MAX_HEAD);\r
 \r
-  Flag  = Seg->Flag;\r
-  End   = Seg->End;\r
+  Flag = Seg->Flag;\r
+  End  = Seg->End;\r
 \r
   if (TCP_SEQ_LT (Seq + Len, Seg->End)) {\r
     End = Seq + Len;\r
@@ -479,18 +464,15 @@ TcpGetSegmentSndQue (
 \r
   //\r
   // If SYN is set and out of the range, clear the flag.\r
-  // Becuase the sequence of the first byte is SEG.SEQ+1,\r
+  // Because the sequence of the first byte is SEG.SEQ+1,\r
   // adjust Offset by -1. If SYN is in the range, copy\r
   // one byte less.\r
   //\r
   if (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)) {\r
-\r
     if (TCP_SEQ_LT (Seg->Seq, Seq)) {\r
-\r
       TCP_CLEAR_FLG (Flag, TCP_FLG_SYN);\r
       Offset--;\r
     } else {\r
-\r
       CopyLen--;\r
     }\r
   }\r
@@ -500,12 +482,9 @@ TcpGetSegmentSndQue (
   // and if it is out of the range, clear the flag.\r
   //\r
   if (TCP_FLG_ON (Seg->Flag, TCP_FLG_FIN)) {\r
-\r
     if (Seg->End == End) {\r
-\r
       CopyLen--;\r
     } else {\r
-\r
       TCP_CLEAR_FLG (Flag, TCP_FLG_FIN);\r
     }\r
   }\r
@@ -519,16 +498,16 @@ TcpGetSegmentSndQue (
     Data = NetbufAllocSpace (Nbuf, CopyLen, NET_BUF_TAIL);\r
     ASSERT (Data != NULL);\r
 \r
-    if ((INT32) NetbufCopy (Node, Offset, CopyLen, Data) != CopyLen) {\r
+    if ((INT32)NetbufCopy (Node, Offset, CopyLen, Data) != CopyLen) {\r
       goto OnError;\r
     }\r
   }\r
 \r
   CopyMem (TCPSEG_NETBUF (Nbuf), Seg, sizeof (TCP_SEG));\r
 \r
-  TCPSEG_NETBUF (Nbuf)->Seq   = Seq;\r
-  TCPSEG_NETBUF (Nbuf)->End   = End;\r
-  TCPSEG_NETBUF (Nbuf)->Flag  = Flag;\r
+  TCPSEG_NETBUF (Nbuf)->Seq  = Seq;\r
+  TCPSEG_NETBUF (Nbuf)->End  = End;\r
+  TCPSEG_NETBUF (Nbuf)->Flag = Flag;\r
 \r
   return Nbuf;\r
 \r
@@ -549,14 +528,14 @@ OnError:
 **/\r
 NET_BUF *\r
 TcpGetSegmentSock (\r
-  IN TCP_CB    *Tcb,\r
-  IN TCP_SEQNO Seq,\r
-  IN UINT32    Len\r
+  IN TCP_CB     *Tcb,\r
+  IN TCP_SEQNO  Seq,\r
+  IN UINT32     Len\r
   )\r
 {\r
-  NET_BUF *Nbuf;\r
-  UINT8   *Data;\r
-  UINT32  DataGet;\r
+  NET_BUF  *Nbuf;\r
+  UINT8    *Data;\r
+  UINT32   DataGet;\r
 \r
   ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL));\r
 \r
@@ -564,9 +543,9 @@ TcpGetSegmentSock (
 \r
   if (Nbuf == NULL) {\r
     DEBUG (\r
-      (EFI_D_ERROR,\r
-      "TcpGetSegmentSock: failed to allocate a netbuf for TCB %p\n",\r
-      Tcb)\r
+      (DEBUG_ERROR,\r
+       "TcpGetSegmentSock: failed to allocate a netbuf for TCB %p\n",\r
+       Tcb)\r
       );\r
 \r
     return NULL;\r
@@ -594,7 +573,6 @@ TcpGetSegmentSock (
   InsertTailList (&(Tcb->SndQue), &(Nbuf->List));\r
 \r
   if (DataGet != 0) {\r
-\r
     SockDataSent (Tcb->Sk, DataGet);\r
   }\r
 \r
@@ -614,12 +592,12 @@ TcpGetSegmentSock (
 **/\r
 NET_BUF *\r
 TcpGetSegment (\r
-  IN TCP_CB    *Tcb,\r
-  IN TCP_SEQNO Seq,\r
-  IN UINT32    Len\r
+  IN TCP_CB     *Tcb,\r
+  IN TCP_SEQNO  Seq,\r
+  IN UINT32     Len\r
   )\r
 {\r
-  NET_BUF *Nbuf;\r
+  NET_BUF  *Nbuf;\r
 \r
   ASSERT (Tcb != NULL);\r
 \r
@@ -627,14 +605,16 @@ TcpGetSegment (
   // Compare the SndNxt with the max sequence number sent.\r
   //\r
   if ((Len != 0) && TCP_SEQ_LT (Seq, TcpGetMaxSndNxt (Tcb))) {\r
-\r
     Nbuf = TcpGetSegmentSndQue (Tcb, Seq, Len);\r
   } else {\r
-\r
     Nbuf = TcpGetSegmentSock (Tcb, Seq, Len);\r
   }\r
 \r
-  ASSERT (TcpVerifySegment (Nbuf) != 0);\r
+  if (TcpVerifySegment (Nbuf) == 0) {\r
+    NetbufFree (Nbuf);\r
+    return NULL;\r
+  }\r
+\r
   return Nbuf;\r
 }\r
 \r
@@ -650,15 +630,15 @@ TcpGetSegment (
 **/\r
 INTN\r
 TcpRetransmit (\r
-  IN TCP_CB    *Tcb,\r
-  IN TCP_SEQNO Seq\r
+  IN TCP_CB     *Tcb,\r
+  IN TCP_SEQNO  Seq\r
   )\r
 {\r
-  NET_BUF *Nbuf;\r
-  UINT32  Len;\r
+  NET_BUF  *Nbuf;\r
+  UINT32   Len;\r
 \r
   //\r
-  // Compute the maxium length of retransmission. It is\r
+  // Compute the maximum length of retransmission. It is\r
   // limited by three factors:\r
   // 1. Less than SndMss\r
   // 2. Must in the current send window\r
@@ -673,22 +653,21 @@ TcpRetransmit (
   //   as the original segment was in window when it was sent.\r
   //\r
   if ((Tcb->SndWndScale != 0) &&\r
-      (TCP_SEQ_GT (Seq, Tcb->RetxmitSeqMax) || TCP_SEQ_BETWEEN (Tcb->SndWl2 + Tcb->SndWnd, Seq, Tcb->SndWl2 + Tcb->SndWnd + (1 << Tcb->SndWndScale)))) {\r
+      (TCP_SEQ_GT (Seq, Tcb->RetxmitSeqMax) || TCP_SEQ_BETWEEN (Tcb->SndWl2 + Tcb->SndWnd, Seq, Tcb->SndWl2 + Tcb->SndWnd + (1 << Tcb->SndWndScale))))\r
+  {\r
     Len = TCP_SUB_SEQ (Tcb->SndNxt, Seq);\r
     DEBUG (\r
-      (EFI_D_WARN,\r
-      "TcpRetransmit: retransmission without regard to the receiver window for TCB %p\n",\r
-      Tcb)\r
+      (DEBUG_WARN,\r
+       "TcpRetransmit: retransmission without regard to the receiver window for TCB %p\n",\r
+       Tcb)\r
       );\r
-    \r
   } else if (TCP_SEQ_GEQ (Tcb->SndWl2 + Tcb->SndWnd, Seq)) {\r
     Len = TCP_SUB_SEQ (Tcb->SndWl2 + Tcb->SndWnd, Seq);\r
-    \r
   } else {\r
     DEBUG (\r
-      (EFI_D_WARN,\r
-      "TcpRetransmit: retransmission cancelled because send window too small for TCB %p\n",\r
-      Tcb)\r
+      (DEBUG_WARN,\r
+       "TcpRetransmit: retransmission cancelled because send window too small for TCB %p\n",\r
+       Tcb)\r
       );\r
 \r
     return 0;\r
@@ -701,7 +680,9 @@ TcpRetransmit (
     return -1;\r
   }\r
 \r
-  ASSERT (TcpVerifySegment (Nbuf) != 0);\r
+  if (TcpVerifySegment (Nbuf) == 0) {\r
+    goto OnError;\r
+  }\r
 \r
   if (TcpTransmitSegment (Tcb, Nbuf) != 0) {\r
     goto OnError;\r
@@ -742,16 +723,17 @@ OnError:
 **/\r
 INTN\r
 TcpCheckSndQue (\r
-  IN LIST_ENTRY     *Head\r
+  IN LIST_ENTRY  *Head\r
   )\r
 {\r
-  LIST_ENTRY      *Entry;\r
-  NET_BUF         *Nbuf;\r
-  TCP_SEQNO       Seq;\r
+  LIST_ENTRY  *Entry;\r
+  NET_BUF     *Nbuf;\r
+  TCP_SEQNO   Seq;\r
 \r
   if (IsListEmpty (Head)) {\r
     return 1;\r
   }\r
+\r
   //\r
   // Initialize the Seq.\r
   //\r
@@ -792,24 +774,23 @@ TcpCheckSndQue (
 **/\r
 INTN\r
 TcpToSendData (\r
-  IN OUT TCP_CB *Tcb,\r
-  IN     INTN   Force\r
+  IN OUT TCP_CB  *Tcb,\r
+  IN     INTN    Force\r
   )\r
 {\r
-  UINT32    Len;\r
-  INTN      Sent;\r
-  UINT8     Flag;\r
-  NET_BUF   *Nbuf;\r
-  TCP_SEG   *Seg;\r
-  TCP_SEQNO Seq;\r
-  TCP_SEQNO End;\r
+  UINT32     Len;\r
+  INTN       Sent;\r
+  UINT8      Flag;\r
+  NET_BUF    *Nbuf;\r
+  TCP_SEG    *Seg;\r
+  TCP_SEQNO  Seq;\r
+  TCP_SEQNO  End;\r
 \r
   ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL) && (Tcb->State != TCP_LISTEN));\r
 \r
   Sent = 0;\r
 \r
   if ((Tcb->State == TCP_CLOSED) || TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_SENT)) {\r
-\r
     return 0;\r
   }\r
 \r
@@ -817,14 +798,13 @@ TcpToSendData (
     //\r
     // Compute how much data can be sent\r
     //\r
-    Len   = TcpDataToSend (Tcb, Force);\r
-    Seq   = Tcb->SndNxt;\r
+    Len = TcpDataToSend (Tcb, Force);\r
+    Seq = Tcb->SndNxt;\r
 \r
     ASSERT ((Tcb->State) < (ARRAY_SIZE (mTcpOutFlag)));\r
-    Flag  = mTcpOutFlag[Tcb->State];\r
+    Flag = mTcpOutFlag[Tcb->State];\r
 \r
     if ((Flag & TCP_FLG_SYN) != 0) {\r
-\r
       Seq = Tcb->Iss;\r
       Len = 0;\r
     }\r
@@ -841,9 +821,9 @@ TcpToSendData (
 \r
     if (Nbuf == NULL) {\r
       DEBUG (\r
-        (EFI_D_ERROR,\r
-        "TcpToSendData: failed to get a segment for TCB %p\n",\r
-        Tcb)\r
+        (DEBUG_ERROR,\r
+         "TcpToSendData: failed to get a segment for TCB %p\n",\r
+         Tcb)\r
         );\r
 \r
       goto OnError;\r
@@ -868,12 +848,13 @@ TcpToSendData (
       if ((TcpGetMaxSndNxt (Tcb) == Tcb->SndNxt) &&\r
           (GET_SND_DATASIZE (Tcb->Sk) == 0) &&\r
           TCP_SEQ_LT (End + 1, Tcb->SndWnd + Tcb->SndWl2)\r
-            ) {\r
+          )\r
+      {\r
         DEBUG (\r
-          (EFI_D_NET,\r
-          "TcpToSendData: send FIN to peer for TCB %p in state %s\n",\r
-          Tcb,\r
-          mTcpStateName[Tcb->State])\r
+          (DEBUG_NET,\r
+           "TcpToSendData: send FIN to peer for TCB %p in state %s\n",\r
+           Tcb,\r
+           mTcpStateName[Tcb->State])\r
           );\r
 \r
         End++;\r
@@ -886,28 +867,33 @@ TcpToSendData (
     Seg->End  = End;\r
     Seg->Flag = Flag;\r
 \r
-    ASSERT (TcpVerifySegment (Nbuf) != 0);\r
-    ASSERT (TcpCheckSndQue (&Tcb->SndQue) != 0);\r
+    if ((TcpVerifySegment (Nbuf) == 0) || (TcpCheckSndQue (&Tcb->SndQue) == 0)) {\r
+      DEBUG (\r
+        (DEBUG_ERROR,\r
+         "TcpToSendData: discard a broken segment for TCB %p\n",\r
+         Tcb)\r
+        );\r
+      goto OnError;\r
+    }\r
 \r
     //\r
     // Don't send an empty segment here.\r
     //\r
     if (Seg->End == Seg->Seq) {\r
       DEBUG (\r
-        (EFI_D_WARN,\r
-        "TcpToSendData: created a empty segment for TCB %p, free it now\n",\r
-        Tcb)\r
+        (DEBUG_WARN,\r
+         "TcpToSendData: created a empty segment for TCB %p, free it now\n",\r
+         Tcb)\r
         );\r
 \r
-      NetbufFree (Nbuf);\r
-      return Sent;\r
+      goto OnError;\r
     }\r
 \r
     if (TcpTransmitSegment (Tcb, Nbuf) != 0) {\r
       NetbufTrim (Nbuf, (Nbuf->Tcp->HeadLen << 2), NET_BUF_HEAD);\r
       Nbuf->Tcp = NULL;\r
 \r
-      if ((Flag & TCP_FLG_FIN) != 0)  {\r
+      if ((Flag & TCP_FLG_FIN) != 0) {\r
         TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_FIN_SENT);\r
       }\r
 \r
@@ -948,19 +934,17 @@ TcpToSendData (
     // Karn's algorithm requires not to update RTT when in loss.\r
     //\r
     if ((Tcb->CongestState == TCP_CONGEST_OPEN) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RTT_ON)) {\r
-\r
       DEBUG (\r
-        (EFI_D_NET,\r
-        "TcpToSendData: set RTT measure sequence %d for TCB %p\n",\r
-        Seq,\r
-        Tcb)\r
+        (DEBUG_NET,\r
+         "TcpToSendData: set RTT measure sequence %d for TCB %p\n",\r
+         Seq,\r
+         Tcb)\r
         );\r
 \r
       TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RTT_ON);\r
       Tcb->RttSeq     = Seq;\r
       Tcb->RttMeasure = 0;\r
     }\r
-\r
   } while (Len == Tcb->SndMss);\r
 \r
   return Sent;\r
@@ -981,11 +965,11 @@ OnError:
 **/\r
 VOID\r
 TcpSendAck (\r
-  IN OUT TCP_CB *Tcb\r
+  IN OUT TCP_CB  *Tcb\r
   )\r
 {\r
-  NET_BUF *Nbuf;\r
-  TCP_SEG *Seg;\r
+  NET_BUF  *Nbuf;\r
+  TCP_SEG  *Seg;\r
 \r
   Nbuf = NetbufAlloc (TCP_MAX_HEAD);\r
 \r
@@ -1019,11 +1003,11 @@ TcpSendAck (
 **/\r
 INTN\r
 TcpSendZeroProbe (\r
-  IN OUT TCP_CB *Tcb\r
+  IN OUT TCP_CB  *Tcb\r
   )\r
 {\r
-  NET_BUF *Nbuf;\r
-  TCP_SEG *Seg;\r
+  NET_BUF  *Nbuf;\r
+  TCP_SEG  *Seg;\r
   INTN     Result;\r
 \r
   Nbuf = NetbufAlloc (TCP_MAX_HEAD);\r
@@ -1043,7 +1027,7 @@ TcpSendZeroProbe (
   Seg->End  = Tcb->SndNxt - 1;\r
   Seg->Flag = TCP_FLG_ACK;\r
 \r
-  Result    = TcpTransmitSegment (Tcb, Nbuf);\r
+  Result = TcpTransmitSegment (Tcb, Nbuf);\r
   NetbufFree (Nbuf);\r
 \r
   return Result;\r
@@ -1057,10 +1041,10 @@ TcpSendZeroProbe (
 **/\r
 VOID\r
 TcpToSendAck (\r
-  IN OUT TCP_CB *Tcb\r
+  IN OUT TCP_CB  *Tcb\r
   )\r
 {\r
-  UINT32 TcpNow;\r
+  UINT32  TcpNow;\r
 \r
   //\r
   // Generally, TCP should send a delayed ACK unless:\r
@@ -1081,9 +1065,9 @@ TcpToSendAck (
   }\r
 \r
   DEBUG (\r
-    (EFI_D_NET,\r
-    "TcpToSendAck: scheduled a delayed ACK for TCB %p\n",\r
-    Tcb)\r
+    (DEBUG_NET,\r
+     "TcpToSendAck: scheduled a delayed ACK for TCB %p\n",\r
+     Tcb)\r
     );\r
 \r
   //\r
@@ -1134,7 +1118,7 @@ TcpSendReset (
     return -1;\r
   }\r
 \r
-  Nhead = (TCP_HEAD *) NetbufAllocSpace (\r
+  Nhead = (TCP_HEAD *)NetbufAllocSpace (\r
                         Nbuf,\r
                         sizeof (TCP_HEAD),\r
                         NET_BUF_TAIL\r
@@ -1150,25 +1134,23 @@ TcpSendReset (
   // is associated with it, otherwise derive from the Tcb.\r
   //\r
   if (Tcb == NULL) {\r
-\r
     if (TCP_FLG_ON (Head->Flag, TCP_FLG_ACK)) {\r
-      Nhead->Seq  = Head->Ack;\r
-      Nhead->Ack  = 0;\r
+      Nhead->Seq = Head->Ack;\r
+      Nhead->Ack = 0;\r
     } else {\r
       Nhead->Seq = 0;\r
       TCP_SET_FLG (Nhead->Flag, TCP_FLG_ACK);\r
       Nhead->Ack = HTONL (NTOHL (Head->Seq) + Len);\r
     }\r
   } else {\r
-\r
-    Nhead->Seq  = HTONL (Tcb->SndNxt);\r
-    Nhead->Ack  = HTONL (Tcb->RcvNxt);\r
+    Nhead->Seq = HTONL (Tcb->SndNxt);\r
+    Nhead->Ack = HTONL (Tcb->RcvNxt);\r
     TCP_SET_FLG (Nhead->Flag, TCP_FLG_ACK);\r
   }\r
 \r
   Nhead->SrcPort  = Head->DstPort;\r
   Nhead->DstPort  = Head->SrcPort;\r
-  Nhead->HeadLen  = (UINT8) (sizeof (TCP_HEAD) >> 2);\r
+  Nhead->HeadLen  = (UINT8)(sizeof (TCP_HEAD) >> 2);\r
   Nhead->Res      = 0;\r
   Nhead->Wnd      = HTONS (0xFFFF);\r
   Nhead->Checksum = 0;\r
@@ -1200,7 +1182,7 @@ TcpSendReset (
 **/\r
 INTN\r
 TcpVerifySegment (\r
-  IN NET_BUF *Nbuf\r
+  IN NET_BUF  *Nbuf\r
   )\r
 {\r
   TCP_HEAD  *Head;\r
@@ -1213,9 +1195,9 @@ TcpVerifySegment (
 \r
   NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE);\r
 \r
-  Seg   = TCPSEG_NETBUF (Nbuf);\r
-  Len   = Nbuf->TotalSize;\r
-  Head  = Nbuf->Tcp;\r
+  Seg  = TCPSEG_NETBUF (Nbuf);\r
+  Len  = Nbuf->TotalSize;\r
+  Head = Nbuf->Tcp;\r
 \r
   if (Head != NULL) {\r
     if (Head->Flag != Seg->Flag) {\r
@@ -1239,4 +1221,3 @@ TcpVerifySegment (
 \r
   return 1;\r
 }\r
-\r