]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/HttpBootDxe/HttpBootConfig.c
NetworkPkg: Fix the driver model issue in HTTP Boot driver.
[mirror_edk2.git] / NetworkPkg / HttpBootDxe / HttpBootConfig.c
index 597192349d6b0c28b89baaaac29727c5c527bc9a..0c1ff43d5c84a856211fbec5cda329a94a450f91 100644 (file)
@@ -553,7 +553,6 @@ HttpBootConfigFormInit (
   EFI_STATUS                        Status;\r
   HTTP_BOOT_FORM_CALLBACK_INFO      *CallbackInfo;\r
   VENDOR_DEVICE_PATH                VendorDeviceNode;\r
-  EFI_SERVICE_BINDING_PROTOCOL      *HttpSb;\r
   CHAR16                            *MacString;\r
   CHAR16                            *OldMenuString;\r
   CHAR16                            MenuString[128];\r
@@ -600,20 +599,6 @@ HttpBootConfigFormInit (
                   &CallbackInfo->ConfigAccess,\r
                   NULL\r
                   );\r
-  if (!EFI_ERROR (Status)) {\r
-    //\r
-    // Open the Parent Handle for the child\r
-    //\r
-    Status = gBS->OpenProtocol (\r
-                    Private->Controller,\r
-                    &gEfiHttpServiceBindingProtocolGuid,\r
-                    (VOID **) &HttpSb,\r
-                    Private->Image,\r
-                    CallbackInfo->ChildHandle,\r
-                    EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
-                    );\r
-  }\r
-\r
   if (EFI_ERROR (Status)) {\r
     goto Error;\r
   }\r
@@ -636,7 +621,7 @@ HttpBootConfigFormInit (
   //\r
   // Append MAC string in the menu help string\r
   //\r
-  Status = NetLibGetMacString (Private->Controller, Private->Image, &MacString);\r
+  Status = NetLibGetMacString (Private->Controller, NULL, &MacString);\r
   if (!EFI_ERROR (Status)) {\r
     OldMenuString = HiiGetString (\r
                       CallbackInfo->RegisteredHandle, \r
@@ -654,6 +639,7 @@ HttpBootConfigFormInit (
     FreePool (MacString);\r
     FreePool (OldMenuString);\r
 \r
+    CallbackInfo->Initilized = TRUE;\r
     return EFI_SUCCESS;\r
   }\r
   \r
@@ -666,6 +652,7 @@ Error:
 /**\r
   Unload the configuration form, this includes: delete all the configuration\r
   entries, uninstall the form callback protocol, and free the resources used.\r
+  The form will only be unload completely when both IP4 and IP6 stack are stopped.\r
 \r
   @param[in]  Private             Pointer to the driver private data.\r
 \r
@@ -680,18 +667,15 @@ HttpBootConfigFormUnload (
 {\r
   HTTP_BOOT_FORM_CALLBACK_INFO      *CallbackInfo;\r
 \r
-  CallbackInfo = &Private->CallbackInfo;\r
-  if (CallbackInfo->ChildHandle != NULL) {\r
+  if (Private->Ip4Nic != NULL || Private->Ip6Nic != NULL) {\r
     //\r
-    // Close the child handle\r
+    // Only unload the configuration form when both IP4 and IP6 stack are stopped.\r
     //\r
-    gBS->CloseProtocol (\r
-           Private->Controller,\r
-           &gEfiHttpServiceBindingProtocolGuid,\r
-           Private->Image,\r
-           CallbackInfo->ChildHandle\r
-           );\r
-    \r
+    return EFI_SUCCESS;\r
+  }\r
+\r
+  CallbackInfo = &Private->CallbackInfo;\r
+  if (CallbackInfo->ChildHandle != NULL) {\r
     //\r
     // Uninstall EFI_HII_CONFIG_ACCESS_PROTOCOL\r
     //\r