summaryrefslogtreecommitdiffstats
path: root/NetworkPkg
diff options
context:
space:
mode:
Diffstat (limited to 'NetworkPkg')
-rw-r--r--NetworkPkg/Ip6Dxe/Ip6Driver.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c
index 4c607125a6..7a96315ccf 100644
--- a/NetworkPkg/Ip6Dxe/Ip6Driver.c
+++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c
@@ -587,8 +587,17 @@ Ip6DriverBindingStart (
DataItem->DataSize,
DataItem->Data.Ptr
);
- if (EFI_ERROR(Status) && Status != EFI_NOT_READY) {
- goto UNINSTALL_PROTOCOL;
+ if (Status == EFI_INVALID_PARAMETER || Status == EFI_BAD_BUFFER_SIZE) {
+ //
+ // Clean the invalid ManualAddress configuration.
+ //
+ Status = Ip6Cfg->SetData (
+ Ip6Cfg,
+ Ip6ConfigDataTypeManualAddress,
+ 0,
+ NULL
+ );
+ DEBUG ((EFI_D_WARN, "Ip6DriverBindingStart: Clean the invalid ManualAddress configuration.\n"));
}
}
@@ -603,8 +612,17 @@ Ip6DriverBindingStart (
DataItem->DataSize,
DataItem->Data.Ptr
);
- if (EFI_ERROR(Status)) {
- goto UNINSTALL_PROTOCOL;
+ if (Status == EFI_INVALID_PARAMETER || Status == EFI_BAD_BUFFER_SIZE) {
+ //
+ // Clean the invalid Gateway configuration.
+ //
+ Status = Ip6Cfg->SetData (
+ Ip6Cfg,
+ Ip6ConfigDataTypeGateway,
+ 0,
+ NULL
+ );
+ DEBUG ((EFI_D_WARN, "Ip6DriverBindingStart: Clean the invalid Gateway configuration.\n"));
}
}