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
&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
//\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
FreePool (MacString);\r
FreePool (OldMenuString);\r
\r
+ CallbackInfo->Initilized = TRUE;\r
return EFI_SUCCESS;\r
}\r
\r
/**\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
{\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