]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/UefiPxeBcDxe/PxeBcSupport.c
NetworkPkg: Apply uncrustify changes
[mirror_edk2.git] / NetworkPkg / UefiPxeBcDxe / PxeBcSupport.c
index 36b0665a96b888a9753ffa493d3c1b5d6d34a12e..887ea3e7d7d8151ad5d81f3a7184a53456a8c3fc 100644 (file)
@@ -1,23 +1,16 @@
 /** @file\r
   Support functions implementation for UefiPxeBc Driver.\r
 \r
-  Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2007 - 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
 #include "PxeBcImpl.h"\r
 \r
-\r
 /**\r
-  Flush the previous configration using the new station Ip address.\r
+  Flush the previous configuration using the new station Ip address.\r
 \r
   @param[in]   Private        The pointer to the PxeBc private data.\r
   @param[in]   StationIp      The pointer to the station Ip address.\r
 **/\r
 EFI_STATUS\r
 PxeBcFlushStationIp (\r
-  PXEBC_PRIVATE_DATA       *Private,\r
-  EFI_IP_ADDRESS           *StationIp,\r
-  EFI_IP_ADDRESS           *SubnetMask     OPTIONAL\r
+  PXEBC_PRIVATE_DATA  *Private,\r
+  EFI_IP_ADDRESS      *StationIp      OPTIONAL,\r
+  EFI_IP_ADDRESS      *SubnetMask     OPTIONAL\r
   )\r
 {\r
-  EFI_PXE_BASE_CODE_MODE   *Mode;\r
-  EFI_STATUS               Status;\r
-\r
-  ASSERT (StationIp != NULL);\r
+  EFI_PXE_BASE_CODE_MODE  *Mode;\r
+  EFI_STATUS              Status;\r
+  EFI_ARP_CONFIG_DATA     ArpConfigData;\r
 \r
   Mode   = Private->PxeBc.Mode;\r
   Status = EFI_SUCCESS;\r
+  ZeroMem (&ArpConfigData, sizeof (EFI_ARP_CONFIG_DATA));\r
 \r
-  if (Mode->UsingIpv6) {\r
-\r
+  if (Mode->UsingIpv6 && (StationIp != NULL)) {\r
+    //\r
+    // Overwrite Udp6CfgData/Ip6CfgData StationAddress.\r
+    //\r
     CopyMem (&Private->Udp6CfgData.StationAddress, StationIp, sizeof (EFI_IPv6_ADDRESS));\r
     CopyMem (&Private->Ip6CfgData.StationAddress, StationIp, sizeof (EFI_IPv6_ADDRESS));\r
 \r
@@ -60,31 +55,62 @@ PxeBcFlushStationIp (
 \r
     Status = Private->Ip6->Receive (Private->Ip6, &Private->Icmp6Token);\r
   } else {\r
-    ASSERT (SubnetMask != NULL);\r
-    CopyMem (&Private->Udp4CfgData.StationAddress, StationIp, sizeof (EFI_IPv4_ADDRESS));\r
-    CopyMem (&Private->Udp4CfgData.SubnetMask, SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
-    CopyMem (&Private->Ip4CfgData.StationAddress, StationIp, sizeof (EFI_IPv4_ADDRESS));\r
-    CopyMem (&Private->Ip4CfgData.SubnetMask, SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
+    if (StationIp != NULL) {\r
+      //\r
+      // Reconfigure the ARP instance with station Ip address.\r
+      //\r
+      ArpConfigData.SwAddressType   = 0x0800;\r
+      ArpConfigData.SwAddressLength = (UINT8)sizeof (EFI_IPv4_ADDRESS);\r
+      ArpConfigData.StationAddress  = StationIp;\r
 \r
-    //\r
-    // Reconfigure the Ip4 instance to capture background ICMP packets with new station Ip address.\r
-    //\r
-    Private->Ip4->Cancel (Private->Ip4, &Private->IcmpToken);\r
-    Private->Ip4->Configure (Private->Ip4, NULL);\r
+      Private->Arp->Configure (Private->Arp, NULL);\r
+      Private->Arp->Configure (Private->Arp, &ArpConfigData);\r
 \r
-    Status = Private->Ip4->Configure (Private->Ip4, &Private->Ip4CfgData);\r
-    if (EFI_ERROR (Status)) {\r
-      goto ON_EXIT;\r
+      //\r
+      // Overwrite Udp4CfgData/Ip4CfgData StationAddress.\r
+      //\r
+      CopyMem (&Private->Udp4CfgData.StationAddress, StationIp, sizeof (EFI_IPv4_ADDRESS));\r
+      CopyMem (&Private->Ip4CfgData.StationAddress, StationIp, sizeof (EFI_IPv4_ADDRESS));\r
     }\r
 \r
-    Status = Private->Ip4->Receive (Private->Ip4, &Private->IcmpToken);\r
+    if (SubnetMask != NULL) {\r
+      //\r
+      // Overwrite Udp4CfgData/Ip4CfgData SubnetMask.\r
+      //\r
+      CopyMem (&Private->Udp4CfgData.SubnetMask, SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
+      CopyMem (&Private->Ip4CfgData.SubnetMask, SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
+    }\r
+\r
+    if ((StationIp != NULL) && (SubnetMask != NULL)) {\r
+      //\r
+      // Updated the route table.\r
+      //\r
+      Mode->RouteTableEntries                = 1;\r
+      Mode->RouteTable[0].IpAddr.Addr[0]     = StationIp->Addr[0] & SubnetMask->Addr[0];\r
+      Mode->RouteTable[0].SubnetMask.Addr[0] = SubnetMask->Addr[0];\r
+      Mode->RouteTable[0].GwAddr.Addr[0]     = 0;\r
+    }\r
+\r
+    if ((StationIp != NULL) || (SubnetMask != NULL)) {\r
+      //\r
+      // Reconfigure the Ip4 instance to capture background ICMP packets with new station Ip address.\r
+      //\r
+      Private->Ip4->Cancel (Private->Ip4, &Private->IcmpToken);\r
+      Private->Ip4->Configure (Private->Ip4, NULL);\r
+\r
+      Status = Private->Ip4->Configure (Private->Ip4, &Private->Ip4CfgData);\r
+      if (EFI_ERROR (Status)) {\r
+        goto ON_EXIT;\r
+      }\r
+\r
+      Status = Private->Ip4->Receive (Private->Ip4, &Private->IcmpToken);\r
+    }\r
   }\r
 \r
 ON_EXIT:\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Notify the callback function when an event is triggered.\r
 \r
@@ -95,20 +121,19 @@ ON_EXIT:
 VOID\r
 EFIAPI\r
 PxeBcCommonNotify (\r
-  IN EFI_EVENT           Event,\r
-  IN VOID                *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
-  *((BOOLEAN *) Context) = TRUE;\r
+  *((BOOLEAN *)Context) = TRUE;\r
 }\r
 \r
-\r
 /**\r
   Do arp resolution from arp cache in PxeBcMode.\r
 \r
   @param  Mode           The pointer to EFI_PXE_BASE_CODE_MODE.\r
   @param  Ip4Addr        The Ip4 address for resolution.\r
-  @param  MacAddress     The resoluted MAC address if the resolution is successful.\r
+  @param  MacAddress     The resolved MAC address if the resolution is successful.\r
                          The value is undefined if the resolution fails.\r
 \r
   @retval TRUE           Found an matched entry.\r
@@ -117,12 +142,12 @@ PxeBcCommonNotify (
 **/\r
 BOOLEAN\r
 PxeBcCheckArpCache (\r
-  IN  EFI_PXE_BASE_CODE_MODE    *Mode,\r
-  IN  EFI_IPv4_ADDRESS          *Ip4Addr,\r
-  OUT EFI_MAC_ADDRESS           *MacAddress\r
+  IN  EFI_PXE_BASE_CODE_MODE  *Mode,\r
+  IN  EFI_IPv4_ADDRESS        *Ip4Addr,\r
+  OUT EFI_MAC_ADDRESS         *MacAddress\r
   )\r
 {\r
-  UINT32       Index;\r
+  UINT32  Index;\r
 \r
   ASSERT (!Mode->UsingIpv6);\r
 \r
@@ -143,7 +168,6 @@ PxeBcCheckArpCache (
   return FALSE;\r
 }\r
 \r
-\r
 /**\r
   Update the arp cache periodically.\r
 \r
@@ -154,8 +178,8 @@ PxeBcCheckArpCache (
 VOID\r
 EFIAPI\r
 PxeBcArpCacheUpdate (\r
-  IN EFI_EVENT            Event,\r
-  IN VOID                 *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
   PXEBC_PRIVATE_DATA      *Private;\r
@@ -166,7 +190,7 @@ PxeBcArpCacheUpdate (
   UINT32                  Index;\r
   EFI_STATUS              Status;\r
 \r
-  Private = (PXEBC_PRIVATE_DATA *) Context;\r
+  Private = (PXEBC_PRIVATE_DATA *)Context;\r
   Mode    = Private->PxeBc.Mode;\r
 \r
   ASSERT (!Mode->UsingIpv6);\r
@@ -200,14 +224,13 @@ PxeBcArpCacheUpdate (
       );\r
     CopyMem (\r
       &Mode->ArpCache[Index].MacAddr,\r
-      (UINT8 *) (ArpEntry + 1) + ArpEntry->SwAddressLength,\r
+      (UINT8 *)(ArpEntry + 1) + ArpEntry->SwAddressLength,\r
       ArpEntry->HwAddressLength\r
       );\r
-    ArpEntry = (EFI_ARP_FIND_DATA *) ((UINT8 *) ArpEntry + EntryLength);\r
+    ArpEntry = (EFI_ARP_FIND_DATA *)((UINT8 *)ArpEntry + EntryLength);\r
   }\r
 }\r
 \r
-\r
 /**\r
   Notify function to handle the received ICMP message in DPC.\r
 \r
@@ -217,20 +240,20 @@ PxeBcArpCacheUpdate (
 VOID\r
 EFIAPI\r
 PxeBcIcmpErrorDpcHandle (\r
-  IN VOID                      *Context\r
+  IN VOID  *Context\r
   )\r
 {\r
-  EFI_STATUS                   Status;\r
-  EFI_IP4_RECEIVE_DATA         *RxData;\r
-  EFI_IP4_PROTOCOL             *Ip4;\r
-  PXEBC_PRIVATE_DATA           *Private;\r
-  EFI_PXE_BASE_CODE_MODE       *Mode;\r
-  UINT8                        Type;\r
-  UINTN                        Index;\r
-  UINT32                       CopiedLen;\r
-  UINT8                        *IcmpError;\r
-\r
-  Private = (PXEBC_PRIVATE_DATA *) Context;\r
+  EFI_STATUS              Status;\r
+  EFI_IP4_RECEIVE_DATA    *RxData;\r
+  EFI_IP4_PROTOCOL        *Ip4;\r
+  PXEBC_PRIVATE_DATA      *Private;\r
+  EFI_PXE_BASE_CODE_MODE  *Mode;\r
+  UINT8                   Type;\r
+  UINTN                   Index;\r
+  UINT32                  CopiedLen;\r
+  UINT8                   *IcmpError;\r
+\r
+  Private = (PXEBC_PRIVATE_DATA *)Context;\r
   Mode    = &Private->Mode;\r
   Status  = Private->IcmpToken.Status;\r
   RxData  = Private->IcmpToken.Packet.RxData;\r
@@ -253,54 +276,51 @@ PxeBcIcmpErrorDpcHandle (
     //\r
     // The return status should be recognized as EFI_ICMP_ERROR.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
-  if (EFI_IP4 (RxData->Header->SourceAddress) != 0 &&\r
-      !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), 0)) {\r
+  if ((EFI_IP4 (RxData->Header->SourceAddress) != 0) &&\r
+      (NTOHL (Mode->SubnetMask.Addr[0]) != 0) &&\r
+      IP4_NET_EQUAL (NTOHL (Mode->StationIp.Addr[0]), EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])) &&\r
+      !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])))\r
+  {\r
     //\r
     // The source address of the received packet should be a valid unicast address.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
   if (!EFI_IP4_EQUAL (&RxData->Header->DestinationAddress, &Mode->StationIp.v4)) {\r
     //\r
     // The destination address of the received packet should be equal to the host address.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
-  if (RxData->Header->Protocol != EFI_IP_PROTO_ICMP) {\r
-    //\r
-    // The protocol value in the header of the receveid packet should be EFI_IP_PROTO_ICMP.\r
-    //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
-  }\r
+  //\r
+  // The protocol has been configured to only receive ICMP packet.\r
+  //\r
+  ASSERT (RxData->Header->Protocol == EFI_IP_PROTO_ICMP);\r
 \r
-  Type = *((UINT8 *) RxData->FragmentTable[0].FragmentBuffer);\r
+  Type = *((UINT8 *)RxData->FragmentTable[0].FragmentBuffer);\r
 \r
-  if (Type != ICMP_DEST_UNREACHABLE &&\r
-      Type != ICMP_SOURCE_QUENCH &&\r
-      Type != ICMP_REDIRECT &&\r
-      Type != ICMP_TIME_EXCEEDED &&\r
-      Type != ICMP_PARAMETER_PROBLEM) {\r
+  if ((Type != ICMP_DEST_UNREACHABLE) &&\r
+      (Type != ICMP_SOURCE_QUENCH) &&\r
+      (Type != ICMP_REDIRECT) &&\r
+      (Type != ICMP_TIME_EXCEEDED) &&\r
+      (Type != ICMP_PARAMETER_PROBLEM))\r
+  {\r
     //\r
     // The type of the receveid ICMP message should be ICMP_ERROR_MESSAGE.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
   //\r
   // Copy the right ICMP error message into mode data.\r
   //\r
   CopiedLen = 0;\r
-  IcmpError = (UINT8 *) &Mode->IcmpError;\r
+  IcmpError = (UINT8 *)&Mode->IcmpError;\r
 \r
   for (Index = 0; Index < RxData->FragmentCount; Index++) {\r
     CopiedLen += RxData->FragmentTable[Index].FragmentLength;\r
@@ -317,15 +337,18 @@ PxeBcIcmpErrorDpcHandle (
         CopiedLen - sizeof (EFI_PXE_BASE_CODE_ICMP_ERROR)\r
         );\r
     }\r
+\r
     IcmpError += CopiedLen;\r
   }\r
 \r
+ON_RECYCLE:\r
+  gBS->SignalEvent (RxData->RecycleSignal);\r
+\r
 ON_EXIT:\r
   Private->IcmpToken.Status = EFI_NOT_READY;\r
   Ip4->Receive (Ip4, &Private->IcmpToken);\r
 }\r
 \r
-\r
 /**\r
   Callback function to update the latest ICMP6 error message.\r
 \r
@@ -336,14 +359,13 @@ ON_EXIT:
 VOID\r
 EFIAPI\r
 PxeBcIcmpErrorUpdate (\r
-  IN EFI_EVENT            Event,\r
-  IN VOID                 *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
   QueueDpc (TPL_CALLBACK, PxeBcIcmpErrorDpcHandle, Context);\r
 }\r
 \r
-\r
 /**\r
   Notify function to handle the received ICMP6 message in DPC.\r
 \r
@@ -353,7 +375,7 @@ PxeBcIcmpErrorUpdate (
 VOID\r
 EFIAPI\r
 PxeBcIcmp6ErrorDpcHandle (\r
-  IN VOID                 *Context\r
+  IN VOID  *Context\r
   )\r
 {\r
   PXEBC_PRIVATE_DATA      *Private;\r
@@ -366,7 +388,7 @@ PxeBcIcmp6ErrorDpcHandle (
   UINT32                  CopiedLen;\r
   UINT8                   *Icmp6Error;\r
 \r
-  Private = (PXEBC_PRIVATE_DATA *) Context;\r
+  Private = (PXEBC_PRIVATE_DATA *)Context;\r
   Mode    = &Private->Mode;\r
   Status  = Private->Icmp6Token.Status;\r
   RxData  = Private->Icmp6Token.Packet.RxData;\r
@@ -389,53 +411,48 @@ PxeBcIcmp6ErrorDpcHandle (
     //\r
     // The return status should be recognized as EFI_ICMP_ERROR.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
   if (!NetIp6IsValidUnicast (&RxData->Header->SourceAddress)) {\r
     //\r
     // The source address of the received packet should be a valid unicast address.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
   if (!NetIp6IsUnspecifiedAddr (&Mode->StationIp.v6) &&\r
-      !EFI_IP6_EQUAL (&RxData->Header->DestinationAddress, &Mode->StationIp.v6)) {\r
+      !EFI_IP6_EQUAL (&RxData->Header->DestinationAddress, &Mode->StationIp.v6))\r
+  {\r
     //\r
     // The destination address of the received packet should be equal to the host address.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
-  if (RxData->Header->NextHeader != IP6_ICMP) {\r
-    //\r
-    // The nextheader in the header of the receveid packet should be IP6_ICMP.\r
-    //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
-  }\r
+  //\r
+  // The protocol has been configured to only receive ICMP packet.\r
+  //\r
+  ASSERT (RxData->Header->NextHeader == IP6_ICMP);\r
 \r
-  Type = *((UINT8 *) RxData->FragmentTable[0].FragmentBuffer);\r
+  Type = *((UINT8 *)RxData->FragmentTable[0].FragmentBuffer);\r
 \r
-  if (Type != ICMP_V6_DEST_UNREACHABLE &&\r
-      Type != ICMP_V6_PACKET_TOO_BIG &&\r
-      Type != ICMP_V6_PACKET_TOO_BIG &&\r
-      Type != ICMP_V6_PARAMETER_PROBLEM) {\r
+  if ((Type != ICMP_V6_DEST_UNREACHABLE) &&\r
+      (Type != ICMP_V6_PACKET_TOO_BIG) &&\r
+      (Type != ICMP_V6_TIME_EXCEEDED) &&\r
+      (Type != ICMP_V6_PARAMETER_PROBLEM))\r
+  {\r
     //\r
     // The type of the receveid packet should be an ICMP6 error message.\r
     //\r
-    gBS->SignalEvent (RxData->RecycleSignal);\r
-    goto ON_EXIT;\r
+    goto ON_RECYCLE;\r
   }\r
 \r
   //\r
   // Copy the right ICMP6 error message into mode data.\r
   //\r
   CopiedLen  = 0;\r
-  Icmp6Error = (UINT8 *) &Mode->IcmpError;\r
+  Icmp6Error = (UINT8 *)&Mode->IcmpError;\r
 \r
   for (Index = 0; Index < RxData->FragmentCount; Index++) {\r
     CopiedLen += RxData->FragmentTable[Index].FragmentLength;\r
@@ -452,15 +469,18 @@ PxeBcIcmp6ErrorDpcHandle (
         CopiedLen - sizeof (EFI_PXE_BASE_CODE_ICMP_ERROR)\r
         );\r
     }\r
+\r
     Icmp6Error += CopiedLen;\r
   }\r
 \r
+ON_RECYCLE:\r
+  gBS->SignalEvent (RxData->RecycleSignal);\r
+\r
 ON_EXIT:\r
   Private->Icmp6Token.Status = EFI_NOT_READY;\r
   Ip6->Receive (Ip6, &Private->Icmp6Token);\r
 }\r
 \r
-\r
 /**\r
   Callback function to update the latest ICMP6 error message.\r
 \r
@@ -471,14 +491,13 @@ ON_EXIT:
 VOID\r
 EFIAPI\r
 PxeBcIcmp6ErrorUpdate (\r
-  IN EFI_EVENT               Event,\r
-  IN VOID                    *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
   QueueDpc (TPL_CALLBACK, PxeBcIcmp6ErrorDpcHandle, Context);\r
 }\r
 \r
-\r
 /**\r
   This function is to configure a UDPv4 instance for UdpWrite.\r
 \r
@@ -489,6 +508,8 @@ PxeBcIcmp6ErrorUpdate (
   @param[in, out]  SrcPort              The pointer to the source port.\r
   @param[in]       DoNotFragment        If TRUE, fragment is not enabled.\r
                                         Otherwise, fragment is enabled.\r
+  @param[in]       Ttl                  The time to live field of the IP header.\r
+  @param[in]       ToS                  The type of service field of the IP header.\r
 \r
   @retval          EFI_SUCCESS          Successfully configured this instance.\r
   @retval          Others               Failed to configure this instance.\r
@@ -501,7 +522,9 @@ PxeBcConfigUdp4Write (
   IN     EFI_IPv4_ADDRESS   *SubnetMask,\r
   IN     EFI_IPv4_ADDRESS   *Gateway,\r
   IN OUT UINT16             *SrcPort,\r
-  IN     BOOLEAN            DoNotFragment\r
+  IN     BOOLEAN            DoNotFragment,\r
+  IN     UINT8              Ttl,\r
+  IN     UINT8              ToS\r
   )\r
 {\r
   EFI_UDP4_CONFIG_DATA  Udp4CfgData;\r
@@ -511,8 +534,8 @@ PxeBcConfigUdp4Write (
 \r
   Udp4CfgData.TransmitTimeout    = PXEBC_DEFAULT_LIFETIME;\r
   Udp4CfgData.ReceiveTimeout     = PXEBC_DEFAULT_LIFETIME;\r
-  Udp4CfgData.TypeOfService      = DEFAULT_ToS;\r
-  Udp4CfgData.TimeToLive         = DEFAULT_TTL;\r
+  Udp4CfgData.TypeOfService      = ToS;\r
+  Udp4CfgData.TimeToLive         = Ttl;\r
   Udp4CfgData.AllowDuplicatePort = TRUE;\r
   Udp4CfgData.DoNotFragment      = DoNotFragment;\r
 \r
@@ -537,7 +560,7 @@ PxeBcConfigUdp4Write (
     }\r
   }\r
 \r
-  if (!EFI_ERROR (Status) && *SrcPort == 0) {\r
+  if (!EFI_ERROR (Status) && (*SrcPort == 0)) {\r
     Udp4->GetModeData (Udp4, &Udp4CfgData, NULL, NULL, NULL);\r
     *SrcPort = Udp4CfgData.StationPort;\r
   }\r
@@ -545,7 +568,6 @@ PxeBcConfigUdp4Write (
   return Status;\r
 }\r
 \r
-\r
 /**\r
   This function is to configure a UDPv6 instance for UdpWrite.\r
 \r
@@ -587,7 +609,7 @@ PxeBcConfigUdp6Write (
     return Status;\r
   }\r
 \r
-  if (!EFI_ERROR (Status) && *SrcPort == 0) {\r
+  if (!EFI_ERROR (Status) && (*SrcPort == 0)) {\r
     Udp6->GetModeData (Udp6, &CfgData, NULL, NULL, NULL);\r
     *SrcPort = CfgData.StationPort;\r
   }\r
@@ -595,7 +617,6 @@ PxeBcConfigUdp6Write (
   return Status;\r
 }\r
 \r
-\r
 /**\r
   This function is to configure a UDPv4 instance for UdpWrite.\r
 \r
@@ -616,54 +637,54 @@ PxeBcConfigUdp6Write (
 **/\r
 EFI_STATUS\r
 PxeBcUdp4Write (\r
-  IN EFI_UDP4_PROTOCOL       *Udp4,\r
-  IN EFI_UDP4_SESSION_DATA   *Session,\r
-  IN EFI_EVENT               TimeoutEvent,\r
-  IN EFI_IPv4_ADDRESS        *Gateway      OPTIONAL,\r
-  IN UINTN                   *HeaderSize   OPTIONAL,\r
-  IN VOID                    *HeaderPtr    OPTIONAL,\r
-  IN UINTN                   *BufferSize,\r
-  IN VOID                    *BufferPtr\r
+  IN EFI_UDP4_PROTOCOL      *Udp4,\r
+  IN EFI_UDP4_SESSION_DATA  *Session,\r
+  IN EFI_EVENT              TimeoutEvent,\r
+  IN EFI_IPv4_ADDRESS       *Gateway      OPTIONAL,\r
+  IN UINTN                  *HeaderSize   OPTIONAL,\r
+  IN VOID                   *HeaderPtr    OPTIONAL,\r
+  IN UINTN                  *BufferSize,\r
+  IN VOID                   *BufferPtr\r
   )\r
 {\r
-  EFI_UDP4_COMPLETION_TOKEN Token;\r
-  EFI_UDP4_TRANSMIT_DATA    *TxData;\r
-  UINT32                    TxLength;\r
-  UINT32                    FragCount;\r
-  UINT32                    DataLength;\r
-  BOOLEAN                   IsDone;\r
-  EFI_STATUS                Status;\r
+  EFI_UDP4_COMPLETION_TOKEN  Token;\r
+  EFI_UDP4_TRANSMIT_DATA     *TxData;\r
+  UINT32                     TxLength;\r
+  UINT32                     FragCount;\r
+  UINT32                     DataLength;\r
+  BOOLEAN                    IsDone;\r
+  EFI_STATUS                 Status;\r
 \r
   //\r
   // Arrange one fragment buffer for data, and another fragment buffer for header if has.\r
   //\r
   FragCount = (HeaderSize != NULL) ? 2 : 1;\r
   TxLength  = sizeof (EFI_UDP4_TRANSMIT_DATA) + (FragCount - 1) * sizeof (EFI_UDP4_FRAGMENT_DATA);\r
-  TxData    = (EFI_UDP4_TRANSMIT_DATA *) AllocateZeroPool (TxLength);\r
+  TxData    = (EFI_UDP4_TRANSMIT_DATA *)AllocateZeroPool (TxLength);\r
   if (TxData == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
   TxData->FragmentCount                               = FragCount;\r
-  TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32) *BufferSize;\r
+  TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32)*BufferSize;\r
   TxData->FragmentTable[FragCount - 1].FragmentBuffer = BufferPtr;\r
-  DataLength                                          = (UINT32) *BufferSize;\r
+  DataLength                                          = (UINT32)*BufferSize;\r
 \r
   if (HeaderSize != NULL) {\r
-    TxData->FragmentTable[0].FragmentLength = (UINT32) *HeaderSize;\r
+    TxData->FragmentTable[0].FragmentLength = (UINT32)*HeaderSize;\r
     TxData->FragmentTable[0].FragmentBuffer = HeaderPtr;\r
-    DataLength                             += (UINT32) *HeaderSize;\r
+    DataLength                             += (UINT32)*HeaderSize;\r
   }\r
 \r
   if (Gateway != NULL) {\r
-    TxData->GatewayAddress  = Gateway;\r
+    TxData->GatewayAddress = Gateway;\r
   }\r
 \r
-  TxData->UdpSessionData  = Session;\r
-  TxData->DataLength      = DataLength;\r
-  Token.Packet.TxData     = TxData;\r
-  Token.Status            = EFI_NOT_READY;\r
-  IsDone                  = FALSE;\r
+  TxData->UdpSessionData = Session;\r
+  TxData->DataLength     = DataLength;\r
+  Token.Packet.TxData    = TxData;\r
+  Token.Status           = EFI_NOT_READY;\r
+  IsDone                 = FALSE;\r
 \r
   Status = gBS->CreateEvent (\r
                   EVT_NOTIFY_SIGNAL,\r
@@ -686,7 +707,8 @@ PxeBcUdp4Write (
   //\r
   while (!IsDone &&\r
          Token.Status == EFI_NOT_READY &&\r
-         EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+         EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+  {\r
     Udp4->Poll (Udp4);\r
   }\r
 \r
@@ -696,12 +718,12 @@ ON_EXIT:
   if (Token.Event != NULL) {\r
     gBS->CloseEvent (Token.Event);\r
   }\r
+\r
   FreePool (TxData);\r
 \r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   This function is to configure a UDPv4 instance for UdpWrite.\r
 \r
@@ -721,49 +743,49 @@ ON_EXIT:
 **/\r
 EFI_STATUS\r
 PxeBcUdp6Write (\r
-  IN EFI_UDP6_PROTOCOL       *Udp6,\r
-  IN EFI_UDP6_SESSION_DATA   *Session,\r
-  IN EFI_EVENT               TimeoutEvent,\r
-  IN UINTN                   *HeaderSize   OPTIONAL,\r
-  IN VOID                    *HeaderPtr    OPTIONAL,\r
-  IN UINTN                   *BufferSize,\r
-  IN VOID                    *BufferPtr\r
+  IN EFI_UDP6_PROTOCOL      *Udp6,\r
+  IN EFI_UDP6_SESSION_DATA  *Session,\r
+  IN EFI_EVENT              TimeoutEvent,\r
+  IN UINTN                  *HeaderSize   OPTIONAL,\r
+  IN VOID                   *HeaderPtr    OPTIONAL,\r
+  IN UINTN                  *BufferSize,\r
+  IN VOID                   *BufferPtr\r
   )\r
 {\r
-  EFI_UDP6_COMPLETION_TOKEN Token;\r
-  EFI_UDP6_TRANSMIT_DATA    *TxData;\r
-  UINT32                    TxLength;\r
-  UINT32                    FragCount;\r
-  UINT32                    DataLength;\r
-  BOOLEAN                   IsDone;\r
-  EFI_STATUS                Status;\r
+  EFI_UDP6_COMPLETION_TOKEN  Token;\r
+  EFI_UDP6_TRANSMIT_DATA     *TxData;\r
+  UINT32                     TxLength;\r
+  UINT32                     FragCount;\r
+  UINT32                     DataLength;\r
+  BOOLEAN                    IsDone;\r
+  EFI_STATUS                 Status;\r
 \r
   //\r
   // Arrange one fragment buffer for data, and another fragment buffer for header if has.\r
   //\r
   FragCount = (HeaderSize != NULL) ? 2 : 1;\r
   TxLength  = sizeof (EFI_UDP6_TRANSMIT_DATA) + (FragCount - 1) * sizeof (EFI_UDP6_FRAGMENT_DATA);\r
-  TxData    = (EFI_UDP6_TRANSMIT_DATA *) AllocateZeroPool (TxLength);\r
+  TxData    = (EFI_UDP6_TRANSMIT_DATA *)AllocateZeroPool (TxLength);\r
   if (TxData == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
   TxData->FragmentCount                               = FragCount;\r
-  TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32) *BufferSize;\r
+  TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32)*BufferSize;\r
   TxData->FragmentTable[FragCount - 1].FragmentBuffer = BufferPtr;\r
-  DataLength                                          = (UINT32) *BufferSize;\r
+  DataLength                                          = (UINT32)*BufferSize;\r
 \r
   if (HeaderSize != NULL) {\r
-    TxData->FragmentTable[0].FragmentLength = (UINT32) *HeaderSize;\r
+    TxData->FragmentTable[0].FragmentLength = (UINT32)*HeaderSize;\r
     TxData->FragmentTable[0].FragmentBuffer = HeaderPtr;\r
-    DataLength                             += (UINT32) *HeaderSize;\r
+    DataLength                             += (UINT32)*HeaderSize;\r
   }\r
 \r
-  TxData->UdpSessionData  = Session;\r
-  TxData->DataLength      = DataLength;\r
-  Token.Packet.TxData     = TxData;\r
-  Token.Status            = EFI_NOT_READY;\r
-  IsDone                  = FALSE;\r
+  TxData->UdpSessionData = Session;\r
+  TxData->DataLength     = DataLength;\r
+  Token.Packet.TxData    = TxData;\r
+  Token.Status           = EFI_NOT_READY;\r
+  IsDone                 = FALSE;\r
 \r
   Status = gBS->CreateEvent (\r
                   EVT_NOTIFY_SIGNAL,\r
@@ -786,7 +808,8 @@ PxeBcUdp6Write (
   //\r
   while (!IsDone &&\r
          Token.Status == EFI_NOT_READY &&\r
-         EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+         EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+  {\r
     Udp6->Poll (Udp6);\r
   }\r
 \r
@@ -796,12 +819,12 @@ ON_EXIT:
   if (Token.Event != NULL) {\r
     gBS->CloseEvent (Token.Event);\r
   }\r
+\r
   FreePool (TxData);\r
 \r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Check the received packet using the Ip filter.\r
 \r
@@ -815,13 +838,13 @@ ON_EXIT:
 **/\r
 BOOLEAN\r
 PxeBcCheckByIpFilter (\r
-  IN EFI_PXE_BASE_CODE_MODE    *Mode,\r
-  IN VOID                      *Session,\r
-  IN UINT16                    OpFlags\r
+  IN EFI_PXE_BASE_CODE_MODE  *Mode,\r
+  IN VOID                    *Session,\r
+  IN UINT16                  OpFlags\r
   )\r
 {\r
-  EFI_IP_ADDRESS               DestinationIp;\r
-  UINTN                        Index;\r
+  EFI_IP_ADDRESS  DestinationIp;\r
+  UINTN           Index;\r
 \r
   if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER) == 0) {\r
     return TRUE;\r
@@ -837,7 +860,7 @@ PxeBcCheckByIpFilter (
   if (Mode->UsingIpv6) {\r
     CopyMem (\r
       &DestinationIp,\r
-      &((EFI_UDP6_SESSION_DATA *) Session)->DestinationAddress,\r
+      &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress,\r
       sizeof (EFI_IPv6_ADDRESS)\r
       );\r
     NTOHLLL (&DestinationIp.v6);\r
@@ -845,27 +868,30 @@ PxeBcCheckByIpFilter (
     ZeroMem (&DestinationIp, sizeof (EFI_IP_ADDRESS));\r
     CopyMem (\r
       &DestinationIp,\r
-      &((EFI_UDP4_SESSION_DATA *) Session)->DestinationAddress,\r
+      &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress,\r
       sizeof (EFI_IPv4_ADDRESS)\r
       );\r
     EFI_NTOHL (DestinationIp);\r
   }\r
 \r
-  if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0 &&\r
+  if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0) &&\r
       (IP4_IS_MULTICAST (DestinationIp.Addr[0]) ||\r
-       IP6_IS_MULTICAST (&DestinationIp))) {\r
+       IP6_IS_MULTICAST (&DestinationIp)))\r
+  {\r
     return TRUE;\r
   }\r
 \r
-  if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST) != 0 &&\r
-      IP4_IS_LOCAL_BROADCAST (DestinationIp.Addr[0])) {\r
+  if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST) != 0) &&\r
+      IP4_IS_LOCAL_BROADCAST (DestinationIp.Addr[0]))\r
+  {\r
     ASSERT (!Mode->UsingIpv6);\r
     return TRUE;\r
   }\r
 \r
-  if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0 &&\r
+  if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0) &&\r
       (EFI_IP4_EQUAL (&Mode->StationIp.v4, &DestinationIp) ||\r
-       EFI_IP6_EQUAL (&Mode->StationIp.v6, &DestinationIp))) {\r
+       EFI_IP6_EQUAL (&Mode->StationIp.v6, &DestinationIp)))\r
+  {\r
     //\r
     // Matched if the dest address is equal to the station address.\r
     //\r
@@ -875,7 +901,8 @@ PxeBcCheckByIpFilter (
   for (Index = 0; Index < Mode->IpFilter.IpCnt; Index++) {\r
     ASSERT (Index < EFI_PXE_BASE_CODE_MAX_IPCNT);\r
     if (EFI_IP4_EQUAL (&Mode->IpFilter.IpList[Index].v4, &DestinationIp) ||\r
-        EFI_IP6_EQUAL (&Mode->IpFilter.IpList[Index].v6, &DestinationIp)) {\r
+        EFI_IP6_EQUAL (&Mode->IpFilter.IpList[Index].v6, &DestinationIp))\r
+    {\r
       //\r
       // Matched if the dest address is equal to any of address in the filter list.\r
       //\r
@@ -886,7 +913,6 @@ PxeBcCheckByIpFilter (
   return FALSE;\r
 }\r
 \r
-\r
 /**\r
   Filter the received packet using the destination Ip.\r
 \r
@@ -901,10 +927,10 @@ PxeBcCheckByIpFilter (
 **/\r
 BOOLEAN\r
 PxeBcCheckByDestIp (\r
-  IN     EFI_PXE_BASE_CODE_MODE    *Mode,\r
-  IN     VOID                      *Session,\r
-  IN OUT EFI_IP_ADDRESS            *DestIp,\r
-  IN     UINT16                    OpFlags\r
+  IN     EFI_PXE_BASE_CODE_MODE  *Mode,\r
+  IN     VOID                    *Session,\r
+  IN OUT EFI_IP_ADDRESS          *DestIp,\r
+  IN     UINT16                  OpFlags\r
   )\r
 {\r
   if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP) != 0) {\r
@@ -926,18 +952,20 @@ PxeBcCheckByDestIp (
           sizeof (EFI_IPv4_ADDRESS)\r
           );\r
       }\r
-\r
     }\r
+\r
     return TRUE;\r
-  } else if (DestIp != NULL &&\r
+  } else if ((DestIp != NULL) &&\r
              (EFI_IP4_EQUAL (DestIp, &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress) ||\r
-              EFI_IP6_EQUAL (DestIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress))) {\r
+              EFI_IP6_EQUAL (DestIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress)))\r
+  {\r
     //\r
     // The destination address in the received packet is matched if present.\r
     //\r
     return TRUE;\r
   } else if (EFI_IP4_EQUAL (&Mode->StationIp, &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress) ||\r
-             EFI_IP6_EQUAL (&Mode->StationIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress)) {\r
+             EFI_IP6_EQUAL (&Mode->StationIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress))\r
+  {\r
     //\r
     // The destination address in the received packet is equal to the host address.\r
     //\r
@@ -947,7 +975,6 @@ PxeBcCheckByDestIp (
   return FALSE;\r
 }\r
 \r
-\r
 /**\r
   Check the received packet using the destination port.\r
 \r
@@ -962,18 +989,18 @@ PxeBcCheckByDestIp (
 **/\r
 BOOLEAN\r
 PxeBcCheckByDestPort (\r
-  IN     EFI_PXE_BASE_CODE_MODE    *Mode,\r
-  IN     VOID                      *Session,\r
-  IN OUT UINT16                    *DestPort,\r
-  IN     UINT16                    OpFlags\r
+  IN     EFI_PXE_BASE_CODE_MODE  *Mode,\r
+  IN     VOID                    *Session,\r
+  IN OUT UINT16                  *DestPort,\r
+  IN     UINT16                  OpFlags\r
   )\r
 {\r
-  UINT16       Port;\r
+  UINT16  Port;\r
 \r
   if (Mode->UsingIpv6) {\r
-    Port = ((EFI_UDP6_SESSION_DATA *) Session)->DestinationPort;\r
+    Port = ((EFI_UDP6_SESSION_DATA *)Session)->DestinationPort;\r
   } else {\r
-    Port = ((EFI_UDP4_SESSION_DATA *) Session)->DestinationPort;\r
+    Port = ((EFI_UDP4_SESSION_DATA *)Session)->DestinationPort;\r
   }\r
 \r
   if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT) != 0) {\r
@@ -983,8 +1010,9 @@ PxeBcCheckByDestPort (
     if (DestPort != NULL) {\r
       *DestPort = Port;\r
     }\r
+\r
     return TRUE;\r
-  } else if (DestPort != NULL && *DestPort == Port) {\r
+  } else if ((DestPort != NULL) && (*DestPort == Port)) {\r
     //\r
     // The destination port in the received packet is matched if present.\r
     //\r
@@ -994,7 +1022,6 @@ PxeBcCheckByDestPort (
   return FALSE;\r
 }\r
 \r
-\r
 /**\r
   Filter the received packet using the source Ip.\r
 \r
@@ -1009,10 +1036,10 @@ PxeBcCheckByDestPort (
 **/\r
 BOOLEAN\r
 PxeBcFilterBySrcIp (\r
-  IN     EFI_PXE_BASE_CODE_MODE    *Mode,\r
-  IN     VOID                      *Session,\r
-  IN OUT EFI_IP_ADDRESS            *SrcIp,\r
-  IN     UINT16                    OpFlags\r
+  IN     EFI_PXE_BASE_CODE_MODE  *Mode,\r
+  IN     VOID                    *Session,\r
+  IN OUT EFI_IP_ADDRESS          *SrcIp,\r
+  IN     UINT16                  OpFlags\r
   )\r
 {\r
   if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP) != 0) {\r
@@ -1034,12 +1061,13 @@ PxeBcFilterBySrcIp (
           sizeof (EFI_IPv4_ADDRESS)\r
           );\r
       }\r
-\r
     }\r
+\r
     return TRUE;\r
-  } else if (SrcIp != NULL &&\r
+  } else if ((SrcIp != NULL) &&\r
              (EFI_IP4_EQUAL (SrcIp, &((EFI_UDP4_SESSION_DATA *)Session)->SourceAddress) ||\r
-              EFI_IP6_EQUAL (SrcIp, &((EFI_UDP6_SESSION_DATA *)Session)->SourceAddress))) {\r
+              EFI_IP6_EQUAL (SrcIp, &((EFI_UDP6_SESSION_DATA *)Session)->SourceAddress)))\r
+  {\r
     //\r
     // The source address in the received packet is matched if present.\r
     //\r
@@ -1049,7 +1077,6 @@ PxeBcFilterBySrcIp (
   return FALSE;\r
 }\r
 \r
-\r
 /**\r
   Filter the received packet using the source port.\r
 \r
@@ -1064,18 +1091,18 @@ PxeBcFilterBySrcIp (
 **/\r
 BOOLEAN\r
 PxeBcFilterBySrcPort (\r
-  IN     EFI_PXE_BASE_CODE_MODE    *Mode,\r
-  IN     VOID                      *Session,\r
-  IN OUT UINT16                    *SrcPort,\r
-  IN     UINT16                    OpFlags\r
+  IN     EFI_PXE_BASE_CODE_MODE  *Mode,\r
+  IN     VOID                    *Session,\r
+  IN OUT UINT16                  *SrcPort,\r
+  IN     UINT16                  OpFlags\r
   )\r
 {\r
-  UINT16       Port;\r
+  UINT16  Port;\r
 \r
   if (Mode->UsingIpv6) {\r
-    Port = ((EFI_UDP6_SESSION_DATA *) Session)->SourcePort;\r
+    Port = ((EFI_UDP6_SESSION_DATA *)Session)->SourcePort;\r
   } else {\r
-    Port = ((EFI_UDP4_SESSION_DATA *) Session)->SourcePort;\r
+    Port = ((EFI_UDP4_SESSION_DATA *)Session)->SourcePort;\r
   }\r
 \r
   if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT) != 0) {\r
@@ -1085,8 +1112,9 @@ PxeBcFilterBySrcPort (
     if (SrcPort != NULL) {\r
       *SrcPort = Port;\r
     }\r
+\r
     return TRUE;\r
-  } else if (SrcPort != NULL && *SrcPort == Port) {\r
+  } else if ((SrcPort != NULL) && (*SrcPort == Port)) {\r
     //\r
     // The source port in the received packet is matched if present.\r
     //\r
@@ -1096,7 +1124,6 @@ PxeBcFilterBySrcPort (
   return FALSE;\r
 }\r
 \r
-\r
 /**\r
   This function is to receive packet using Udp4Read.\r
 \r
@@ -1118,22 +1145,22 @@ PxeBcFilterBySrcPort (
 **/\r
 EFI_STATUS\r
 PxeBcUdp4Read (\r
-  IN     EFI_UDP4_PROTOCOL            *Udp4,\r
-  IN     EFI_UDP4_COMPLETION_TOKEN    *Token,\r
-  IN     EFI_PXE_BASE_CODE_MODE       *Mode,\r
-  IN     EFI_EVENT                    TimeoutEvent,\r
-  IN     UINT16                       OpFlags,\r
-  IN     BOOLEAN                      *IsDone,\r
-     OUT BOOLEAN                      *IsMatched,\r
-  IN OUT EFI_IP_ADDRESS               *DestIp      OPTIONAL,\r
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *DestPort    OPTIONAL,\r
-  IN OUT EFI_IP_ADDRESS               *SrcIp       OPTIONAL,\r
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort     OPTIONAL\r
+  IN     EFI_UDP4_PROTOCOL           *Udp4,\r
+  IN     EFI_UDP4_COMPLETION_TOKEN   *Token,\r
+  IN     EFI_PXE_BASE_CODE_MODE      *Mode,\r
+  IN     EFI_EVENT                   TimeoutEvent,\r
+  IN     UINT16                      OpFlags,\r
+  IN     BOOLEAN                     *IsDone,\r
+  OUT BOOLEAN                        *IsMatched,\r
+  IN OUT EFI_IP_ADDRESS              *DestIp      OPTIONAL,\r
+  IN OUT EFI_PXE_BASE_CODE_UDP_PORT  *DestPort    OPTIONAL,\r
+  IN OUT EFI_IP_ADDRESS              *SrcIp       OPTIONAL,\r
+  IN OUT EFI_PXE_BASE_CODE_UDP_PORT  *SrcPort     OPTIONAL\r
   )\r
 {\r
-  EFI_UDP4_RECEIVE_DATA     *RxData;\r
-  EFI_UDP4_SESSION_DATA     *Session;\r
-  EFI_STATUS                Status;\r
+  EFI_UDP4_RECEIVE_DATA  *RxData;\r
+  EFI_UDP4_SESSION_DATA  *Session;\r
+  EFI_STATUS             Status;\r
 \r
   Token->Status = EFI_NOT_READY;\r
   *IsDone       = FALSE;\r
@@ -1148,16 +1175,18 @@ PxeBcUdp4Read (
   //\r
   while (!(*IsDone) &&\r
          Token->Status == EFI_NOT_READY &&\r
-         EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+         EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+  {\r
     //\r
-    // Poll the token utill reply/ICMPv6 error message received or timeout.\r
+    // Poll the token until reply/ICMPv6 error message received or timeout.\r
     //\r
     Udp4->Poll (Udp4);\r
-    if (Token->Status == EFI_ICMP_ERROR ||\r
-        Token->Status == EFI_NETWORK_UNREACHABLE ||\r
-        Token->Status == EFI_HOST_UNREACHABLE ||\r
-        Token->Status == EFI_PROTOCOL_UNREACHABLE ||\r
-        Token->Status == EFI_PORT_UNREACHABLE) {\r
+    if ((Token->Status == EFI_ICMP_ERROR) ||\r
+        (Token->Status == EFI_NETWORK_UNREACHABLE) ||\r
+        (Token->Status == EFI_HOST_UNREACHABLE) ||\r
+        (Token->Status == EFI_PROTOCOL_UNREACHABLE) ||\r
+        (Token->Status == EFI_PORT_UNREACHABLE))\r
+    {\r
       break;\r
     }\r
   }\r
@@ -1168,8 +1197,8 @@ PxeBcUdp4Read (
     //\r
     // check whether this packet matches the filters\r
     //\r
-    RxData    = Token->Packet.RxData;\r
-    Session   = &RxData->UdpSession;\r
+    RxData  = Token->Packet.RxData;\r
+    Session = &RxData->UdpSession;\r
 \r
     *IsMatched = PxeBcCheckByIpFilter (Mode, Session, OpFlags);\r
 \r
@@ -1200,7 +1229,6 @@ PxeBcUdp4Read (
   return Status;\r
 }\r
 \r
-\r
 /**\r
   This function is to receive packets using Udp6Read.\r
 \r
@@ -1222,22 +1250,22 @@ PxeBcUdp4Read (
 **/\r
 EFI_STATUS\r
 PxeBcUdp6Read (\r
-  IN     EFI_UDP6_PROTOCOL            *Udp6,\r
-  IN     EFI_UDP6_COMPLETION_TOKEN    *Token,\r
-  IN     EFI_PXE_BASE_CODE_MODE       *Mode,\r
-  IN     EFI_EVENT                    TimeoutEvent,\r
-  IN     UINT16                       OpFlags,\r
-  IN     BOOLEAN                      *IsDone,\r
-     OUT BOOLEAN                      *IsMatched,\r
-  IN OUT EFI_IP_ADDRESS               *DestIp      OPTIONAL,\r
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *DestPort    OPTIONAL,\r
-  IN OUT EFI_IP_ADDRESS               *SrcIp       OPTIONAL,\r
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort     OPTIONAL\r
+  IN     EFI_UDP6_PROTOCOL           *Udp6,\r
+  IN     EFI_UDP6_COMPLETION_TOKEN   *Token,\r
+  IN     EFI_PXE_BASE_CODE_MODE      *Mode,\r
+  IN     EFI_EVENT                   TimeoutEvent,\r
+  IN     UINT16                      OpFlags,\r
+  IN     BOOLEAN                     *IsDone,\r
+  OUT BOOLEAN                        *IsMatched,\r
+  IN OUT EFI_IP_ADDRESS              *DestIp      OPTIONAL,\r
+  IN OUT EFI_PXE_BASE_CODE_UDP_PORT  *DestPort    OPTIONAL,\r
+  IN OUT EFI_IP_ADDRESS              *SrcIp       OPTIONAL,\r
+  IN OUT EFI_PXE_BASE_CODE_UDP_PORT  *SrcPort     OPTIONAL\r
   )\r
 {\r
-  EFI_UDP6_RECEIVE_DATA     *RxData;\r
-  EFI_UDP6_SESSION_DATA     *Session;\r
-  EFI_STATUS                Status;\r
+  EFI_UDP6_RECEIVE_DATA  *RxData;\r
+  EFI_UDP6_SESSION_DATA  *Session;\r
+  EFI_STATUS             Status;\r
 \r
   Token->Status = EFI_NOT_READY;\r
   *IsDone       = FALSE;\r
@@ -1252,16 +1280,18 @@ PxeBcUdp6Read (
   //\r
   while (!(*IsDone) &&\r
          Token->Status == EFI_NOT_READY &&\r
-         EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+         EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+  {\r
     //\r
-    // Poll the token utill reply/ICMPv6 error message received or timeout.\r
+    // Poll the token until reply/ICMPv6 error message received or timeout.\r
     //\r
     Udp6->Poll (Udp6);\r
-    if (Token->Status == EFI_ICMP_ERROR ||\r
-        Token->Status == EFI_NETWORK_UNREACHABLE ||\r
-        Token->Status == EFI_HOST_UNREACHABLE ||\r
-        Token->Status == EFI_PROTOCOL_UNREACHABLE ||\r
-        Token->Status == EFI_PORT_UNREACHABLE) {\r
+    if ((Token->Status == EFI_ICMP_ERROR) ||\r
+        (Token->Status == EFI_NETWORK_UNREACHABLE) ||\r
+        (Token->Status == EFI_HOST_UNREACHABLE) ||\r
+        (Token->Status == EFI_PROTOCOL_UNREACHABLE) ||\r
+        (Token->Status == EFI_PORT_UNREACHABLE))\r
+    {\r
       break;\r
     }\r
   }\r
@@ -1272,8 +1302,8 @@ PxeBcUdp6Read (
     //\r
     // check whether this packet matches the filters\r
     //\r
-    RxData    = Token->Packet.RxData;\r
-    Session   = &RxData->UdpSession;\r
+    RxData  = Token->Packet.RxData;\r
+    Session = &RxData->UdpSession;\r
 \r
     *IsMatched = PxeBcCheckByIpFilter (Mode, Session, OpFlags);\r
 \r
@@ -1304,7 +1334,6 @@ PxeBcUdp6Read (
   return Status;\r
 }\r
 \r
-\r
 /**\r
   This function is to display the IPv4 address.\r
 \r
@@ -1313,10 +1342,10 @@ PxeBcUdp6Read (
 **/\r
 VOID\r
 PxeBcShowIp4Addr (\r
-  IN EFI_IPv4_ADDRESS   *Ip\r
+  IN EFI_IPv4_ADDRESS  *Ip\r
   )\r
 {\r
-  UINTN                 Index;\r
+  UINTN  Index;\r
 \r
   for (Index = 0; Index < 4; Index++) {\r
     AsciiPrint ("%d", Ip->Addr[Index]);\r
@@ -1326,7 +1355,6 @@ PxeBcShowIp4Addr (
   }\r
 }\r
 \r
-\r
 /**\r
   This function is to display the IPv6 address.\r
 \r
@@ -1335,23 +1363,25 @@ PxeBcShowIp4Addr (
 **/\r
 VOID\r
 PxeBcShowIp6Addr (\r
-  IN EFI_IPv6_ADDRESS   *Ip\r
+  IN EFI_IPv6_ADDRESS  *Ip\r
   )\r
 {\r
-  UINTN                 Index;\r
+  UINTN  Index;\r
 \r
   for (Index = 0; Index < 16; Index++) {\r
-\r
     if (Ip->Addr[Index] != 0) {\r
       AsciiPrint ("%x", Ip->Addr[Index]);\r
     }\r
+\r
     Index++;\r
     if (Index > 15) {\r
       return;\r
     }\r
+\r
     if (((Ip->Addr[Index] & 0xf0) == 0) && (Ip->Addr[Index - 1] != 0)) {\r
       AsciiPrint ("0");\r
     }\r
+\r
     AsciiPrint ("%x", Ip->Addr[Index]);\r
     if (Index < 15) {\r
       AsciiPrint (":");\r
@@ -1359,7 +1389,6 @@ PxeBcShowIp6Addr (
   }\r
 }\r
 \r
-\r
 /**\r
   This function is to convert UINTN to ASCII string with the required formatting.\r
 \r
@@ -1370,22 +1399,20 @@ PxeBcShowIp6Addr (
 **/\r
 VOID\r
 PxeBcUintnToAscDecWithFormat (\r
-  IN UINTN                       Number,\r
-  IN UINT8                       *Buffer,\r
-  IN INTN                        Length\r
+  IN UINTN  Number,\r
+  IN UINT8  *Buffer,\r
+  IN INTN   Length\r
   )\r
 {\r
-  UINTN                          Remainder;\r
+  UINTN  Remainder;\r
 \r
-  while (Length > 0) {\r
-    Length--;\r
-    Remainder      = Number % 10;\r
-    Number        /= 10;\r
-    Buffer[Length] = (UINT8) ('0' + Remainder);\r
+  for ( ; Length > 0; Length--) {\r
+    Remainder          = Number % 10;\r
+    Number            /= 10;\r
+    Buffer[Length - 1] = (UINT8)('0' + Remainder);\r
   }\r
 }\r
 \r
-\r
 /**\r
   This function is to convert a UINTN to a ASCII string, and return the\r
   actual length of the buffer.\r
@@ -1399,32 +1426,31 @@ PxeBcUintnToAscDecWithFormat (
 **/\r
 UINTN\r
 PxeBcUintnToAscDec (\r
-  IN UINTN               Number,\r
-  IN UINT8               *Buffer,\r
-  IN UINTN               BufferSize\r
+  IN UINTN  Number,\r
+  IN UINT8  *Buffer,\r
+  IN UINTN  BufferSize\r
   )\r
 {\r
-  UINTN           Index;\r
-  UINTN           Length;\r
-  CHAR8           TempStr[64];\r
+  UINTN  Index;\r
+  UINTN  Length;\r
+  CHAR8  TempStr[64];\r
 \r
-  Index           = 63;\r
-  TempStr[Index]  = 0;\r
+  Index          = 63;\r
+  TempStr[Index] = 0;\r
 \r
   do {\r
     Index--;\r
-    TempStr[Index] = (CHAR8) ('0' + (Number % 10));\r
-    Number         = (UINTN) (Number / 10);\r
+    TempStr[Index] = (CHAR8)('0' + (Number % 10));\r
+    Number         = (UINTN)(Number / 10);\r
   } while (Number != 0);\r
 \r
-  AsciiStrCpyS ((CHAR8 *) Buffer, BufferSize, &TempStr[Index]);\r
+  AsciiStrCpyS ((CHAR8 *)Buffer, BufferSize, &TempStr[Index]);\r
 \r
-  Length = AsciiStrLen ((CHAR8 *) Buffer);\r
+  Length = AsciiStrLen ((CHAR8 *)Buffer);\r
 \r
   return Length;\r
 }\r
 \r
-\r
 /**\r
   This function is to convert unicode hex number to a UINT8.\r
 \r
@@ -1437,22 +1463,22 @@ PxeBcUintnToAscDec (
 **/\r
 EFI_STATUS\r
 PxeBcUniHexToUint8 (\r
-  OUT UINT8                *Digit,\r
-  IN  CHAR16               Char\r
+  OUT UINT8   *Digit,\r
+  IN  CHAR16  Char\r
   )\r
 {\r
   if ((Char >= L'0') && (Char <= L'9')) {\r
-    *Digit = (UINT8) (Char - L'0');\r
+    *Digit = (UINT8)(Char - L'0');\r
     return EFI_SUCCESS;\r
   }\r
 \r
   if ((Char >= L'A') && (Char <= L'F')) {\r
-    *Digit = (UINT8) (Char - L'A' + 0x0A);\r
+    *Digit = (UINT8)(Char - L'A' + 0x0A);\r
     return EFI_SUCCESS;\r
   }\r
 \r
   if ((Char >= L'a') && (Char <= L'f')) {\r
-    *Digit = (UINT8) (Char - L'a' + 0x0A);\r
+    *Digit = (UINT8)(Char - L'a' + 0x0A);\r
     return EFI_SUCCESS;\r
   }\r
 \r
@@ -1467,26 +1493,26 @@ PxeBcUniHexToUint8 (
 **/\r
 VOID\r
 CalcElapsedTime (\r
-  IN     PXEBC_PRIVATE_DATA     *Private\r
+  IN     PXEBC_PRIVATE_DATA  *Private\r
   )\r
 {\r
-  EFI_TIME          Time;\r
-  UINT64            CurrentStamp;\r
-  UINT64            ElapsedTimeValue;\r
+  EFI_TIME  Time;\r
+  UINT64    CurrentStamp;\r
+  UINT64    ElapsedTimeValue;\r
 \r
   //\r
   // Generate a time stamp of the centiseconds from 1900/1/1, assume 30day/month.\r
   //\r
   ZeroMem (&Time, sizeof (EFI_TIME));\r
   gRT->GetTime (&Time, NULL);\r
-  CurrentStamp = (UINT64)\r
-    (\r
-      ((((((Time.Year - 1900) * 360 +\r
-       (Time.Month - 1)) * 30 +\r
-       (Time.Day - 1)) * 24 + Time.Hour) * 60 +\r
-       Time.Minute) * 60 + Time.Second) * 100\r
-       + DivU64x32(Time.Nanosecond, 10000000)\r
-    );\r
+  CurrentStamp = MultU64x32 (\r
+                   ((((UINT32)(Time.Year - 1900) * 360 + (Time.Month - 1) * 30 + (Time.Day - 1)) * 24 + Time.Hour) * 60 + Time.Minute) * 60 + Time.Second,\r
+                   100\r
+                   ) +\r
+                 DivU64x32 (\r
+                   Time.Nanosecond,\r
+                   10000000\r
+                   );\r
 \r
   //\r
   // Sentinel value of 0 means that this is the first DHCP packet that we are\r
@@ -1504,10 +1530,10 @@ CalcElapsedTime (
     if (ElapsedTimeValue > 0xffff) {\r
       ElapsedTimeValue = 0xffff;\r
     }\r
+\r
     //\r
     // Save the elapsed time\r
     //\r
     Private->ElapsedTime = ElapsedTimeValue;\r
   }\r
 }\r
-\r