]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/ArpDxe/ArpDriver.c
Use Mde library and definition instead of some native definitions in NetLib, to simpl...
[mirror_edk2.git] / MdeModulePkg / Universal / Network / ArpDxe / ArpDriver.c
index af2e082576e1918748a8d0600cfa84a73874b686..c33ce4d98a712b4b171b8f1d8abe44ef3a6db9eb 100644 (file)
@@ -1,6 +1,6 @@
 /** @file\r
 \r
-Copyright (c) 2006 - 2007, Intel Corporation                                                         \r
+Copyright (c) 2006 - 2007, Intel Corporation\r
 All rights reserved. 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
@@ -142,7 +142,7 @@ ArpCreateService (
   //\r
   Status = gBS->CreateEvent (\r
                   EVT_NOTIFY_SIGNAL,\r
-                  NET_TPL_EVENT,\r
+                  TPL_NOTIFY,\r
                   ArpOnFrameRcvd,\r
                   ArpService,\r
                   &ArpService->RxToken.Event\r
@@ -156,7 +156,7 @@ ArpCreateService (
   //\r
   Status = gBS->CreateEvent (\r
                   EVT_NOTIFY_SIGNAL | EVT_TIMER,\r
-                  NET_TPL_TIMER,\r
+                  TPL_CALLBACK,\r
                   ArpTimerHandler,\r
                   ArpService,\r
                   &ArpService->PeriodicTimer\r
@@ -180,10 +180,10 @@ ArpCreateService (
   //\r
   // Init the lists.\r
   //\r
-  NetListInit (&ArpService->ChildrenList);\r
-  NetListInit (&ArpService->PendingRequestTable);\r
-  NetListInit (&ArpService->DeniedCacheTable);\r
-  NetListInit (&ArpService->ResolvedCacheTable);\r
+  InitializeListHead (&ArpService->ChildrenList);\r
+  InitializeListHead (&ArpService->PendingRequestTable);\r
+  InitializeListHead (&ArpService->DeniedCacheTable);\r
+  InitializeListHead (&ArpService->ResolvedCacheTable);\r
 \r
 ERROR_EXIT:\r
 \r
@@ -332,7 +332,7 @@ ArpDriverBindingStart (
   //\r
   // Allocate a zero pool for ArpService.\r
   //\r
-  ArpService = NetAllocateZeroPool (sizeof(ARP_SERVICE_DATA));\r
+  ArpService = AllocateZeroPool (sizeof(ARP_SERVICE_DATA));\r
   if (ArpService == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
@@ -374,7 +374,7 @@ ERROR:
   // On error, clean the arp service context data, and free the memory allocated.\r
   //\r
   ArpCleanService (ArpService);\r
-  NetFreePool (ArpService);\r
+  gBS->FreePool (ArpService);\r
 \r
   return Status;\r
 }\r
@@ -413,7 +413,7 @@ ArpDriverBindingStop (
   //\r
   NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiManagedNetworkProtocolGuid);\r
   if (NicHandle == NULL) {\r
-    return EFI_SUCCESS;\r
+    return EFI_DEVICE_ERROR;\r
   }\r
 \r
   //\r
@@ -428,51 +428,44 @@ ArpDriverBindingStop (
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    ARP_DEBUG_ERROR (("ArpDriverBindingStop: Open ArpSb failed, %r.\n", Status));\r
-    return Status;\r
+    DEBUG ((EFI_D_ERROR, "ArpDriverBindingStop: Open ArpSb failed, %r.\n", Status));\r
+    return EFI_DEVICE_ERROR;\r
   }\r
 \r
   ArpService = ARP_SERVICE_DATA_FROM_THIS (ServiceBinding);\r
 \r
-  while (!NetListIsEmpty (&ArpService->ChildrenList)) {\r
+  if (NumberOfChildren == 0) {\r
     //\r
-    // Iterate all the instances.\r
+    // Uninstall the ARP ServiceBinding protocol.\r
     //\r
-    Instance = NET_LIST_HEAD (&ArpService->ChildrenList, ARP_INSTANCE_DATA, List);\r
+    gBS->UninstallMultipleProtocolInterfaces (\r
+           NicHandle,\r
+           &gEfiArpServiceBindingProtocolGuid,\r
+           &ArpService->ServiceBinding,\r
+           NULL\r
+           );\r
 \r
     //\r
-    // Destroy this arp child.\r
+    // Clean the arp servicebinding context data and free the memory allocated.\r
     //\r
-    ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle);\r
-  }\r
+    ArpCleanService (ArpService);\r
 \r
-  ASSERT (NetListIsEmpty (&ArpService->PendingRequestTable));\r
-  ASSERT (NetListIsEmpty (&ArpService->DeniedCacheTable));\r
-  ASSERT (NetListIsEmpty (&ArpService->ResolvedCacheTable));\r
+    gBS->FreePool (ArpService);\r
+  } else {\r
 \r
-  //\r
-  // Uninstall the ARP ServiceBinding protocol.\r
-  //\r
-  Status = gBS->UninstallMultipleProtocolInterfaces (\r
-                  NicHandle,\r
-                  &gEfiArpServiceBindingProtocolGuid,\r
-                  &ArpService->ServiceBinding,\r
-                  NULL\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    ARP_DEBUG_ERROR (("ArpDriverBindingStop: Failed to uninstall ArpSb, %r.\n", Status));\r
-    return Status;\r
-  }\r
+    while (!IsListEmpty (&ArpService->ChildrenList)) {\r
+      Instance = NET_LIST_HEAD (&ArpService->ChildrenList, ARP_INSTANCE_DATA, List);\r
 \r
-  //\r
-  // Clean the arp servicebinding context data and free the memory allocated.\r
-  //\r
-  ArpCleanService (ArpService);\r
-  NetFreePool (ArpService);\r
+      ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle);\r
+    }\r
 \r
-  return Status;\r
-}\r
+    ASSERT (IsListEmpty (&ArpService->PendingRequestTable));\r
+    ASSERT (IsListEmpty (&ArpService->DeniedCacheTable));\r
+    ASSERT (IsListEmpty (&ArpService->ResolvedCacheTable));\r
+  }\r
 \r
+  return EFI_SUCCESS;\r
+}\r
 \r
 /**\r
   Creates a child handle with a set of I/O services.\r
@@ -512,9 +505,9 @@ ArpServiceBindingCreateChild (
   //\r
   // Allocate memory for the instance context data.\r
   //\r
-  Instance = NetAllocateZeroPool (sizeof(ARP_INSTANCE_DATA));\r
+  Instance = AllocateZeroPool (sizeof(ARP_INSTANCE_DATA));\r
   if (Instance == NULL) {\r
-    ARP_DEBUG_ERROR (("ArpSBCreateChild: Failed to allocate memory for Instance.\n"));\r
+    DEBUG ((EFI_D_ERROR, "ArpSBCreateChild: Failed to allocate memory for Instance.\n"));\r
 \r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
@@ -534,9 +527,9 @@ ArpServiceBindingCreateChild (
                   NULL\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    ARP_DEBUG_ERROR (("ArpSBCreateChild: faild to install ARP protocol, %r.\n", Status));\r
+    DEBUG ((EFI_D_ERROR, "ArpSBCreateChild: faild to install ARP protocol, %r.\n", Status));\r
 \r
-    NetFreePool (Instance);\r
+    gBS->FreePool (Instance);\r
     return Status;\r
   }\r
 \r
@@ -560,15 +553,15 @@ ArpServiceBindingCreateChild (
     goto ERROR;\r
   }\r
 \r
-  OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
   //\r
   // Insert the instance into children list managed by the arp service context data.\r
   //\r
-  NetListInsertTail (&ArpService->ChildrenList, &Instance->List);\r
+  InsertTailList (&ArpService->ChildrenList, &Instance->List);\r
   ArpService->ChildrenNumber++;\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 \r
 ERROR:\r
 \r
@@ -591,7 +584,7 @@ ERROR:
     //\r
     // Free the allocated memory.\r
     //\r
-    NetFreePool (Instance);\r
+    gBS->FreePool (Instance);\r
   }\r
 \r
   return Status;\r
@@ -679,14 +672,14 @@ ArpServiceBindingDestroyChild (
                   NULL\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    ARP_DEBUG_ERROR (("ArpSBDestroyChild: Failed to uninstall the arp protocol, %r.\n",\r
+    DEBUG ((EFI_D_ERROR, "ArpSBDestroyChild: Failed to uninstall the arp protocol, %r.\n",\r
       Status));\r
 \r
     Instance->Destroyed = FALSE;\r
     return Status;\r
   }\r
 \r
-  OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
   if (Instance->Configured) {\r
     //\r
@@ -703,12 +696,12 @@ ArpServiceBindingDestroyChild (
   //\r
   // Remove this instance from the ChildrenList.\r
   //\r
-  NetListRemoveEntry (&Instance->List);\r
+  RemoveEntryList (&Instance->List);\r
   ArpService->ChildrenNumber--;\r
 \r
-  NET_RESTORE_TPL (OldTpl);\r
+  gBS->RestoreTPL (OldTpl);\r
 \r
-  NetFreePool (Instance);\r
+  gBS->FreePool (Instance);\r
 \r
   return Status;\r
 }\r