diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c index 2da4a51349..fcb2bdd562 100644 --- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c +++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c @@ -84,22 +84,6 @@ Ip4Config2DestroyDhcp4 ( return Status; } -/** - Start the DHCP configuration for this IP service instance. - It will locates the EFI_IP4_CONFIG2_PROTOCOL, then start the - DHCP configuration. - - @param[in] Instance The IP4 config2 instance to configure. - - @retval EFI_SUCCESS The auto configuration is successfull started. - @retval Others Failed to start auto configuration. - -**/ -EFI_STATUS -Ip4StartAutoConfig ( - IN IP4_CONFIG2_INSTANCE *Instance - ); - /** Update the current policy to NewPolicy. During the transition period, the default router list @@ -992,10 +976,7 @@ Ip4Config2SetPolicy ( } if (NewPolicy == Instance->Policy) { - if (NewPolicy != Ip4Config2PolicyDhcp || Instance->DhcpSuccess) { - return EFI_ABORTED; - } - + return EFI_ABORTED; } else { if (NewPolicy == Ip4Config2PolicyDhcp) { // diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.h b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.h index 26e16a2617..e74b9ae407 100644 --- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.h +++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.h @@ -210,6 +210,22 @@ typedef struct { } IP4_CONFIG2_DHCP4_OPTION; #pragma pack() +/** + Start the DHCP configuration for this IP service instance. + It will locates the EFI_IP4_CONFIG2_PROTOCOL, then start the + DHCP configuration. + + @param[in] Instance The IP4 config2 instance to configure. + + @retval EFI_SUCCESS The auto configuration is successfull started. + @retval Others Failed to start auto configuration. + +**/ +EFI_STATUS +Ip4StartAutoConfig ( + IN IP4_CONFIG2_INSTANCE *Instance + ); + /** Initialize an IP4_CONFIG2_INSTANCE. diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Impl.c b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Impl.c index b0f597fc97..2fb4f4c1ca 100644 --- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Impl.c +++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Impl.c @@ -678,8 +678,11 @@ Ip4ConfigProtocol ( // been started, start it. // if (IpSb->State == IP4_SERVICE_UNSTARTED) { - Status = EFI_NO_MAPPING; - goto ON_ERROR; + Status = Ip4StartAutoConfig (&IpSb->Ip4Config2Instance); + + if (EFI_ERROR (Status)) { + goto ON_ERROR; + } } IpIf = IpSb->DefaultInterface;