]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c
Per UEFI spec, on CallBack action EFI_BROWSER_ACTION_CHANGING, the return value of...
[mirror_edk2.git] / MdeModulePkg / Universal / Network / IScsiDxe / IScsiConfig.c
index 81d9583bcd5a7f865174f7c3b1c05f22bad3a43e..4fdb5adf2ca129048eb75256cea4da42420d284e 100644 (file)
@@ -676,20 +676,40 @@ IScsiFormCallback (
   EFI_STATUS                Status;\r
   EFI_INPUT_KEY             Key;\r
 \r
+  if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  Private   = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
+  //\r
+  // Retrive uncommitted data from Browser\r
+  //\r
+  IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA));\r
+  ASSERT (IfrNvData != NULL);\r
+  if (!HiiGetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) {\r
+    FreePool (IfrNvData);\r
+    return EFI_NOT_FOUND;\r
+  }\r
+  Status = EFI_SUCCESS;\r
+\r
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
-    Private   = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
-    //\r
-    // Retrive uncommitted data from Browser\r
-    //\r
-    IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA));\r
-    ASSERT (IfrNvData != NULL);\r
-    if (!HiiGetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) {\r
-      FreePool (IfrNvData);\r
-      return EFI_NOT_FOUND;\r
-    }\r
-    Status = EFI_SUCCESS;\r
+    if ((QuestionId >= KEY_DEVICE_ENTRY_BASE) && (QuestionId < (mNumberOfIScsiDevices + KEY_DEVICE_ENTRY_BASE))) {\r
+      //\r
+      // In case goto the device configuration form, update the device form title.\r
+      //\r
+      ConfigFormEntry = IScsiGetConfigFormEntryByIndex ((UINT32) (QuestionId - KEY_DEVICE_ENTRY_BASE));\r
+      ASSERT (ConfigFormEntry != NULL);\r
+\r
+      UnicodeSPrint (PortString, (UINTN) 128, L"Port %s", ConfigFormEntry->MacString);\r
+      DeviceFormTitleToken = (EFI_STRING_ID) STR_ISCSI_DEVICE_FORM_TITLE;\r
+      HiiSetString (Private->RegisteredHandle, DeviceFormTitleToken, PortString, NULL);\r
 \r
-    switch (QuestionId) {\r
+      IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);\r
+\r
+      Private->Current = ConfigFormEntry;\r
+    }\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    switch (QuestionId) { \r
     case KEY_INITIATOR_NAME:\r
       IScsiUnicodeStrToAsciiStr (IfrNvData->InitiatorName, IScsiName);\r
       BufferSize  = AsciiStrSize (IScsiName);\r
@@ -889,41 +909,20 @@ IScsiFormCallback (
       break;\r
 \r
     default:\r
-      if ((QuestionId >= KEY_DEVICE_ENTRY_BASE) && (QuestionId < (mNumberOfIScsiDevices + KEY_DEVICE_ENTRY_BASE))) {\r
-        //\r
-        // In case goto the device configuration form, update the device form title.\r
-        //\r
-        ConfigFormEntry = IScsiGetConfigFormEntryByIndex ((UINT32) (QuestionId - KEY_DEVICE_ENTRY_BASE));\r
-        ASSERT (ConfigFormEntry != NULL);\r
-\r
-        UnicodeSPrint (PortString, (UINTN) 128, L"Port %s", ConfigFormEntry->MacString);\r
-        DeviceFormTitleToken = (EFI_STRING_ID) STR_ISCSI_DEVICE_FORM_TITLE;\r
-        HiiSetString (Private->RegisteredHandle, DeviceFormTitleToken, PortString, NULL);\r
-\r
-        IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);\r
-\r
-        Private->Current = ConfigFormEntry;\r
-      }\r
-\r
       break;\r
     }\r
-\r
-    if (!EFI_ERROR (Status)) {\r
-      //\r
-      // Pass changed uncommitted data back to Form Browser\r
-      //\r
-      HiiSetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL);\r
-    }\r
-    \r
-    FreePool (IfrNvData);\r
-\r
-    return Status;\r
   }\r
 \r
-  //\r
-  // All other action return unsupported.\r
-  //\r
-  return EFI_UNSUPPORTED;\r
+  if (!EFI_ERROR (Status)) {\r
+    //\r
+    // Pass changed uncommitted data back to Form Browser\r
+    //\r
+    HiiSetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL);\r
+  }\r
+  \r
+  FreePool (IfrNvData);\r
+  \r
+  return Status;\r
 }\r
 \r
 /**\r