]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/TcpDxe/TcpMisc.c
NetworkPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / NetworkPkg / TcpDxe / TcpMisc.c
index 0a4eda37c892225380be1fb753e5fd9ceb269340..8b0313a028208edf601d144f7f1a96ea17f3a177 100644 (file)
@@ -2,15 +2,9 @@
   Misc support routines for TCP driver.\r
 \r
   (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
-  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2017, 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
@@ -86,6 +80,7 @@ TcpInitTcbLocal (
   // First window size is never scaled\r
   //\r
   Tcb->RcvWndScale  = 0;\r
+  Tcb->RetxmitSeqMax = 0;\r
 \r
   Tcb->ProbeTimerOn = FALSE;\r
 }\r
@@ -161,6 +156,8 @@ TcpInitTcbPeer (
     TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_TS);\r
     TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS);\r
 \r
+    Tcb->TsRecent = Opt->TSVal;\r
+\r
     //\r
     // Compute the effective SndMss per RFC1122\r
     // section 4.2.2.6. If timestamp option is\r
@@ -564,7 +561,31 @@ TcpGetRcvMss (
   } else {\r
     Ip6 = TcpProto->TcpService->IpIo->Ip.Ip6;\r
     ASSERT (Ip6 != NULL);\r
-    Ip6->GetModeData (Ip6, &Ip6Mode, NULL, NULL);\r
+    if (!EFI_ERROR (Ip6->GetModeData (Ip6, &Ip6Mode, NULL, NULL))) {\r
+      if (Ip6Mode.AddressList != NULL) {\r
+        FreePool (Ip6Mode.AddressList);\r
+      }\r
+\r
+      if (Ip6Mode.GroupTable != NULL) {\r
+        FreePool (Ip6Mode.GroupTable);\r
+      }\r
+\r
+      if (Ip6Mode.RouteTable != NULL) {\r
+        FreePool (Ip6Mode.RouteTable);\r
+      }\r
+\r
+      if (Ip6Mode.NeighborCache != NULL) {\r
+        FreePool (Ip6Mode.NeighborCache);\r
+      }\r
+\r
+      if (Ip6Mode.PrefixTable != NULL) {\r
+        FreePool (Ip6Mode.PrefixTable);\r
+      }\r
+\r
+      if (Ip6Mode.IcmpTypeList != NULL) {\r
+        FreePool (Ip6Mode.IcmpTypeList);\r
+      }\r
+    }\r
 \r
     return (UINT16) (Ip6Mode.MaxPacketSize - sizeof (TCP_HEAD));\r
   }\r
@@ -587,7 +608,7 @@ TcpSetState (
   ASSERT (State < (sizeof (mTcpStateName) / sizeof (CHAR16 *)));\r
 \r
   DEBUG (\r
-    (EFI_D_INFO,\r
+    (EFI_D_NET,\r
     "Tcb (%p) state %s --> %s\n",\r
     Tcb,\r
     mTcpStateName[Tcb->State],\r
@@ -836,7 +857,7 @@ TcpOnAppConsume (
       if (TcpOld < Tcb->RcvMss) {\r
 \r
         DEBUG (\r
-          (EFI_D_INFO,\r
+          (EFI_D_NET,\r
           "TcpOnAppConsume: send a window update for a window closed Tcb %p\n",\r
           Tcb)\r
           );\r
@@ -845,7 +866,7 @@ TcpOnAppConsume (
       } else if (Tcb->DelayedAck == 0) {\r
 \r
         DEBUG (\r
-          (EFI_D_INFO,\r
+          (EFI_D_NET,\r
           "TcpOnAppConsume: scheduled a delayed ACK to update window for Tcb %p\n",\r
           Tcb)\r
           );\r