]> git.proxmox.com Git - mirror_edk2.git/commitdiff
NetworkPkg: Fix issue in Ip6Dxe SetData
authorJiaxin Wu <jiaxin.wu@intel.com>
Wed, 13 Apr 2016 03:07:07 +0000 (11:07 +0800)
committerJiaxin Wu <jiaxin.wu@intel.com>
Thu, 14 Apr 2016 06:55:09 +0000 (14:55 +0800)
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>
NetworkPkg/Ip6Dxe/Ip6Driver.c

index ba702904b5f5c76ad3700e4c211d8ab484d5b416..16617c12b174163bfc7279e082c44582b07e1493 100644 (file)
@@ -578,7 +578,7 @@ Ip6DriverBindingStart (
                        DataItem->DataSize,\r
                        DataItem->Data.Ptr\r
                        );\r
-    if (EFI_ERROR(Status)) {\r
+    if (EFI_ERROR(Status) && Status != EFI_NOT_READY) {\r
       goto ON_ERROR;\r
     }\r
   }\r
@@ -599,46 +599,44 @@ Ip6DriverBindingStart (
     }\r
   }\r
 \r
-  if (!EFI_ERROR (Status)) {\r
-    //\r
-    // ready to go: start the receiving and timer\r
-    //\r
-    Status = Ip6ReceiveFrame (Ip6AcceptFrame, IpSb);\r
-    if (EFI_ERROR (Status)) {\r
-      goto ON_ERROR;\r
-    }\r
+  //\r
+  // ready to go: start the receiving and timer\r
+  //\r
+  Status = Ip6ReceiveFrame (Ip6AcceptFrame, IpSb);\r
+  if (EFI_ERROR (Status)) {\r
+    goto ON_ERROR;\r
+  }\r
 \r
-    //\r
-    // The timer expires every 100 (IP6_TIMER_INTERVAL_IN_MS) milliseconds.\r
-    //\r
-    Status = gBS->SetTimer (\r
-                    IpSb->FasterTimer,\r
-                    TimerPeriodic,\r
-                    TICKS_PER_MS * IP6_TIMER_INTERVAL_IN_MS\r
-                    );\r
-    if (EFI_ERROR (Status)) {\r
-      goto ON_ERROR;\r
-    }\r
+  //\r
+  // The timer expires every 100 (IP6_TIMER_INTERVAL_IN_MS) milliseconds.\r
+  //\r
+  Status = gBS->SetTimer (\r
+                  IpSb->FasterTimer,\r
+                  TimerPeriodic,\r
+                  TICKS_PER_MS * IP6_TIMER_INTERVAL_IN_MS\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    goto ON_ERROR;\r
+  }\r
 \r
-    //\r
-    // The timer expires every 1000 (IP6_ONE_SECOND_IN_MS) milliseconds.\r
-    //\r
-    Status = gBS->SetTimer (\r
-                    IpSb->Timer,\r
-                    TimerPeriodic,\r
-                    TICKS_PER_MS * IP6_ONE_SECOND_IN_MS\r
-                    );\r
-    if (EFI_ERROR (Status)) {\r
-      goto ON_ERROR;\r
-    }    \r
+  //\r
+  // The timer expires every 1000 (IP6_ONE_SECOND_IN_MS) milliseconds.\r
+  //\r
+  Status = gBS->SetTimer (\r
+                  IpSb->Timer,\r
+                  TimerPeriodic,\r
+                  TICKS_PER_MS * IP6_ONE_SECOND_IN_MS\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    goto ON_ERROR;\r
+  }    \r
 \r
-    //\r
-    // Initialize the IP6 ID\r
-    //\r
-    mIp6Id = NET_RANDOM (NetRandomInitSeed ());\r
+  //\r
+  // Initialize the IP6 ID\r
+  //\r
+  mIp6Id = NET_RANDOM (NetRandomInitSeed ());\r
 \r
-    return EFI_SUCCESS;\r
-  }\r
+  return EFI_SUCCESS;\r
 \r
 ON_ERROR:\r
   Ip6CleanService (IpSb);\r