]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Scrubbed some code for Udp4
authorjgong5 <jgong5@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Nov 2008 08:08:44 +0000 (08:08 +0000)
committerjgong5 <jgong5@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Nov 2008 08:08:44 +0000 (08:08 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6494 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Driver.c
MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Impl.c
MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Main.c

index 0c5436412799be1dfbe5770679b4d3ca0897fc5c..50959671e8904f94bd76c680563a323177b87259 100644 (file)
@@ -37,15 +37,21 @@ EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding = {
 \r
 \r
 /**\r
-  Test to see if this driver supports ControllerHandle.\r
-\r
-  @param  This                   Protocol instance pointer.\r
-  @param  ControllerHandle       Handle of device to test.\r
-  @param  RemainingDevicePath    Optional parameter use to pick a specific child\r
-                                 device to start.\r
-\r
-  @retval EFI_SUCCES             This driver supports this device.\r
-  @retval EFI_ALREADY_STARTED    This driver is already running on this device.\r
+  Test to see if this driver supports ControllerHandle. This service\r
+  is called by the EFI boot service ConnectController(). In\r
+  order to make drivers as small as possible, there are a few calling\r
+  restrictions for this service. ConnectController() must\r
+  follow these calling restrictions. If any other agent wishes to call\r
+  Supported() it must also follow these calling restrictions.\r
+\r
+  @param  This                Protocol instance pointer.\r
+  @param  ControllerHandle    Handle of device to test\r
+  @param  RemainingDevicePath Optional parameter use to pick a specific child\r
+                              device to start.\r
+\r
+  @retval EFI_SUCCESS         This driver supports this device\r
+  @retval EFI_ALREADY_STARTED This driver is already running on this device\r
+  @retval other               This driver does not support this device\r
 \r
 **/\r
 EFI_STATUS\r
@@ -90,16 +96,21 @@ Udp4DriverBindingSupported (
 \r
 \r
 /**\r
-  Start this driver on ControllerHandle.\r
-\r
-  @param  This                   Protocol instance pointer.\r
-  @param  ControllerHandle       Handle of device to bind driver to\r
-  @param  RemainingDevicePath    Optional parameter use to pick a specific child\r
-                                 device to start.\r
-\r
-  @retval EFI_SUCCES             This driver is added to ControllerHandle\r
-  @retval EFI_ALREADY_STARTED    This driver is already running on ControllerHandle\r
-  @retval other                  This driver does not support this device\r
+  Start this driver on ControllerHandle. This service is called by the\r
+  EFI boot service ConnectController(). In order to make\r
+  drivers as small as possible, there are a few calling restrictions for\r
+  this service. ConnectController() must follow these\r
+  calling restrictions. If any other agent wishes to call Start() it\r
+  must also follow these calling restrictions.\r
+\r
+  @param  This                 Protocol instance pointer.\r
+  @param  ControllerHandle     Handle of device to bind driver to\r
+  @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
+                               device to start.\r
+\r
+  @retval EFI_SUCCESS          This driver is added to ControllerHandle\r
+  @retval EFI_ALREADY_STARTED  This driver is already running on ControllerHandle\r
+  @retval other                This driver does not support this device\r
 \r
 **/\r
 EFI_STATUS\r
@@ -148,16 +159,21 @@ Udp4DriverBindingStart (
 \r
 \r
 /**\r
-  Stop this driver on ControllerHandle.\r
-\r
-  @param  This                   Protocol instance pointer.\r
-  @param  ControllerHandle       Handle of device to stop driver on\r
-  @param  NumberOfChildren       Number of Handles in ChildHandleBuffer. If number\r
-                                 of  children is zero stop the entire bus driver.\r
-  @param  ChildHandleBuffer      List of Child Handles to Stop.\r
-\r
-  @retval EFI_SUCCES             This driver is removed ControllerHandle.\r
-  @retval other                  This driver was not removed from this device.\r
+  Stop this driver on ControllerHandle. This service is called by the\r
+  EFI boot service DisconnectController(). In order to\r
+  make drivers as small as possible, there are a few calling\r
+  restrictions for this service. DisconnectController()\r
+  must follow these calling restrictions. If any other agent wishes\r
+  to call Stop() it must also follow these calling restrictions.\r
+  \r
+  @param  This              Protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       This driver is removed ControllerHandle\r
+  @retval other             This driver was not removed from this device\r
 \r
 **/\r
 EFI_STATUS\r
@@ -230,16 +246,16 @@ Udp4DriverBindingStop (
 /**\r
   Creates a child handle with a set of I/O services.\r
 \r
-  @param  This                   Protocol instance pointer.\r
-  @param  ChildHandle            Pointer to the handle of the child to create.   If\r
-                                 it is NULL, then a new handle is created.   If it\r
-                                 is not NULL, then the I/O services are  added to\r
-                                 the existing child handle.\r
+  @param  This        Protocol instance pointer.\r
+  @param  ChildHandle Pointer to the handle of the child to create.  If it is NULL,\r
+                      then a new handle is created.  If it is not NULL, then the\r
+                      I/O services are added to the existing child handle.\r
 \r
-  @retval EFI_SUCCES             The child handle was created with the I/O services\r
-  @retval EFI_OUT_OF_RESOURCES   There are not enough resources availabe to create\r
-                                 the child\r
-  @retval other                  The child handle was not created\r
+  @retval EFI_SUCCES            The child handle was created with the I/O services\r
+  @retval EFI_INVALID_PARAMETER ChildHandle is NULL.\r
+  @retval EFI_OUT_OF_RESOURCES  There are not enough resources availabe to create\r
+                                the child\r
+  @retval other                 The child handle was not created\r
 \r
 **/\r
 EFI_STATUS\r
@@ -348,17 +364,16 @@ ON_ERROR:
 /**\r
   Destroys a child handle with a set of I/O services.\r
 \r
-  @param  This                   Protocol instance pointer.\r
-  @param  ChildHandle            Handle of the child to destroy\r
+  @param  This        Protocol instance pointer.\r
+  @param  ChildHandle Handle of the child to destroy\r
 \r
-  @retval EFI_SUCCES             The I/O services were removed from the child\r
-                                 handle\r
-  @retval EFI_UNSUPPORTED        The child handle does not support the I/O services\r
-                                  that are being removed\r
-  @retval EFI_INVALID_PARAMETER  Child handle is not a valid EFI Handle.\r
-  @retval EFI_ACCESS_DENIED      The child handle could not be destroyed because\r
-                                 its  I/O services are being used.\r
-  @retval other                  The child handle was not destroyed\r
+  @retval EFI_SUCCES            The I/O services were removed from the child handle\r
+  @retval EFI_UNSUPPORTED       The child handle does not support the I/O services\r
+                                that are being removed.\r
+  @retval EFI_INVALID_PARAMETER Child handle is not a valid EFI Handle.\r
+  @retval EFI_ACCESS_DENIED     The child handle could not be destroyed because its\r
+                                I/O services are being used.\r
+  @retval other                 The child handle was not destroyed\r
 \r
 **/\r
 EFI_STATUS\r
@@ -460,31 +475,27 @@ Udp4ServiceBindingDestroyChild (
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  This is the declaration of an EFI image entry point. This entry point is\r
+  the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including\r
+  both device drivers and bus drivers.\r
+  \r
+  The entry point for Udp4 driver which installs the driver binding\r
+  and component name protocol on its ImageHandle.\r
+\r
+  @param  ImageHandle           The firmware allocated handle for the UEFI image.\r
+  @param  SystemTable           A pointer to the EFI System Table.\r
+\r
+  @retval EFI_SUCCESS           The operation completed successfully.\r
+  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 Udp4DriverEntryPoint (\r
   IN EFI_HANDLE        ImageHandle,\r
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  The entry point for Udp4 driver which installs the driver binding\r
-  and component name protocol on its ImageHandle.\r
-\r
-Arguments:\r
-\r
-  ImageHandle - The image handle of the driver.\r
-  SystemTable - The system table.\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS - if the driver binding and component name protocols are\r
-                successfully installed, otherwise if failed.\r
-\r
---*/\r
 {\r
   EFI_STATUS  Status;\r
 \r
index ab50830b680281d7281502ad4caa2b0f899ad743..d9372ba1b8316b58d1e7b38d0d199ddedc2273ea 100644 (file)
@@ -128,13 +128,14 @@ Udp4SendPortUnreach (
   @retval EFI_SUCCESS            The udp4 service context data is created and\r
                                  initialized.\r
   @retval EFI_OUT_OF_RESOURCES   Cannot allocate memory.\r
+  @retval other                  Other error occurs.\r
 \r
 **/\r
 EFI_STATUS\r
 Udp4CreateService (\r
-  IN UDP4_SERVICE_DATA  *Udp4Service,\r
-  IN EFI_HANDLE         ImageHandle,\r
-  IN EFI_HANDLE         ControllerHandle\r
+  IN OUT UDP4_SERVICE_DATA  *Udp4Service,\r
+  IN     EFI_HANDLE         ImageHandle,\r
+  IN     EFI_HANDLE         ControllerHandle\r
   )\r
 {\r
   EFI_STATUS       Status;\r
@@ -251,7 +252,7 @@ Udp4CleanService (
   service context.\r
 \r
   @param  Event                  The event this function registered to.\r
-  @param  Conext                 The context data registered during the creation of\r
+  @param  Context                The context data registered during the creation of\r
                                  the Event.\r
 \r
   @return None.\r
@@ -318,8 +319,8 @@ Udp4CheckTimeout (
 **/\r
 VOID\r
 Udp4InitInstance (\r
-  IN UDP4_SERVICE_DATA   *Udp4Service,\r
-  IN UDP4_INSTANCE_DATA  *Instance\r
+  IN     UDP4_SERVICE_DATA   *Udp4Service,\r
+  IN OUT UDP4_INSTANCE_DATA  *Instance\r
   )\r
 {\r
   //\r
@@ -380,7 +381,8 @@ Udp4CleanInstance (
   @param  Address                Pointer to the specified IPv4 address.\r
   @param  Port                   The udp port number.\r
 \r
-  @return Is the specified <Address, Port> pair found or not.\r
+  @retval TRUE     The specified <Address, Port> pair is found.\r
+  @retval FALSE    Otherwise.\r
 \r
 **/\r
 BOOLEAN\r
@@ -427,12 +429,13 @@ Udp4FindInstanceByPort (
 \r
 /**\r
   This function tries to bind the udp instance according to the configured port\r
-  allocation stragety.\r
+  allocation strategy.\r
 \r
   @param  InstanceList           Pointer to the head of the list linking the udp\r
                                  instances.\r
   @param  ConfigData             Pointer to the ConfigData of the instance to be\r
-                                 bound.\r
+                                 bound. ConfigData->StationPort will be assigned\r
+                                 with an available port value on success.\r
 \r
   @retval EFI_SUCCESS            The bound operation is completed successfully.\r
   @retval EFI_ACCESS_DENIED      The <Address, Port> specified by the ConfigData is\r
@@ -442,8 +445,8 @@ Udp4FindInstanceByPort (
 **/\r
 EFI_STATUS\r
 Udp4Bind (\r
-  IN LIST_ENTRY            *InstanceList,\r
-  IN EFI_UDP4_CONFIG_DATA  *ConfigData\r
+  IN     LIST_ENTRY            *InstanceList,\r
+  IN OUT EFI_UDP4_CONFIG_DATA  *ConfigData\r
   )\r
 {\r
   EFI_IPv4_ADDRESS  *StationAddress;\r
@@ -514,7 +517,8 @@ Udp4Bind (
                                  uses.\r
   @param  NewConfigData          Pointer to the new ConfigData.\r
 \r
-  @return The instance is reconfigurable or not according to the NewConfigData.\r
+  @retval TRUE     The instance is reconfigurable.\r
+  @retval FALSE    Otherwise.\r
 \r
 **/\r
 BOOLEAN\r
@@ -523,10 +527,11 @@ Udp4IsReconfigurable (
   IN EFI_UDP4_CONFIG_DATA  *NewConfigData\r
   )\r
 {\r
-  if ((NewConfigData->AcceptAnyPort != OldConfigData->AcceptAnyPort) ||\r
-    (NewConfigData->AcceptBroadcast != OldConfigData->AcceptBroadcast) ||\r
-    (NewConfigData->AcceptPromiscuous != OldConfigData->AcceptPromiscuous) ||\r
-    (NewConfigData->AllowDuplicatePort != OldConfigData->AllowDuplicatePort)) {\r
+  if ((NewConfigData->AcceptAnyPort      != OldConfigData->AcceptAnyPort)     ||\r
+      (NewConfigData->AcceptBroadcast    != OldConfigData->AcceptBroadcast)   ||\r
+      (NewConfigData->AcceptPromiscuous  != OldConfigData->AcceptPromiscuous) ||\r
+      (NewConfigData->AllowDuplicatePort != OldConfigData->AllowDuplicatePort)\r
+      ) {\r
     //\r
     // The receiving filter parameters cannot be changed.\r
     //\r
@@ -534,7 +539,8 @@ Udp4IsReconfigurable (
   }\r
 \r
   if ((!NewConfigData->AcceptAnyPort) &&\r
-    (NewConfigData->StationPort != OldConfigData->StationPort)) {\r
+      (NewConfigData->StationPort != OldConfigData->StationPort)\r
+      ) {\r
     //\r
     // The port is not changeable.\r
     //\r
@@ -551,8 +557,9 @@ Udp4IsReconfigurable (
     }\r
 \r
     if (!NewConfigData->UseDefaultAddress &&\r
-      (!EFI_IP4_EQUAL (&NewConfigData->StationAddress, &OldConfigData->StationAddress) ||\r
-      !EFI_IP4_EQUAL (&NewConfigData->SubnetMask, &OldConfigData->SubnetMask))) {\r
+        (!EFI_IP4_EQUAL (&NewConfigData->StationAddress, &OldConfigData->StationAddress) ||\r
+         !EFI_IP4_EQUAL (&NewConfigData->SubnetMask, &OldConfigData->SubnetMask))\r
+        ) {\r
       //\r
       // If the instance doesn't use the default address, and the new address or\r
       // new subnet mask is different from the old values.\r
@@ -568,7 +575,9 @@ Udp4IsReconfigurable (
     return FALSE;\r
   }\r
 \r
-  if (!EFI_IP4_EQUAL (&NewConfigData->RemoteAddress, &mZeroIp4Addr) && (NewConfigData->RemotePort != OldConfigData->RemotePort)) {\r
+  if (!EFI_IP4_EQUAL (&NewConfigData->RemoteAddress, &mZeroIp4Addr) &&\r
+      NewConfigData->RemotePort != OldConfigData->RemotePort\r
+      ) {\r
     //\r
     // The RemotePort differs if it's designated in the configdata.\r
     //\r
@@ -593,8 +602,8 @@ Udp4IsReconfigurable (
 **/\r
 VOID\r
 Udp4BuildIp4ConfigData (\r
-  IN EFI_UDP4_CONFIG_DATA  *Udp4ConfigData,\r
-  IN EFI_IP4_CONFIG_DATA   *Ip4ConfigData\r
+  IN     EFI_UDP4_CONFIG_DATA  *Udp4ConfigData,\r
+  IN OUT EFI_IP4_CONFIG_DATA   *Ip4ConfigData\r
   )\r
 {\r
   CopyMem (Ip4ConfigData, &mIpIoDefaultIpConfigData, sizeof (*Ip4ConfigData));\r
@@ -818,8 +827,8 @@ Udp4Checksum (
 **/\r
 EFI_STATUS\r
 Udp4RemoveToken (\r
-  IN NET_MAP                    *TokenMap,\r
-  IN EFI_UDP4_COMPLETION_TOKEN  *Token\r
+  IN OUT NET_MAP                    *TokenMap,\r
+  IN     EFI_UDP4_COMPLETION_TOKEN  *Token\r
   )\r
 {\r
   NET_MAP_ITEM  *Item;\r
@@ -943,9 +952,9 @@ Udp4DgramRcvd (
 **/\r
 EFI_STATUS\r
 Udp4LeaveGroup (\r
-  IN NET_MAP       *Map,\r
-  IN NET_MAP_ITEM  *Item,\r
-  IN VOID          *Arg OPTIONAL\r
+  IN OUT NET_MAP       *Map,\r
+  IN     NET_MAP_ITEM  *Item,\r
+  IN     VOID          *Arg OPTIONAL\r
   )\r
 {\r
   EFI_IPv4_ADDRESS  *McastIp;\r
@@ -977,12 +986,13 @@ Udp4LeaveGroup (
 \r
 \r
 /**\r
-  This function cancle the token specified by Arg in the Map.\r
+  This function cancels the token specified by Arg in the Map. This is a callback\r
+  used by Udp4InstanceCancelToken().\r
 \r
   @param  Map                    Pointer to the NET_MAP.\r
   @param  Item                   Pointer to the NET_MAP_ITEM.\r
-  @param  Arg                    Pointer to the token to be cancelled, if NULL, all\r
-                                 the tokens in this Map will be cancelled.\r
+  @param  Arg                    Pointer to the token to be cancelled, if NULL,\r
+                                 the token specified by Item is cancelled.\r
 \r
   @retval EFI_SUCCESS            The token is cancelled if Arg is NULL or the token\r
                                  is not the same as that in the Item if Arg is not\r
@@ -1039,7 +1049,7 @@ Udp4CancelTokens (
 /**\r
   This function removes all the Wrap datas in the RcvdDgramQue.\r
 \r
-  @param  RcvdDgramQue           Pointer to the list containing all the Wrap datas.\r
+  @param  Instance           Pointer to the udp instance context data.\r
 \r
   @return None.\r
 \r
@@ -1067,6 +1077,7 @@ Udp4FlushRcvdDgram (
 \r
 \r
 /**\r
+  Cancel Udp4 tokens from the Udp4 instance.\r
 \r
   @param  Instance               Pointer to the udp instance context data.\r
   @param  Token                  Pointer to the token to be canceled, if NULL, all\r
@@ -1085,7 +1096,7 @@ Udp4InstanceCancelToken (
   EFI_STATUS  Status;\r
 \r
   //\r
-  // Cancle this token from the TxTokens map.\r
+  // Cancel this token from the TxTokens map.\r
   //\r
   Status = NetMapIterate (&Instance->TxTokens, Udp4CancelTokens, Token);\r
 \r
@@ -1125,7 +1136,9 @@ Udp4InstanceCancelToken (
   @param  Udp4Session            Pointer to the EFI_UDP4_SESSION_DATA abstracted\r
                                  from the received udp datagram.\r
 \r
-  @return The udp datagram matches the receiving requirments of the Instance or not.\r
+  @retval TRUE       The udp datagram matches the receiving requirments of the\r
+                     udp Instance.\r
+  @retval FALSE      Otherwise.\r
 \r
 **/\r
 BOOLEAN\r
@@ -1147,7 +1160,8 @@ Udp4MatchDgram (
   }\r
 \r
   if ((!ConfigData->AcceptAnyPort && (Udp4Session->DestinationPort != ConfigData->StationPort)) ||\r
-    ((ConfigData->RemotePort != 0) && (Udp4Session->SourcePort != ConfigData->RemotePort))) {\r
+      ((ConfigData->RemotePort != 0) && (Udp4Session->SourcePort != ConfigData->RemotePort))\r
+      ) {\r
     //\r
     // The local port or the remote port doesn't match.\r
     //\r
@@ -1155,7 +1169,8 @@ Udp4MatchDgram (
   }\r
 \r
   if (!EFI_IP4_EQUAL (&ConfigData->RemoteAddress, &mZeroIp4Addr) &&\r
-    !EFI_IP4_EQUAL (&ConfigData->RemoteAddress, &Udp4Session->SourceAddress)) {\r
+      !EFI_IP4_EQUAL (&ConfigData->RemoteAddress, &Udp4Session->SourceAddress)\r
+      ) {\r
     //\r
     // This datagram doesn't come from the instance's specified sender.\r
     //\r
@@ -1163,9 +1178,10 @@ Udp4MatchDgram (
   }\r
 \r
   if (EFI_IP4_EQUAL (&ConfigData->StationAddress, &mZeroIp4Addr) ||\r
-    EFI_IP4_EQUAL (&Udp4Session->DestinationAddress, &ConfigData->StationAddress)) {\r
+      EFI_IP4_EQUAL (&Udp4Session->DestinationAddress, &ConfigData->StationAddress)\r
+      ) {\r
     //\r
-    // The instance is configured to receive datagrams destinated to any station IP or\r
+    // The instance is configured to receive datagrams destined to any station IP or\r
     // the destination address of this datagram matches the configured station IP.\r
     //\r
     return TRUE;\r
@@ -1181,7 +1197,8 @@ Udp4MatchDgram (
   }\r
 \r
   if (IP4_IS_MULTICAST (NTOHL (Destination)) &&\r
-    (NULL != NetMapFindKey (&Instance->McastIps, (VOID *) (UINTN) Destination))) {\r
+      NetMapFindKey (&Instance->McastIps, (VOID *) (UINTN) Destination) != NULL\r
+      ) {\r
     //\r
     // It's a multicast packet and the multicast address is accepted by this instance.\r
     //\r
@@ -1365,7 +1382,7 @@ Udp4InstanceDeliverDgram (
   EFI_TPL                    OldTpl;\r
 \r
   if (!IsListEmpty (&Instance->RcvdDgramQue) &&\r
-    !NetMapIsEmpty (&Instance->RxTokens)) {\r
+      !NetMapIsEmpty (&Instance->RxTokens)) {\r
 \r
     Wrap = NET_LIST_HEAD (&Instance->RcvdDgramQue, UDP4_RXDATA_WRAP, Link);\r
 \r
@@ -1381,7 +1398,7 @@ Udp4InstanceDeliverDgram (
       NetbufFree (Wrap->Packet);\r
 \r
       Wrap->Packet = Dup;\r
-    } \r
+    }\r
 \r
     NetListRemoveHead (&Instance->RcvdDgramQue);\r
 \r
@@ -1678,9 +1695,10 @@ Udp4IcmpHandler (
     Instance = NET_LIST_USER_STRUCT (Entry, UDP4_INSTANCE_DATA, Link);\r
 \r
     if (!Instance->Configured ||\r
-      Instance->ConfigData.AcceptPromiscuous ||\r
-      Instance->ConfigData.AcceptAnyPort ||\r
-      EFI_IP4_EQUAL (&Instance->ConfigData.StationAddress, &mZeroIp4Addr)) {\r
+        Instance->ConfigData.AcceptPromiscuous ||\r
+        Instance->ConfigData.AcceptAnyPort ||\r
+        EFI_IP4_EQUAL (&Instance->ConfigData.StationAddress, &mZeroIp4Addr)\r
+        ) {\r
       //\r
       // Don't try to deliver the ICMP error to this instance if it is not configured,\r
       // or it's configured to be promiscuous or accept any port or accept all the\r
@@ -1780,6 +1798,7 @@ Udp4NetVectorExtFree (
 \r
   @retval EFI_OUT_OF_RESOURCES   There are not enough resources to set the\r
                                  variable.\r
+  @retval EFI_SUCCESS            Set variable successfully.\r
   @retval other                  Set variable failed.\r
 \r
 **/\r
index eb013e91500e068460f0405e21c02fbe08501e64..d46a0de20e0bae1633f2d1a1400e04f51717da41 100644 (file)
@@ -20,8 +20,6 @@ Abstract:
 \r
 #include "Udp4Impl.h"\r
 \r
-#include <Protocol/Ip4.h>\r
-\r
 EFI_UDP4_PROTOCOL  mUdp4Protocol = {\r
   Udp4GetModeData,\r
   Udp4Configure,\r
@@ -35,24 +33,23 @@ EFI_UDP4_PROTOCOL  mUdp4Protocol = {
 \r
 \r
 /**\r
-  This function copies the current operational settings of this EFI UDPv4 Protocol\r
-  instance into user-supplied buffers. This function is used optionally to retrieve\r
-  the operational mode data of underlying networks or drivers.\r
-\r
-  @param  This                   Pointer to the EFI_UDP4_PROTOCOL instance.\r
-  @param  Udp4ConfigData         Pointer to the buffer to receive the current\r
-                                 configuration data.\r
-  @param  Ip4ModeData            Pointer to the EFI IPv4 Protocol mode data\r
-                                 structure.\r
-  @param  MnpConfigData          Pointer to the managed network configuration data\r
-                                 structure.\r
-  @param  SnpModeData            Pointer to the simple network mode data structure.\r
-\r
-  @retval EFI_SUCCESS            The mode data was read.\r
-  @retval EFI_NOT_STARTED        When Udp4ConfigData is queried, no configuration\r
-                                 data is  available because this instance has not\r
-                                 been started.\r
-  @retval EFI_INVALID_PARAMETER  This is NULL.\r
+  Reads the current operational settings.\r
+\r
+  The GetModeData() function copies the current operational settings of this EFI\r
+  UDPv4 Protocol instance into user-supplied buffers. This function is used\r
+  optionally to retrieve the operational mode data of underlying networks or\r
+  drivers.\r
+\r
+  @param  This           Pointer to the EFI_UDP4_PROTOCOL instance.\r
+  @param  Udp4ConfigData Pointer to the buffer to receive the current configuration data.\r
+  @param  Ip4ModeData    Pointer to the EFI IPv4 Protocol mode data structure.\r
+  @param  MnpConfigData  Pointer to the managed network configuration data structure.\r
+  @param  SnpModeData    Pointer to the simple network mode data structure.\r
+\r
+  @retval EFI_SUCCESS           The mode data was read.\r
+  @retval EFI_NOT_STARTED       When Udp4ConfigData is queried, no configuration data is\r
+                                available because this instance has not been started.\r
+  @retval EFI_INVALID_PARAMETER This is NULL.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -103,39 +100,36 @@ Udp4GetModeData (
 \r
 \r
 /**\r
-  This function is used to do the following:\r
-  Initialize and start this instance of the EFI UDPv4 Protocol.\r
-  Change the filtering rules and operational parameters.\r
-  Reset this instance of the EFI UDPv4 Protocol.\r
-\r
-  @param  This                   Pointer to the EFI_UDP4_PROTOCOL instance.\r
-  @param  UdpConfigData          Pointer to the buffer to receive the current mode\r
-                                 data.\r
-\r
-  @retval EFI_SUCCESS            The configuration settings were set, changed, or\r
-                                 reset successfully.\r
-  @retval EFI_NO_MAPPING         When using a default address, configuration (DHCP,\r
-                                 BOOTP, RARP, etc.) is not finished yet.\r
-  @retval EFI_INVALID_PARAMETER  One or more following conditions are TRUE: This is\r
-                                 NULL. UdpConfigData.StationAddress is not a valid\r
-                                 unicast IPv4 address. UdpConfigData.SubnetMask is\r
-                                 not a valid IPv4 address mask.\r
-                                 UdpConfigData.RemoteAddress is not a valid unicast\r
-                                 IPv4  address if it is not zero.\r
-  @retval EFI_ALREADY_STARTED    The EFI UDPv4 Protocol instance is already\r
-                                 started/configured and must be stopped/reset\r
-                                 before it can be reconfigured. Only TypeOfService,\r
-                                 TimeToLive, DoNotFragment, ReceiveTimeout, and\r
-                                 TransmitTimeout can be reconfigured without\r
-                                 stopping the current instance of the EFI UDPv4\r
-                                 Protocol.\r
-  @retval EFI_ACCESS_DENIED      UdpConfigData.AllowDuplicatePort is FALSE and\r
-                                 UdpConfigData.StationPort is already used by other\r
-                                 instance.\r
-  @retval EFI_OUT_OF_RESOURCES   The EFI UDPv4 Protocol driver cannot allocate\r
-                                 memory for this EFI UDPv4 Protocol instance.\r
-  @retval EFI_DEVICE_ERROR       An unexpected network or system error occurred and\r
-                                 this instance was not opened.\r
+  Initializes, changes, or resets the operational parameters for this instance of the EFI UDPv4\r
+  Protocol.\r
+  \r
+  The Configure() function is used to do the following:\r
+  * Initialize and start this instance of the EFI UDPv4 Protocol.\r
+  * Change the filtering rules and operational parameters.\r
+  * Reset this instance of the EFI UDPv4 Protocol.\r
+  Until these parameters are initialized, no network traffic can be sent or\r
+  received by this instance. This instance can be also reset by calling Configure()\r
+  with UdpConfigData set to NULL. Once reset, the receiving queue and transmitting\r
+  queue are flushed and no traffic is allowed through this instance.\r
+  With different parameters in UdpConfigData, Configure() can be used to bind\r
+  this instance to specified port.\r
+\r
+  @param  This           Pointer to the EFI_UDP4_PROTOCOL instance.\r
+  @param  UdpConfigData  Pointer to the buffer to receive the current configuration data.\r
+\r
+  @retval EFI_SUCCESS           The configuration settings were set, changed, or reset successfully.\r
+  @retval EFI_NO_MAPPING        When using a default address, configuration (DHCP, BOOTP,\r
+                                RARP, etc.) is not finished yet.\r
+  @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE:\r
+  @retval EFI_ALREADY_STARTED   The EFI UDPv4 Protocol instance is already started/configured\r
+                                and must be stopped/reset before it can be reconfigured.\r
+  @retval EFI_ACCESS_DENIED     UdpConfigData. AllowDuplicatePort is FALSE\r
+                                and UdpConfigData.StationPort is already used by\r
+                                other instance.\r
+  @retval EFI_OUT_OF_RESOURCES  The EFI UDPv4 Protocol driver cannot allocate memory for this\r
+                                EFI UDPv4 Protocol instance.\r
+  @retval EFI_DEVICE_ERROR      An unexpected network or system error occurred and this instance\r
+                                 was not opened. \r
 \r
 **/\r
 EFI_STATUS\r
@@ -305,30 +299,32 @@ ON_EXIT:
 \r
 \r
 /**\r
-  This function is used to enable and disable the multicast group filtering.\r
-\r
-  @param  This                   Pointer to the EFI_UDP4_PROTOCOL instance.\r
-  @param  JoinFlag               Set to TRUE to join a multicast group. Set to\r
-                                 FALSE to leave one or all multicast groups.\r
-  @param  MulticastAddress       Pointer to multicast group address to join or\r
-                                 leave.\r
-\r
-  @retval EFI_SUCCESS            The operation completed successfully.\r
-  @retval EFI_NOT_STARTED        The EFI UDPv4 Protocol instance has not been\r
-                                 started.\r
-  @retval EFI_NO_MAPPING         When using a default address, configuration (DHCP,\r
-                                 BOOTP, RARP, etc.) is not finished yet.\r
-  @retval EFI_OUT_OF_RESOURCES   Could not allocate resources to join the group.\r
-  @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:\r
-                                 This is NULL. JoinFlag is TRUE and\r
-                                 MulticastAddress is NULL. JoinFlag is TRUE and\r
-                                 *MulticastAddress is not a valid  multicast\r
-                                 address.\r
-  @retval EFI_ALREADY_STARTED    The group address is already in the group table\r
-                                 (when JoinFlag is TRUE).\r
-  @retval EFI_NOT_FOUND          The group address is not in the group table (when\r
-                                 JoinFlag is FALSE).\r
-  @retval EFI_DEVICE_ERROR       An unexpected system or network error occurred.\r
+  Joins and leaves multicast groups.\r
+  \r
+  The Groups() function is used to enable and disable the multicast group\r
+  filtering. If the JoinFlag is FALSE and the MulticastAddress is NULL, then all\r
+  currently joined groups are left.\r
+\r
+  @param  This             Pointer to the EFI_UDP4_PROTOCOL instance.\r
+  @param  JoinFlag         Set to TRUE to join a multicast group. Set to FALSE to leave one\r
+                           or all multicast groups.\r
+  @param  MulticastAddress Pointer to multicast group address to join or leave.\r
+\r
+  @retval EFI_SUCCESS           The operation completed successfully.\r
+  @retval EFI_NOT_STARTED       The EFI UDPv4 Protocol instance has not been started.\r
+  @retval EFI_NO_MAPPING        When using a default address, configuration (DHCP, BOOTP,\r
+                                RARP, etc.) is not finished yet.\r
+  @retval EFI_OUT_OF_RESOURCES  Could not allocate resources to join the group.\r
+  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+                                - This is NULL.\r
+                                - JoinFlag is TRUE and MulticastAddress is NULL.\r
+                                - JoinFlag is TRUE and *MulticastAddress is not\r
+                                  a valid multicast address.\r
+  @retval EFI_ALREADY_STARTED   The group address is already in the group table (when\r
+                                JoinFlag is TRUE).\r
+  @retval EFI_NOT_FOUND         The group address is not in the group table (when JoinFlag is\r
+                                FALSE).\r
+  @retval EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -385,7 +381,7 @@ Udp4Groups (
   // Keep a local copy of the configured multicast IPs because IpIo receives\r
   // datagrams from the 0 station address IP instance and then UDP delivers to\r
   // the matched instance. This copy of multicast IPs is used to avoid receive\r
-  // the mutlicast datagrams destinated to multicast IPs the other instances configured.\r
+  // the mutlicast datagrams destined to multicast IPs the other instances configured.\r
   //\r
   if (JoinFlag) {\r
 \r
@@ -404,31 +400,41 @@ ON_EXIT:
 \r
 \r
 /**\r
-  This function adds a route to or deletes a route from the routing table.\r
-\r
-  @param  This                   Pointer to the EFI_UDP4_PROTOCOL instance.\r
-  @param  DeleteRoute            Set to TRUE to delete this route from the routing\r
-                                 table. Set to FALSE to add this route to the\r
-                                 routing table.\r
-  @param  SubnetAddress          The destination network address that needs to be\r
-                                 routed.\r
-  @param  SubnetMask             The subnet mask of SubnetAddress.\r
-  @param  GatewayAddress         The gateway IP address for this route.\r
-\r
-  @retval EFI_SUCCESS            The operation completed successfully.\r
-  @retval EFI_NOT_STARTED        The EFI UDPv4 Protocol instance has not been\r
-                                 started.\r
-  @retval EFI_NO_MAPPING         When using a default address, configuration (DHCP,\r
-                                 BOOTP, RARP, etc.) is not finished yet.\r
-  @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:\r
-                                 This is NULL. SubnetAddress is NULL. SubnetMask is\r
-                                 NULL. GatewayAddress is NULL. SubnetAddress is not\r
-                                 a valid subnet address. SubnetMask is not a valid\r
-                                 subnet mask. GatewayAddress is not a valid unicast\r
-                                 IP address.\r
-  @retval EFI_OUT_OF_RESOURCES   Could not add the entry to the routing table.\r
-  @retval EFI_NOT_FOUND          This route is not in the routing table.\r
-  @retval EFI_ACCESS_DENIED      The route is already defined in the routing table.\r
+  Adds and deletes routing table entries.\r
+  \r
+  The Routes() function adds a route to or deletes a route from the routing table.\r
+  Routes are determined by comparing the SubnetAddress with the destination IP\r
+  address and arithmetically AND-ing it with the SubnetMask. The gateway address\r
+  must be on the same subnet as the configured station address.\r
+  The default route is added with SubnetAddress and SubnetMask both set to 0.0.0.0.\r
+  The default route matches all destination IP addresses that do not match any\r
+  other routes.\r
+  A zero GatewayAddress is a nonroute. Packets are sent to the destination IP\r
+  address if it can be found in the Address Resolution Protocol (ARP) cache or\r
+  on the local subnet. One automatic nonroute entry will be inserted into the\r
+  routing table for outgoing packets that are addressed to a local subnet\r
+  (gateway address of 0.0.0.0).\r
+  Each instance of the EFI UDPv4 Protocol has its own independent routing table.\r
+  Instances of the EFI UDPv4 Protocol that use the default IP address will also\r
+  have copies of the routing table provided by the EFI_IP4_CONFIG_PROTOCOL. These\r
+  copies will be updated automatically whenever the IP driver reconfigures its\r
+  instances; as a result, the previous modification to these copies will be lost.\r
+\r
+  @param  This           Pointer to the EFI_UDP4_PROTOCOL instance.\r
+  @param  DeleteRoute    Set to TRUE to delete this route from the routing table.\r
+                         Set to FALSE to add this route to the routing table.\r
+  @param  SubnetAddress  The destination network address that needs to be routed.\r
+  @param  SubnetMask     The subnet mask of SubnetAddress.\r
+  @param  GatewayAddress The gateway IP address for this route.\r
+\r
+  @retval EFI_SUCCESS           The operation completed successfully.\r
+  @retval EFI_NOT_STARTED       The EFI UDPv4 Protocol instance has not been started.\r
+  @retval EFI_NO_MAPPING        When using a default address, configuration (DHCP, BOOTP,\r
+                                - RARP, etc.) is not finished yet.\r
+  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
+  @retval EFI_OUT_OF_RESOURCES  Could not add the entry to the routing table.\r
+  @retval EFI_NOT_FOUND         This route is not in the routing table.\r
+  @retval EFI_ACCESS_DENIED     The route is already defined in the routing table.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -468,44 +474,33 @@ Udp4Routes (
 \r
 \r
 /**\r
-  This function places a sending request to this instance of the EFI UDPv4 Protocol,\r
-  alongside the transmit data that was filled by the user.\r
-\r
-  @param  This                   Pointer to the EFI_UDP4_PROTOCOL instance.\r
-  @param  Token                  Pointer to the completion token that will be\r
-                                 placed into the transmit queue.\r
-\r
-  @retval EFI_SUCCESS            The data has been queued for transmission.\r
-  @retval EFI_NOT_STARTED        This EFI UDPv4 Protocol instance has not been\r
-                                 started.\r
-  @retval EFI_NO_MAPPING         When using a default address, configuration (DHCP,\r
-                                 BOOTP, RARP, etc.) is not finished yet.\r
-  @retval EFI_INVALID_PARAMETER  One or more of the following are TRUE: This is\r
-                                 NULL. Token is NULL. Token.Event is NULL.\r
-                                 Token.Packet.TxData is NULL.\r
-                                 Token.Packet.TxData.FragmentCount is zero.\r
-                                 Token.Packet.TxData.DataLength is not equal to the\r
-                                 sum of fragment lengths. One or more of the\r
-                                 Token.Packet.TxData.FragmentTable[].\r
-                                 FragmentLength fields is zero. One or more of the\r
-                                 Token.Packet.TxData.FragmentTable[].\r
-                                 FragmentBuffer fields is NULL.\r
-                                 Token.Packet.TxData. GatewayAddress is not a\r
-                                 unicast IPv4 address if it is not NULL. One or\r
-                                 more IPv4 addresses in Token.Packet.TxData.\r
-                                 UdpSessionData are not valid unicast IPv4\r
-                                 addresses if the UdpSessionData is not NULL.\r
-  @retval EFI_ACCESS_DENIED      The transmit completion token with the same\r
-                                 Token.Event is already in the transmit queue.\r
-  @retval EFI_NOT_READY          The completion token could not be queued because\r
-                                 the transmit queue is full.\r
-  @retval EFI_OUT_OF_RESOURCES   Could not queue the transmit data.\r
-  @retval EFI_NOT_FOUND          There is no route to the destination network or\r
-                                 address.\r
-  @retval EFI_BAD_BUFFER_SIZE    The data length is greater than the maximum UDP\r
-                                 packet size. Or the length of the IP header + UDP\r
-                                 header + data length is greater than MTU if\r
-                                 DoNotFragment is TRUE.\r
+  Queues outgoing data packets into the transmit queue.\r
+  \r
+  The Transmit() function places a sending request to this instance of the EFI\r
+  UDPv4 Protocol, alongside the transmit data that was filled by the user. Whenever\r
+  the packet in the token is sent out or some errors occur, the Token.Event will\r
+  be signaled and Token.Status is updated. Providing a proper notification function\r
+  and context for the event will enable the user to receive the notification and\r
+  transmitting status.\r
+\r
+  @param  This  Pointer to the EFI_UDP4_PROTOCOL instance.\r
+  @param  Token Pointer to the completion token that will be placed into the\r
+                transmit queue.\r
+\r
+  @retval EFI_SUCCESS           The data has been queued for transmission.\r
+  @retval EFI_NOT_STARTED       This EFI UDPv4 Protocol instance has not been started.\r
+  @retval EFI_NO_MAPPING        When using a default address, configuration (DHCP, BOOTP,\r
+                                RARP, etc.) is not finished yet.\r
+  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
+  @retval EFI_ACCESS_DENIED     The transmit completion token with the same\r
+                                Token.Event was already in the transmit queue.\r
+  @retval EFI_NOT_READY         The completion token could not be queued because the\r
+                                transmit queue is full.\r
+  @retval EFI_OUT_OF_RESOURCES  Could not queue the transmit data.\r
+  @retval EFI_NOT_FOUND         There is no route to the destination network or address.\r
+  @retval EFI_BAD_BUFFER_SIZE   The data length is greater than the maximum UDP packet\r
+                                size. Or the length of the IP header + UDP header + data\r
+                                length is greater than MTU if DoNotFragment is TRUE.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -704,30 +699,32 @@ ON_EXIT:
 \r
 \r
 /**\r
-  This function places a completion token into the receive packet queue. This function\r
-  is always asynchronous.\r
-\r
-  @param  This                   Pointer to the EFI_UDP4_PROTOCOL instance.\r
-  @param  Token                  Pointer to a token that is associated with the\r
-                                 receive data descriptor.\r
-\r
-  @retval EFI_SUCCESS            The receive completion token is cached.\r
-  @retval EFI_NOT_STARTED        This EFI UDPv4 Protocol instance has not been\r
-                                 started.\r
-  @retval EFI_NO_MAPPING         When using a default address, configuration (DHCP,\r
-                                 BOOTP, RARP, etc.) is not finished yet.\r
-  @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:\r
-                                 This is NULL. Token is NULL. Token.Event is NULL.\r
-  @retval EFI_OUT_OF_RESOURCES   The receive completion token could not be queued\r
-                                 due to a lack of system resources (usually\r
-                                 memory).\r
-  @retval EFI_DEVICE_ERROR       An unexpected system or network error occurred.\r
-                                 The EFI UDPv4 Protocol instance has been reset to\r
-                                 startup defaults.\r
-  @retval EFI_ACCESS_DENIED      A receive completion token with the same\r
-                                 Token.Event is already in the receive queue.\r
-  @retval EFI_NOT_READY          The receive request could not be queued because\r
-                                 the receive  queue is full.\r
+  Places an asynchronous receive request into the receiving queue.\r
+  \r
+  The Receive() function places a completion token into the receive packet queue.\r
+  This function is always asynchronous.\r
+  The caller must fill in the Token.Event field in the completion token, and this\r
+  field cannot be NULL. When the receive operation completes, the EFI UDPv4 Protocol\r
+  driver updates the Token.Status and Token.Packet.RxData fields and the Token.Event\r
+  is signaled. Providing a proper notification function and context for the event\r
+  will enable the user to receive the notification and receiving status. That\r
+  notification function is guaranteed to not be re-entered.\r
+\r
+  @param  This  Pointer to the EFI_UDP4_PROTOCOL instance.\r
+  @param  Token Pointer to a token that is associated with the receive data\r
+                descriptor.\r
+\r
+  @retval EFI_SUCCESS           The receive completion token was cached.\r
+  @retval EFI_NOT_STARTED       This EFI UDPv4 Protocol instance has not been started.\r
+  @retval EFI_NO_MAPPING        When using a default address, configuration (DHCP, BOOTP, RARP, etc.)\r
+                                is not finished yet.\r
+  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+  @retval EFI_OUT_OF_RESOURCES  The receive completion token could not be queued due to a lack of system\r
+                                resources (usually memory).\r
+  @retval EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
+  @retval EFI_ACCESS_DENIED     A receive completion token with the same Token.Event was already in\r
+                                the receive queue.\r
+  @retval EFI_NOT_READY         The receive request could not be queued because the receive queue is full.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -784,7 +781,7 @@ Udp4Receive (
   Udp4ReportIcmpError (Instance);\r
 \r
   //\r
-  // Try to delivered the received datagrams.\r
+  // Try to deliver the received datagrams.\r
   //\r
   Udp4InstanceDeliverDgram (Instance);\r
 \r
@@ -802,25 +799,31 @@ ON_EXIT:
 \r
 \r
 /**\r
-  This function is used to abort a pending transmit or receive request.\r
-\r
-  @param  This                   Pointer to the EFI_UDP4_PROTOCOL instance.\r
-  @param  Token                  Pointer to a token that has been issued by\r
-                                 EFI_UDP4_PROTOCOL.Transmit() or\r
-                                 EFI_UDP4_PROTOCOL.Receive().\r
-\r
-  @retval EFI_SUCCESS            The asynchronous I/O request is aborted and\r
-                                 Token.Event is  signaled. When Token is NULL, all\r
-                                 pending requests are aborted and their events are\r
-                                 signaled.\r
-  @retval EFI_INVALID_PARAMETER  This is NULL.\r
-  @retval EFI_NOT_STARTED        This instance has not been started.\r
-  @retval EFI_NO_MAPPING         When using the default address, configuration\r
-                                 (DHCP, BOOTP, RARP, etc.) is not finished yet.\r
-  @retval EFI_NOT_FOUND          When Token is not NULL, the asynchronous I/O\r
-                                 request is not found in the transmit or receive\r
-                                 queue. It is either completed or not issued by\r
-                                 Transmit() or Receive().\r
+  Aborts an asynchronous transmit or receive request.\r
+  \r
+  The Cancel() function is used to abort a pending transmit or receive request.\r
+  If the token is in the transmit or receive request queues, after calling this\r
+  function, Token.Status will be set to EFI_ABORTED and then Token.Event will be\r
+  signaled. If the token is not in one of the queues, which usually means that\r
+  the asynchronous operation has completed, this function will not signal the\r
+  token and EFI_NOT_FOUND is returned.\r
+\r
+  @param  This  Pointer to the EFI_UDP4_PROTOCOL instance.\r
+  @param  Token Pointer to a token that has been issued by\r
+                EFI_UDP4_PROTOCOL.Transmit() or\r
+                EFI_UDP4_PROTOCOL.Receive().If NULL, all pending\r
+                tokens are aborted.\r
+\r
+  @retval  EFI_SUCCESS           The asynchronous I/O request was aborted and Token.Event\r
+                                 was signaled. When Token is NULL, all pending requests are\r
+                                 aborted and their events are signaled.\r
+  @retval  EFI_INVALID_PARAMETER This is NULL.\r
+  @retval  EFI_NOT_STARTED       This instance has not been started.\r
+  @retval  EFI_NO_MAPPING        When using the default address, configuration (DHCP, BOOTP,\r
+                                 RARP, etc.) is not finished yet.\r
+  @retval  EFI_NOT_FOUND         When Token is not NULL, the asynchronous I/O request was\r
+                                 not found in the transmit or receive queue. It has either completed\r
+                                 or was not issued by Transmit() and Receive().\r
 \r
 **/\r
 EFI_STATUS\r
@@ -856,7 +859,7 @@ Udp4Cancel (
   Status = Udp4InstanceCancelToken (Instance, Token);\r
 \r
   //\r
-  // Dispatch the DPC queued by the NotifyFunction of the canceled token's events.\r
+  // Dispatch the DPC queued by the NotifyFunction of the cancelled token's events.\r
   //\r
   NetLibDispatchDpc ();\r
 \r
@@ -867,16 +870,23 @@ Udp4Cancel (
 \r
 \r
 /**\r
-  This function can be used by network drivers and applications to increase the rate that\r
-  data packets are moved between the communications device and the transmit/receive queues.\r
-  Argumens:\r
-  This - Pointer to the EFI_UDP4_PROTOCOL instance.\r
-\r
-  @retval EFI_SUCCESS            Incoming or outgoing data was processed.\r
-  @retval EFI_INVALID_PARAMETER  This is NULL.\r
-  @retval EFI_DEVICE_ERROR       An unexpected system or network error occurred.\r
-  @retval EFI_TIMEOUT            Data was dropped out of the transmit and/or\r
-                                 receive queue.\r
+  Polls for incoming data packets and processes outgoing data packets.\r
+  \r
+  The Poll() function can be used by network drivers and applications to increase\r
+  the rate that data packets are moved between the communications device and the\r
+  transmit and receive queues.\r
+  In some systems, the periodic timer event in the managed network driver may not\r
+  poll the underlying communications device fast enough to transmit and/or receive\r
+  all data packets without missing incoming packets or dropping outgoing packets.\r
+  Drivers and applications that are experiencing packet loss should try calling\r
+  the Poll() function more often.\r
+\r
+  @param  This Pointer to the EFI_UDP4_PROTOCOL instance.\r
+\r
+  @retval EFI_SUCCESS           Incoming or outgoing data was processed.\r
+  @retval EFI_INVALID_PARAMETER This is NULL.\r
+  @retval EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
+  @retval EFI_TIMEOUT           Data was dropped out of the transmit and/or receive queue.\r
 \r
 **/\r
 EFI_STATUS\r