BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2873 *** E:\Work\NWStack\EDK2Tickets\IPConfigFix\Mod\Ip4Config2Impl.c 2020-08-04 18:38:06.000000000 +05-30 --- E:\Work\NWStack\EDK2Tickets\IPConfigFix\Org\Ip4Config2Impl.c 2020-05-07 22:54:46.000000000 +05-30 *************** *** 1965,1978 **** IP4_CONFIG2_INSTANCE *TmpInstance; LIST_ENTRY *Entry; EFI_STATUS Status; UINTN Index; UINT16 IfIndex; IP4_CONFIG2_DATA_ITEM *DataItem; ! BOOLEAN IPConfigEnabled = FALSE; ! IP4_CONFIG2_IFR_NVDATA *IfrFromNvData = NULL; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); Instance->Signature = IP4_CONFIG2_INSTANCE_SIGNATURE; --- 1965,1977 ---- IP4_CONFIG2_INSTANCE *TmpInstance; LIST_ENTRY *Entry; EFI_STATUS Status; UINTN Index; UINT16 IfIndex; IP4_CONFIG2_DATA_ITEM *DataItem; ! IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); Instance->Signature = IP4_CONFIG2_INSTANCE_SIGNATURE; *************** *** 2038,2063 **** // // Try to read the config data from NV variable. // If not found, write initialized config data into NV variable // as a default config data. // ! Status = GetVariable2(IpSb->MacString, &gIp4Config2NvDataGuid, (VOID**)&IfrFromNvData, NULL); ! if(!EFI_ERROR(Status)){ ! if (IfrFromNvData->Configure == TRUE) { ! Status = Ip4Config2ReadConfigData (IpSb->MacString, Instance); ! if (Status == EFI_NOT_FOUND) { ! Status = Ip4Config2WriteConfigData (IpSb->MacString, Instance); ! } ! IPConfigEnabled = TRUE; ! } ! FreePool(IfrFromNvData); ! } ! if(!IPConfigEnabled){ ! Status = Ip4Config2WriteConfigData (IpSb->MacString, Instance); ! } if (EFI_ERROR (Status)) { return Status; } Instance->Ip4Config2.SetData = EfiIp4Config2SetData; --- 2037,2052 ---- // // Try to read the config data from NV variable. // If not found, write initialized config data into NV variable // as a default config data. // ! Status = Ip4Config2ReadConfigData (IpSb->MacString, Instance); ! if (Status == EFI_NOT_FOUND) { ! Status = Ip4Config2WriteConfigData (IpSb->MacString, Instance); ! } if (EFI_ERROR (Status)) { return Status; } Instance->Ip4Config2.SetData = EfiIp4Config2SetData;