diff options
author | Jiaxin Wu <jiaxin.wu@intel.com> | 2016-04-13 11:07:07 +0800 |
---|---|---|
committer | Jiaxin Wu <jiaxin.wu@intel.com> | 2016-04-14 14:55:09 +0800 |
commit | 7959b06748495da65d268de2c6643001e069ff80 (patch) | |
tree | c2c789a30b717a9ea4a2708bed9286b6a7f92c46 /NetworkPkg | |
parent | 2b1c08acfceb94326c67b7d8f9fe5d8ab4cb7f61 (diff) | |
download | edk2-platforms-7959b06748495da65d268de2c6643001e069ff80.tar.xz |
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')
-rw-r--r-- | NetworkPkg/Ip6Dxe/Ip6Driver.c | 72 |
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);
|