summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/Ip6Dxe
diff options
context:
space:
mode:
authorJiaxin Wu <jiaxin.wu@intel.com>2016-04-13 11:07:07 +0800
committerJiaxin Wu <jiaxin.wu@intel.com>2016-04-14 14:55:09 +0800
commit7959b06748495da65d268de2c6643001e069ff80 (patch)
treec2c789a30b717a9ea4a2708bed9286b6a7f92c46 /NetworkPkg/Ip6Dxe
parent2b1c08acfceb94326c67b7d8f9fe5d8ab4cb7f61 (diff)
downloadedk2-7959b06748495da65d268de2c6643001e069ff80.tar.gz
edk2-7959b06748495da65d268de2c6643001e069ff80.tar.bz2
edk2-7959b06748495da65d268de2c6643001e069ff80.zip
NetworkPkg: Fix issue in Ip6Dxe SetData
EFI_NOT_READY should not be treated as an error status returned from SetData for Ip6ConfigDataTypeManualAddress since there is an asynchronous operation for DAD process. Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com> Reviewed-by: Sriram Subramanian <sriram-s@hpe.com> Tested-by: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
Diffstat (limited to 'NetworkPkg/Ip6Dxe')
-rw-r--r--NetworkPkg/Ip6Dxe/Ip6Driver.c72
1 files changed, 35 insertions, 37 deletions
diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c
index ba702904b5..16617c12b1 100644
--- a/NetworkPkg/Ip6Dxe/Ip6Driver.c
+++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c
@@ -578,7 +578,7 @@ Ip6DriverBindingStart (
DataItem->DataSize,
DataItem->Data.Ptr
);
- if (EFI_ERROR(Status)) {
+ if (EFI_ERROR(Status) && Status != EFI_NOT_READY) {
goto ON_ERROR;
}
}
@@ -599,46 +599,44 @@ Ip6DriverBindingStart (
}
}
- if (!EFI_ERROR (Status)) {
- //
- // ready to go: start the receiving and timer
- //
- Status = Ip6ReceiveFrame (Ip6AcceptFrame, IpSb);
- if (EFI_ERROR (Status)) {
- goto ON_ERROR;
- }
+ //
+ // ready to go: start the receiving and timer
+ //
+ Status = Ip6ReceiveFrame (Ip6AcceptFrame, IpSb);
+ if (EFI_ERROR (Status)) {
+ goto ON_ERROR;
+ }
- //
- // The timer expires every 100 (IP6_TIMER_INTERVAL_IN_MS) milliseconds.
- //
- Status = gBS->SetTimer (
- IpSb->FasterTimer,
- TimerPeriodic,
- TICKS_PER_MS * IP6_TIMER_INTERVAL_IN_MS
- );
- if (EFI_ERROR (Status)) {
- goto ON_ERROR;
- }
+ //
+ // The timer expires every 100 (IP6_TIMER_INTERVAL_IN_MS) milliseconds.
+ //
+ Status = gBS->SetTimer (
+ IpSb->FasterTimer,
+ TimerPeriodic,
+ TICKS_PER_MS * IP6_TIMER_INTERVAL_IN_MS
+ );
+ if (EFI_ERROR (Status)) {
+ goto ON_ERROR;
+ }
- //
- // The timer expires every 1000 (IP6_ONE_SECOND_IN_MS) milliseconds.
- //
- Status = gBS->SetTimer (
- IpSb->Timer,
- TimerPeriodic,
- TICKS_PER_MS * IP6_ONE_SECOND_IN_MS
- );
- if (EFI_ERROR (Status)) {
- goto ON_ERROR;
- }
+ //
+ // The timer expires every 1000 (IP6_ONE_SECOND_IN_MS) milliseconds.
+ //
+ Status = gBS->SetTimer (
+ IpSb->Timer,
+ TimerPeriodic,
+ TICKS_PER_MS * IP6_ONE_SECOND_IN_MS
+ );
+ if (EFI_ERROR (Status)) {
+ goto ON_ERROR;
+ }
- //
- // Initialize the IP6 ID
- //
- mIp6Id = NET_RANDOM (NetRandomInitSeed ());
+ //
+ // Initialize the IP6 ID
+ //
+ mIp6Id = NET_RANDOM (NetRandomInitSeed ());
- return EFI_SUCCESS;
- }
+ return EFI_SUCCESS;
ON_ERROR:
Ip6CleanService (IpSb);