]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Driver.c
sync comments, fix function header, rename variable name to follow coding style.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Driver.c
index 589eca520801c1506ebd09d742c33dc28a8766e3..f36394a0093075bb54ba7d036e93f967dc4b4c22 100644 (file)
@@ -31,30 +31,27 @@ EFI_DRIVER_BINDING_PROTOCOL gIp4DriverBinding = {
   NULL\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 IP4 driver which install the driver\r
+  binding and component name protocol on its image.\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
 Ip4DriverEntryPoint (\r
   IN EFI_HANDLE             ImageHandle,\r
   IN EFI_SYSTEM_TABLE       *SystemTable\r
   )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  The entry point for IP4 driver which install the driver\r
-  binding and component name protocol on its image.\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\r
-  are successfully installed, otherwise if failed.\r
-\r
---*/\r
 {\r
   return EfiLibInstallDriverBindingComponentName2 (\r
            ImageHandle,\r
@@ -66,18 +63,22 @@ Returns:
            );\r
 }\r
 \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
-  @retval other                  This driver does not support 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
@@ -121,7 +122,6 @@ Ip4DriverBindingSupported (
   return Status;\r
 }\r
 \r
-STATIC\r
 EFI_STATUS\r
 Ip4CleanService (\r
   IN IP4_SERVICE            *IpSb\r
@@ -129,7 +129,7 @@ Ip4CleanService (
 \r
 \r
 /**\r
-  Create a new IP4 driver service binding protocol\r
+  Create a new IP4 driver service binding private instance.\r
 \r
   @param  Controller             The controller that has MNP service binding\r
                                  installed\r
@@ -139,9 +139,9 @@ Ip4CleanService (
 \r
   @retval EFI_OUT_OF_RESOURCES   Failed to allocate some resource\r
   @retval EFI_SUCCESS            A new IP4 service binding private is created.\r
+  @retval other                  Other error occurs.\r
 \r
 **/\r
-STATIC\r
 EFI_STATUS\r
 Ip4CreateService (\r
   IN  EFI_HANDLE            Controller,\r
@@ -161,7 +161,7 @@ Ip4CreateService (
   // empty resources, so if any thing goes wrong when allocating\r
   // resources, Ip4CleanService can be called to clean it up.\r
   //\r
-  IpSb = NetAllocatePool (sizeof (IP4_SERVICE));\r
+  IpSb = AllocatePool (sizeof (IP4_SERVICE));\r
 \r
   if (IpSb == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -174,16 +174,16 @@ Ip4CreateService (
   IpSb->InDestory                   = FALSE;\r
 \r
   IpSb->NumChildren                 = 0;\r
-  NetListInit (&IpSb->Children);\r
+  InitializeListHead (&IpSb->Children);\r
 \r
-  NetListInit (&IpSb->Interfaces);\r
+  InitializeListHead (&IpSb->Interfaces);\r
   IpSb->DefaultInterface            = NULL;\r
   IpSb->DefaultRouteTable           = NULL;\r
 \r
   Ip4InitAssembleTable (&IpSb->Assemble);\r
 \r
   IpSb->IgmpCtrl.Igmpv1QuerySeen    = 0;\r
-  NetListInit (&IpSb->IgmpCtrl.Groups);\r
+  InitializeListHead (&IpSb->IgmpCtrl.Groups);\r
 \r
   IpSb->Image                       = ImageHandle;\r
   IpSb->Controller                  = Controller;\r
@@ -202,7 +202,7 @@ Ip4CreateService (
   IpSb->MnpConfigData.EnableReceiveTimestamps   = FALSE;\r
   IpSb->MnpConfigData.DisableBackgroundPolling  = FALSE;\r
 \r
-  NetZeroMem (&IpSb->SnpMode, sizeof (EFI_SIMPLE_NETWORK_MODE));\r
+  ZeroMem (&IpSb->SnpMode, sizeof (EFI_SIMPLE_NETWORK_MODE));\r
 \r
   IpSb->Timer                       = NULL;\r
   IpSb->Ip4Config                   = NULL;\r
@@ -224,7 +224,7 @@ Ip4CreateService (
 \r
   Status = gBS->CreateEvent (\r
                   EVT_NOTIFY_SIGNAL | EVT_TIMER,\r
-                  NET_TPL_TIMER,\r
+                  TPL_CALLBACK,\r
                   Ip4TimerTicking,\r
                   IpSb,\r
                   &IpSb->Timer\r
@@ -283,7 +283,7 @@ Ip4CreateService (
     goto ON_ERROR;\r
   }\r
 \r
-  NetListInsertHead (&IpSb->Interfaces, &IpSb->DefaultInterface->Link);\r
+  InsertHeadList (&IpSb->Interfaces, &IpSb->DefaultInterface->Link);\r
 \r
   IpSb->MacString = NULL;\r
 \r
@@ -292,7 +292,7 @@ Ip4CreateService (
 \r
 ON_ERROR:\r
   Ip4CleanService (IpSb);\r
-  NetFreePool (IpSb);\r
+  gBS->FreePool (IpSb);\r
 \r
   return Status;\r
 }\r
@@ -301,14 +301,14 @@ ON_ERROR:
 /**\r
   Clean up a IP4 service binding instance. It will release all\r
   the resource allocated by the instance. The instance may be\r
-  partly initialized, or partly destoried. If a resource is\r
-  destoried, it is marked as that in case the destory failed and\r
+  partly initialized, or partly destroyed. If a resource is\r
+  destroyed, it is marked as that in case the destory failed and\r
   being called again later.\r
 \r
   @param  IpSb                   The IP4 serviceing binding instance to clean up\r
 \r
   @retval EFI_SUCCESS            The resource used by the instance are cleaned up\r
-  @retval Others                 Failed to clean up some of the resources.\r
+  @retval other                  Failed to clean up some of the resources.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -336,13 +336,13 @@ Ip4CleanService (
   Ip4CleanAssembleTable (&IpSb->Assemble);\r
 \r
   if (IpSb->MnpChildHandle != NULL) {\r
-    if (IpSb->Mnp) {\r
+    if (IpSb->Mnp != NULL) {\r
       gBS->CloseProtocol (\r
-            IpSb->MnpChildHandle,\r
-            &gEfiManagedNetworkProtocolGuid,\r
-            IpSb->Image,\r
-            IpSb->Controller\r
-            );\r
+             IpSb->MnpChildHandle,\r
+             &gEfiManagedNetworkProtocolGuid,\r
+             IpSb->Image,\r
+             IpSb->Controller\r
+             );\r
 \r
       IpSb->Mnp = NULL;\r
     }\r
@@ -385,16 +385,21 @@ Ip4CleanService (
 \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
@@ -477,23 +482,28 @@ UNINSTALL_PROTOCOL:
 \r
 FREE_SERVICE:\r
   Ip4CleanService (IpSb);\r
-  NetFreePool (IpSb);\r
+  gBS->FreePool (IpSb);\r
 \r
   return Status;\r
 }\r
 \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
@@ -555,9 +565,9 @@ Ip4DriverBindingStop (
 \r
     IpSb = IP4_SERVICE_FROM_PROTOCOL (ServiceBinding);\r
 \r
-    OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+    OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
-    if (IpSb->Ip4Config && (IpSb->State != IP4_SERVICE_DESTORY)) {\r
+    if (IpSb->Ip4Config != NULL && (IpSb->State != IP4_SERVICE_DESTORY)) {\r
 \r
       IpSb->Ip4Config->Stop (IpSb->Ip4Config);\r
 \r
@@ -569,7 +579,7 @@ Ip4DriverBindingStop (
                       );\r
 \r
       if (EFI_ERROR (Status)) {\r
-        NET_RESTORE_TPL (OldTpl);\r
+        gBS->RestoreTPL (OldTpl);\r
         return Status;\r
       }\r
 \r
@@ -585,7 +595,7 @@ Ip4DriverBindingStop (
       gBS->CloseEvent (IpSb->ReconfigEvent);\r
     }\r
 \r
-    NET_RESTORE_TPL (OldTpl);\r
+    gBS->RestoreTPL (OldTpl);\r
     return EFI_SUCCESS;\r
   }\r
 \r
@@ -625,15 +635,15 @@ Ip4DriverBindingStop (
 \r
   IpSb   = IP4_SERVICE_FROM_PROTOCOL (ServiceBinding);\r
 \r
-  OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
   if (IpSb->InDestory) {\r
-    NET_RESTORE_TPL (OldTpl);\r
+    gBS->RestoreTPL (OldTpl);\r
     return EFI_SUCCESS;\r
   }\r
 \r
   if (IsArp) {\r
-    while (!NetListIsEmpty (&IpSb->Children)) {\r
+    while (!IsListEmpty (&IpSb->Children)) {\r
       IpInstance = NET_LIST_HEAD (&IpSb->Children, IP4_PROTOCOL, Link);\r
 \r
       ServiceBinding->DestroyChild (ServiceBinding, IpInstance->Handle);\r
@@ -670,7 +680,7 @@ Ip4DriverBindingStop (
            ServiceBinding\r
            );\r
 \r
-    NetFreePool (IpSb);\r
+    gBS->FreePool (IpSb);\r
   } else if (NumberOfChildren == 0) {\r
     IpSb->InDestory = TRUE;\r
 \r
@@ -698,10 +708,10 @@ Ip4DriverBindingStop (
            ServiceBinding\r
            );\r
 \r
-    NetFreePool (IpSb);\r
+    gBS->FreePool (IpSb);\r
   } else {\r
 \r
-    while (!NetListIsEmpty (&IpSb->Children)) {\r
+    while (!IsListEmpty (&IpSb->Children)) {\r
       IpInstance = NET_LIST_HEAD (&IpSb->Children, IP4_PROTOCOL, Link);\r
 \r
       ServiceBinding->DestroyChild (ServiceBinding, IpInstance->Handle);\r
@@ -714,7 +724,7 @@ Ip4DriverBindingStop (
 \r
 ON_ERROR:\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
   return Status;\r
 }\r
 \r
@@ -722,23 +732,23 @@ ON_ERROR:
 /**\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
 EFIAPI\r
 Ip4ServiceBindingCreateChild (\r
   IN EFI_SERVICE_BINDING_PROTOCOL  *This,\r
-  IN EFI_HANDLE                    *ChildHandle\r
+  IN OUT EFI_HANDLE                *ChildHandle\r
   )\r
 {\r
   IP4_SERVICE               *IpSb;\r
@@ -752,7 +762,7 @@ Ip4ServiceBindingCreateChild (
   }\r
 \r
   IpSb       = IP4_SERVICE_FROM_PROTOCOL (This);\r
-  IpInstance = NetAllocatePool (sizeof (IP4_PROTOCOL));\r
+  IpInstance = AllocatePool (sizeof (IP4_PROTOCOL));\r
 \r
   if (IpInstance == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -801,12 +811,12 @@ Ip4ServiceBindingCreateChild (
   //\r
   // Insert it into the service binding instance.\r
   //\r
-  OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
-  NetListInsertTail (&IpSb->Children, &IpInstance->Link);\r
+  InsertTailList (&IpSb->Children, &IpInstance->Link);\r
   IpSb->NumChildren++;\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 \r
 ON_ERROR:\r
 \r
@@ -814,7 +824,7 @@ ON_ERROR:
 \r
     Ip4CleanProtocol (IpInstance);\r
 \r
-    NetFreePool (IpInstance);\r
+    gBS->FreePool (IpInstance);\r
   }\r
 \r
   return Status;\r
@@ -824,17 +834,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
@@ -879,7 +888,7 @@ Ip4ServiceBindingDestroyChild (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
   //\r
   // A child can be destoried more than once. For example,\r
@@ -888,7 +897,7 @@ Ip4ServiceBindingDestroyChild (
   // the IP child it opens.\r
   //\r
   if (IpInstance->State == IP4_STATE_DESTORY) {\r
-    NET_RESTORE_TPL (OldTpl);\r
+    gBS->RestoreTPL (OldTpl);\r
     return EFI_SUCCESS;\r
   }\r
 \r
@@ -944,17 +953,17 @@ Ip4ServiceBindingDestroyChild (
     goto ON_ERROR;\r
   }\r
 \r
-  NetListRemoveEntry (&IpInstance->Link);\r
+  RemoveEntryList (&IpInstance->Link);\r
   IpSb->NumChildren--;\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 \r
-  NetFreePool (IpInstance);\r
+  gBS->FreePool (IpInstance);\r
   return EFI_SUCCESS;\r
 \r
 ON_ERROR:\r
   IpInstance->State = State;\r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 \r
   return Status;\r
 }\r