]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Refine some call back function to return EFI_UNSUPPORTED for all unsupported call...
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 20 May 2011 02:48:59 +0000 (02:48 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 20 May 2011 02:48:59 +0000 (02:48 +0000)
Signed-off-by: ydong10
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11686 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c
MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c
MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c
MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c

index fa8f202b6a2ac81f93f98fe8f9e2a4afc73b460b..9f795b9d8461e50b2a9ad77fc055f5e566ab0578 100644 (file)
@@ -680,255 +680,254 @@ IScsiFormCallback (
   EFI_STATUS                Status;\r
   EFI_INPUT_KEY             Key;\r
 \r
-  if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) {\r
+  if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+    Private   = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
     //\r
-    // Do nothing for UEFI OPEN/CLOSE Action\r
+    // Retrive uncommitted data from Browser\r
     //\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  Private   = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
-\r
-  //\r
-  // Retrive uncommitted data from Browser\r
-  //\r
-  IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA));\r
-  ASSERT (IfrNvData != NULL);\r
-  if (!HiiGetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) {\r
-    FreePool (IfrNvData);\r
-    return EFI_NOT_FOUND;\r
-  }\r
-  \r
-  Status = EFI_SUCCESS;\r
+    IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA));\r
+    ASSERT (IfrNvData != NULL);\r
+    if (!HiiGetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) {\r
+      FreePool (IfrNvData);\r
+      return EFI_NOT_FOUND;\r
+    }\r
+    Status = EFI_SUCCESS;\r
 \r
-  switch (QuestionId) {\r
-  case KEY_INITIATOR_NAME:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->InitiatorName, IScsiName);\r
-    BufferSize  = AsciiStrSize (IScsiName);\r
+    switch (QuestionId) {\r
+    case KEY_INITIATOR_NAME:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->InitiatorName, IScsiName);\r
+      BufferSize  = AsciiStrSize (IScsiName);\r
 \r
-    Status      = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, IScsiName);\r
-    if (EFI_ERROR (Status)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL);\r
-    }\r
+      Status      = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, IScsiName);\r
+      if (EFI_ERROR (Status)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL);\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_LOCAL_IP:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->LocalIp, Ip4String);\r
-    Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4);\r
-    if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
-      Status = EFI_INVALID_PARAMETER;\r
-    } else {\r
-      CopyMem (&Private->Current->SessionConfigData.LocalIp, &HostIp.v4, sizeof (HostIp.v4));\r
-    }\r
+    case KEY_LOCAL_IP:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->LocalIp, Ip4String);\r
+      Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4);\r
+      if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
+        Status = EFI_INVALID_PARAMETER;\r
+      } else {\r
+        CopyMem (&Private->Current->SessionConfigData.LocalIp, &HostIp.v4, sizeof (HostIp.v4));\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_SUBNET_MASK:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->SubnetMask, Ip4String);\r
-    Status = IScsiAsciiStrToIp (Ip4String, &SubnetMask.v4);\r
-    if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (IScsiGetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL);\r
-      Status = EFI_INVALID_PARAMETER;\r
-    } else {\r
-      CopyMem (&Private->Current->SessionConfigData.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4));\r
-    }\r
+    case KEY_SUBNET_MASK:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->SubnetMask, Ip4String);\r
+      Status = IScsiAsciiStrToIp (Ip4String, &SubnetMask.v4);\r
+      if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (IScsiGetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL);\r
+        Status = EFI_INVALID_PARAMETER;\r
+      } else {\r
+        CopyMem (&Private->Current->SessionConfigData.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4));\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_GATE_WAY:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->Gateway, Ip4String);\r
-    Status = IScsiAsciiStrToIp (Ip4String, &Gateway.v4);\r
-    if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL);\r
-      Status = EFI_INVALID_PARAMETER;\r
-    } else {\r
-      CopyMem (&Private->Current->SessionConfigData.Gateway, &Gateway.v4, sizeof (Gateway.v4));\r
-    }\r
+    case KEY_GATE_WAY:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->Gateway, Ip4String);\r
+      Status = IScsiAsciiStrToIp (Ip4String, &Gateway.v4);\r
+      if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL);\r
+        Status = EFI_INVALID_PARAMETER;\r
+      } else {\r
+        CopyMem (&Private->Current->SessionConfigData.Gateway, &Gateway.v4, sizeof (Gateway.v4));\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_TARGET_IP:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->TargetIp, Ip4String);\r
-    Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4);\r
-    if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
-      Status = EFI_INVALID_PARAMETER;\r
-    } else {\r
-      CopyMem (&Private->Current->SessionConfigData.TargetIp, &HostIp.v4, sizeof (HostIp.v4));\r
-    }\r
+    case KEY_TARGET_IP:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->TargetIp, Ip4String);\r
+      Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4);\r
+      if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
+        Status = EFI_INVALID_PARAMETER;\r
+      } else {\r
+        CopyMem (&Private->Current->SessionConfigData.TargetIp, &HostIp.v4, sizeof (HostIp.v4));\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_TARGET_NAME:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->TargetName, IScsiName);\r
-    Status = IScsiNormalizeName (IScsiName, AsciiStrLen (IScsiName));\r
-    if (EFI_ERROR (Status)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL);\r
-    } else {\r
-      AsciiStrCpy (Private->Current->SessionConfigData.TargetName, IScsiName);\r
-    }\r
+    case KEY_TARGET_NAME:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->TargetName, IScsiName);\r
+      Status = IScsiNormalizeName (IScsiName, AsciiStrLen (IScsiName));\r
+      if (EFI_ERROR (Status)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL);\r
+      } else {\r
+        AsciiStrCpy (Private->Current->SessionConfigData.TargetName, IScsiName);\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_DHCP_ENABLE:\r
-    if (IfrNvData->InitiatorInfoFromDhcp == 0) {\r
-      IfrNvData->TargetInfoFromDhcp = 0;\r
-    }\r
+    case KEY_DHCP_ENABLE:\r
+      if (IfrNvData->InitiatorInfoFromDhcp == 0) {\r
+        IfrNvData->TargetInfoFromDhcp = 0;\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_BOOT_LUN:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->BootLun, LunString);\r
-    Status = IScsiAsciiStrToLun (LunString, (UINT8 *) &Lun);\r
-    if (EFI_ERROR (Status)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid LUN string!", NULL);\r
-    } else {\r
-      CopyMem (Private->Current->SessionConfigData.BootLun, &Lun, sizeof (Lun));\r
-    }\r
+    case KEY_BOOT_LUN:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->BootLun, LunString);\r
+      Status = IScsiAsciiStrToLun (LunString, (UINT8 *) &Lun);\r
+      if (EFI_ERROR (Status)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid LUN string!", NULL);\r
+      } else {\r
+        CopyMem (Private->Current->SessionConfigData.BootLun, &Lun, sizeof (Lun));\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_CHAP_NAME:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPName, Private->Current->AuthConfigData.CHAPName);\r
-    break;\r
+    case KEY_CHAP_NAME:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPName, Private->Current->AuthConfigData.CHAPName);\r
+      break;\r
 \r
-  case KEY_CHAP_SECRET:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPSecret, Private->Current->AuthConfigData.CHAPSecret);\r
-    break;\r
+    case KEY_CHAP_SECRET:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPSecret, Private->Current->AuthConfigData.CHAPSecret);\r
+      break;\r
 \r
-  case KEY_REVERSE_CHAP_NAME:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPName, Private->Current->AuthConfigData.ReverseCHAPName);\r
-    break;\r
+    case KEY_REVERSE_CHAP_NAME:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPName, Private->Current->AuthConfigData.ReverseCHAPName);\r
+      break;\r
 \r
-  case KEY_REVERSE_CHAP_SECRET:\r
-    IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPSecret, Private->Current->AuthConfigData.ReverseCHAPSecret);\r
-    break;\r
+    case KEY_REVERSE_CHAP_SECRET:\r
+      IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPSecret, Private->Current->AuthConfigData.ReverseCHAPSecret);\r
+      break;\r
 \r
-  case KEY_CONFIG_ISID:\r
-    IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);\r
-    IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);\r
+    case KEY_CONFIG_ISID:\r
+      IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);\r
+      IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);\r
 \r
-    break;\r
+      break;\r
 \r
-  case KEY_SAVE_CHANGES:\r
-    //\r
-    // First, update those fields which don't have INTERACTIVE set.\r
-    //\r
-    Private->Current->SessionConfigData.Enabled               = IfrNvData->Enabled;\r
-    Private->Current->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->InitiatorInfoFromDhcp;\r
-    Private->Current->SessionConfigData.TargetPort            = IfrNvData->TargetPort;\r
-    if (Private->Current->SessionConfigData.TargetPort == 0) {\r
-      Private->Current->SessionConfigData.TargetPort = ISCSI_WELL_KNOWN_PORT;\r
-    }\r
+    case KEY_SAVE_CHANGES:\r
+      //\r
+      // First, update those fields which don't have INTERACTIVE set.\r
+      //\r
+      Private->Current->SessionConfigData.Enabled               = IfrNvData->Enabled;\r
+      Private->Current->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->InitiatorInfoFromDhcp;\r
+      Private->Current->SessionConfigData.TargetPort            = IfrNvData->TargetPort;\r
+      if (Private->Current->SessionConfigData.TargetPort == 0) {\r
+        Private->Current->SessionConfigData.TargetPort = ISCSI_WELL_KNOWN_PORT;\r
+      }\r
 \r
-    Private->Current->SessionConfigData.TargetInfoFromDhcp  = IfrNvData->TargetInfoFromDhcp;\r
-    Private->Current->AuthConfigData.CHAPType               = IfrNvData->CHAPType;\r
+      Private->Current->SessionConfigData.TargetInfoFromDhcp  = IfrNvData->TargetInfoFromDhcp;\r
+      Private->Current->AuthConfigData.CHAPType               = IfrNvData->CHAPType;\r
 \r
-    //\r
-    // Only do full parameter validation if iSCSI is enabled on this device.\r
-    //\r
-    if (Private->Current->SessionConfigData.Enabled) {\r
       //\r
-      // Validate the address configuration of the Initiator if DHCP isn't\r
-      // deployed.\r
+      // Only do full parameter validation if iSCSI is enabled on this device.\r
       //\r
-      if (!Private->Current->SessionConfigData.InitiatorInfoFromDhcp) {\r
-        CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.LocalIp, sizeof (HostIp.v4));\r
-        CopyMem (&SubnetMask.v4, &Private->Current->SessionConfigData.SubnetMask, sizeof (SubnetMask.v4));\r
-        CopyMem (&Gateway.v4, &Private->Current->SessionConfigData.Gateway, sizeof (Gateway.v4));\r
-\r
-        if ((Gateway.Addr[0] != 0)) {\r
-          if (SubnetMask.Addr[0] == 0) {\r
-            CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Gateway address is set but subnet mask is zero.", NULL);\r
-            Status = EFI_INVALID_PARAMETER;\r
-            break;\r
-          } else if (!IP4_NET_EQUAL (HostIp.Addr[0], Gateway.Addr[0], SubnetMask.Addr[0])) {\r
-            CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Local IP and Gateway are not in the same subnet.", NULL);\r
+      if (Private->Current->SessionConfigData.Enabled) {\r
+        //\r
+        // Validate the address configuration of the Initiator if DHCP isn't\r
+        // deployed.\r
+        //\r
+        if (!Private->Current->SessionConfigData.InitiatorInfoFromDhcp) {\r
+          CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.LocalIp, sizeof (HostIp.v4));\r
+          CopyMem (&SubnetMask.v4, &Private->Current->SessionConfigData.SubnetMask, sizeof (SubnetMask.v4));\r
+          CopyMem (&Gateway.v4, &Private->Current->SessionConfigData.Gateway, sizeof (Gateway.v4));\r
+\r
+          if ((Gateway.Addr[0] != 0)) {\r
+            if (SubnetMask.Addr[0] == 0) {\r
+              CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Gateway address is set but subnet mask is zero.", NULL);\r
+              Status = EFI_INVALID_PARAMETER;\r
+              break;\r
+            } else if (!IP4_NET_EQUAL (HostIp.Addr[0], Gateway.Addr[0], SubnetMask.Addr[0])) {\r
+              CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Local IP and Gateway are not in the same subnet.", NULL);\r
+              Status = EFI_INVALID_PARAMETER;\r
+              break;\r
+            }\r
+          }\r
+        }\r
+        //\r
+        // Validate target configuration if DHCP isn't deployed.\r
+        //\r
+        if (!Private->Current->SessionConfigData.TargetInfoFromDhcp) {\r
+          CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.TargetIp, sizeof (HostIp.v4));\r
+          if (!NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
+            CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Target IP is invalid!", NULL);\r
             Status = EFI_INVALID_PARAMETER;\r
             break;\r
           }\r
         }\r
-      }\r
-      //\r
-      // Validate target configuration if DHCP isn't deployed.\r
-      //\r
-      if (!Private->Current->SessionConfigData.TargetInfoFromDhcp) {\r
-        CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.TargetIp, sizeof (HostIp.v4));\r
-        if (!NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
-          CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Target IP is invalid!", NULL);\r
-          Status = EFI_INVALID_PARAMETER;\r
-          break;\r
-        }\r
-      }\r
 \r
-      if (IfrNvData->CHAPType != ISCSI_CHAP_NONE) {\r
-        if ((IfrNvData->CHAPName[0] == '\0') || (IfrNvData->CHAPSecret[0] == '\0')) {\r
-          CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"CHAP Name or CHAP Secret is invalid!", NULL);\r
-          Status = EFI_INVALID_PARAMETER;\r
-          break;\r
-        }\r
+        if (IfrNvData->CHAPType != ISCSI_CHAP_NONE) {\r
+          if ((IfrNvData->CHAPName[0] == '\0') || (IfrNvData->CHAPSecret[0] == '\0')) {\r
+            CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"CHAP Name or CHAP Secret is invalid!", NULL);\r
+            Status = EFI_INVALID_PARAMETER;\r
+            break;\r
+          }\r
 \r
-        if ((IfrNvData->CHAPType == ISCSI_CHAP_MUTUAL) &&\r
-            ((IfrNvData->ReverseCHAPName[0] == '\0') || (IfrNvData->ReverseCHAPSecret[0] == '\0'))\r
-            ) {\r
-          CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Reverse CHAP Name or Reverse CHAP Secret is invalid!", NULL);\r
-          Status = EFI_INVALID_PARAMETER;\r
-          break;\r
+          if ((IfrNvData->CHAPType == ISCSI_CHAP_MUTUAL) &&\r
+              ((IfrNvData->ReverseCHAPName[0] == '\0') || (IfrNvData->ReverseCHAPSecret[0] == '\0'))\r
+              ) {\r
+            CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Reverse CHAP Name or Reverse CHAP Secret is invalid!", NULL);\r
+            Status = EFI_INVALID_PARAMETER;\r
+            break;\r
+          }\r
         }\r
       }\r
-    }\r
 \r
-    BufferSize = sizeof (Private->Current->SessionConfigData);\r
-    gRT->SetVariable (\r
-          Private->Current->MacString,\r
-          &gEfiIScsiInitiatorNameProtocolGuid,\r
-          ISCSI_CONFIG_VAR_ATTR,\r
-          BufferSize,\r
-          &Private->Current->SessionConfigData\r
-          );\r
+      BufferSize = sizeof (Private->Current->SessionConfigData);\r
+      gRT->SetVariable (\r
+            Private->Current->MacString,\r
+            &gEfiIScsiInitiatorNameProtocolGuid,\r
+            ISCSI_CONFIG_VAR_ATTR,\r
+            BufferSize,\r
+            &Private->Current->SessionConfigData\r
+            );\r
+\r
+      BufferSize = sizeof (Private->Current->AuthConfigData);\r
+      gRT->SetVariable (\r
+            Private->Current->MacString,\r
+            &mIScsiCHAPAuthInfoGuid,\r
+            ISCSI_CONFIG_VAR_ATTR,\r
+            BufferSize,\r
+            &Private->Current->AuthConfigData\r
+            );\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      break;\r
 \r
-    BufferSize = sizeof (Private->Current->AuthConfigData);\r
-    gRT->SetVariable (\r
-          Private->Current->MacString,\r
-          &mIScsiCHAPAuthInfoGuid,\r
-          ISCSI_CONFIG_VAR_ATTR,\r
-          BufferSize,\r
-          &Private->Current->AuthConfigData\r
-          );\r
-    *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-    break;\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
-  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
+        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
-      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
+        IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);\r
 \r
-      IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);\r
+        Private->Current = ConfigFormEntry;\r
+      }\r
 \r
-      Private->Current = ConfigFormEntry;\r
+      break;\r
     }\r
 \r
-    break;\r
-  }\r
+    if (!EFI_ERROR (Status)) {\r
+      //\r
+      // Pass changed uncommitted data back to Form Browser\r
+      //\r
+      HiiSetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL);\r
+    }\r
+    \r
+    FreePool (IfrNvData);\r
 \r
-  if (!EFI_ERROR (Status)) {\r
-    //\r
-    // Pass changed uncommitted data back to Form Browser\r
-    //\r
-    HiiSetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL);\r
+    return Status;\r
   }\r
 \r
-  FreePool (IfrNvData);\r
-  return Status;\r
+  //\r
+  // All other action return unsupported.\r
+  //\r
+  return EFI_UNSUPPORTED;\r
 }\r
 \r
 /**\r
index b0aee5f4367a579e8e4c1b58dac2f585795dd216..d57605e02dc752ba40b7aeb7c985e2f09803b4c3 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Helper functions for configuring or getting the parameters relating to Ip4.\r
 \r
-Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -692,76 +692,76 @@ Ip4FormCallback (
   EFI_STATUS                Status;\r
   EFI_INPUT_KEY             Key;\r
 \r
-  if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) {\r
+  if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+    Ip4ConfigInstance = IP4_CONFIG_INSTANCE_FROM_CONFIG_ACCESS (This);\r
+\r
+    IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG_IFR_NVDATA));\r
+    if (IfrFormNvData == NULL) {\r
+      return EFI_OUT_OF_RESOURCES;\r
+    }\r
+\r
     //\r
-    // Do nothing for UEFI OPEN/CLOSE Action\r
+    // Retrive uncommitted data from Browser\r
     //\r
-    return EFI_SUCCESS;\r
-  }\r
+    if (!HiiGetBrowserData (&mNicIp4ConfigNvDataGuid, EFI_NIC_IP4_CONFIG_VARIABLE, sizeof (IP4_CONFIG_IFR_NVDATA), (UINT8 *) IfrFormNvData)) {\r
+      FreePool (IfrFormNvData);\r
+      return EFI_NOT_FOUND;\r
+    }\r
 \r
-  Ip4ConfigInstance = IP4_CONFIG_INSTANCE_FROM_CONFIG_ACCESS (This);\r
+    Status = EFI_SUCCESS;\r
 \r
-  IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG_IFR_NVDATA));\r
-  if (IfrFormNvData == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
+    switch (QuestionId) {\r
+    case KEY_LOCAL_IP:\r
+      Status = Ip4StrToIp (IfrFormNvData->StationAddress, &HostIp.v4);\r
+      if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
+        Status = EFI_INVALID_PARAMETER;\r
+      } else {\r
+        CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.LocalIp, &HostIp.v4, sizeof (HostIp.v4));\r
+      }\r
 \r
-  //\r
-  // Retrive uncommitted data from Browser\r
-  //\r
-  if (!HiiGetBrowserData (&mNicIp4ConfigNvDataGuid, EFI_NIC_IP4_CONFIG_VARIABLE, sizeof (IP4_CONFIG_IFR_NVDATA), (UINT8 *) IfrFormNvData)) {\r
-    FreePool (IfrFormNvData);\r
-    return EFI_NOT_FOUND;\r
-  }\r
+      break;\r
 \r
-  Status = EFI_SUCCESS;\r
+    case KEY_SUBNET_MASK:\r
+      Status = Ip4StrToIp (IfrFormNvData->SubnetMask, &SubnetMask.v4);\r
+      if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (GetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL);\r
+        Status = EFI_INVALID_PARAMETER;\r
+      } else {\r
+        CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4));\r
+      }\r
 \r
-  switch (QuestionId) {\r
-  case KEY_LOCAL_IP:\r
-    Status = Ip4StrToIp (IfrFormNvData->StationAddress, &HostIp.v4);\r
-    if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
-      Status = EFI_INVALID_PARAMETER;\r
-    } else {\r
-      CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.LocalIp, &HostIp.v4, sizeof (HostIp.v4));\r
-    }\r
+      break;\r
 \r
-    break;\r
+    case KEY_GATE_WAY:\r
+      Status = Ip4StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4);\r
+      if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL);\r
+        Status = EFI_INVALID_PARAMETER;\r
+      } else {\r
+        CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.Gateway, &Gateway.v4, sizeof (Gateway.v4));\r
+      }\r
 \r
-  case KEY_SUBNET_MASK:\r
-    Status = Ip4StrToIp (IfrFormNvData->SubnetMask, &SubnetMask.v4);\r
-    if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (GetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL);\r
-      Status = EFI_INVALID_PARAMETER;\r
-    } else {\r
-      CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4));\r
-    }\r
+      break;\r
 \r
-    break;\r
+    case KEY_SAVE_CHANGES:\r
+      Status = Ip4ConfigConvertIfrNvDataToDeviceConfigData (IfrFormNvData, Ip4ConfigInstance);\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      break;\r
 \r
-  case KEY_GATE_WAY:\r
-    Status = Ip4StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4);\r
-    if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL);\r
-      Status = EFI_INVALID_PARAMETER;\r
-    } else {\r
-      CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.Gateway, &Gateway.v4, sizeof (Gateway.v4));\r
+    default:\r
+      break;\r
     }\r
 \r
-    break;\r
-\r
-  case KEY_SAVE_CHANGES:\r
-    Status = Ip4ConfigConvertIfrNvDataToDeviceConfigData (IfrFormNvData, Ip4ConfigInstance);\r
-    *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-    break;\r
+    FreePool (IfrFormNvData);\r
 \r
-  default:\r
-    break;\r
+    return Status;\r
   }\r
 \r
-  FreePool (IfrFormNvData);\r
-\r
-  return Status;\r
+  //\r
+  // All other action return unsupported.\r
+  //\r
+  return EFI_UNSUPPORTED;\r
 }\r
 \r
 /**\r
index 871199e7b96ed22d1d6ef63a2f3866e779ddbe99..dfcf7a3d9c2c316834bf64d09cb7a231f2831aac 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   HII Config Access protocol implementation of VLAN configuration module.\r
 \r
-Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions\r
 of the BSD License which accompanies this distribution.  The full\r
@@ -254,77 +254,84 @@ VlanCallback (
     return EFI_SUCCESS;\r
   }\r
 \r
-  //\r
-  // Get Browser data\r
-  //\r
-  Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION));\r
-  ASSERT (Configuration != NULL);\r
-  HiiGetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration);\r
-\r
-  VlanConfig = PrivateData->VlanConfig;\r
-\r
-  switch (QuestionId) {\r
-  case VLAN_ADD_QUESTION_ID:\r
+  if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
     //\r
-    // Add a VLAN\r
+    // Get Browser data\r
     //\r
-    VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority);\r
-    VlanUpdateForm (PrivateData);\r
+    Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION));\r
+    ASSERT (Configuration != NULL);\r
+    HiiGetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration);\r
 \r
-    //\r
-    // Connect the newly created VLAN device\r
-    //\r
-    VlanHandle = NetLibGetVlanHandle (PrivateData->ControllerHandle, Configuration->VlanId);\r
-    if (VlanHandle == NULL) {\r
+    VlanConfig = PrivateData->VlanConfig;\r
+\r
+    switch (QuestionId) {\r
+    case VLAN_ADD_QUESTION_ID:\r
       //\r
-      // There may be no child handle created for VLAN ID 0, connect the parent handle\r
+      // Add a VLAN\r
       //\r
-      VlanHandle = PrivateData->ControllerHandle;\r
-    }\r
-    gBS->ConnectController (VlanHandle, NULL, NULL, TRUE);\r
-\r
-    //\r
-    // Clear UI data\r
-    //\r
-    *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-    Configuration->VlanId = 0;\r
-    Configuration->Priority = 0;\r
-    break;\r
+      VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority);\r
+      VlanUpdateForm (PrivateData);\r
 \r
-  case VLAN_REMOVE_QUESTION_ID:\r
-    //\r
-    // Remove VLAN\r
-    //\r
-    ASSERT (PrivateData->NumberOfVlan <= MAX_VLAN_NUMBER);\r
-    for (Index = 0; Index < PrivateData->NumberOfVlan; Index++) {\r
-      if (Configuration->VlanList[Index] != 0) {\r
+      //\r
+      // Connect the newly created VLAN device\r
+      //\r
+      VlanHandle = NetLibGetVlanHandle (PrivateData->ControllerHandle, Configuration->VlanId);\r
+      if (VlanHandle == NULL) {\r
         //\r
-        // Checkbox is selected, need remove this VLAN\r
+        // There may be no child handle created for VLAN ID 0, connect the parent handle\r
         //\r
-        VlanConfig->Remove (VlanConfig, PrivateData->VlanId[Index]);\r
+        VlanHandle = PrivateData->ControllerHandle;\r
       }\r
-    }\r
+      gBS->ConnectController (VlanHandle, NULL, NULL, TRUE);\r
 \r
-    VlanUpdateForm (PrivateData);\r
-    if (PrivateData->NumberOfVlan == 0) {\r
       //\r
-      // No VLAN device now, connect the physical NIC handle.\r
-      // Note: PrivateData->NumberOfVlan has been updated by VlanUpdateForm()\r
+      // Clear UI data\r
       //\r
-      gBS->ConnectController (PrivateData->ControllerHandle, NULL, NULL, TRUE);\r
-    }\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      Configuration->VlanId = 0;\r
+      Configuration->Priority = 0;\r
+      break;\r
 \r
-    *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-    ZeroMem (Configuration->VlanList, MAX_VLAN_NUMBER);\r
-    break;\r
+    case VLAN_REMOVE_QUESTION_ID:\r
+      //\r
+      // Remove VLAN\r
+      //\r
+      ASSERT (PrivateData->NumberOfVlan <= MAX_VLAN_NUMBER);\r
+      for (Index = 0; Index < PrivateData->NumberOfVlan; Index++) {\r
+        if (Configuration->VlanList[Index] != 0) {\r
+          //\r
+          // Checkbox is selected, need remove this VLAN\r
+          //\r
+          VlanConfig->Remove (VlanConfig, PrivateData->VlanId[Index]);\r
+        }\r
+      }\r
 \r
-  default:\r
-    break;\r
+      VlanUpdateForm (PrivateData);\r
+      if (PrivateData->NumberOfVlan == 0) {\r
+        //\r
+        // No VLAN device now, connect the physical NIC handle.\r
+        // Note: PrivateData->NumberOfVlan has been updated by VlanUpdateForm()\r
+        //\r
+        gBS->ConnectController (PrivateData->ControllerHandle, NULL, NULL, TRUE);\r
+      }\r
+\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      ZeroMem (Configuration->VlanList, MAX_VLAN_NUMBER);\r
+      break;\r
+\r
+    default:\r
+      break;\r
+    }\r
+\r
+    HiiSetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration, NULL);\r
+    FreePool (Configuration);\r
+    return EFI_SUCCESS;\r
   }\r
 \r
-  HiiSetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration, NULL);\r
-  FreePool (Configuration);\r
-  return EFI_SUCCESS;\r
+  //\r
+  // All other action return unsupported.\r
+  //\r
+  return EFI_UNSUPPORTED;\r
 }\r
 \r
 \r
index 70f29998bad4a58202d8830f54a77fe6c56cad61..865ff3265b112c44d6bebcccdb172750a0b81cc8 100644 (file)
@@ -13,7 +13,7 @@
   4. It save all the mapping info in NV variables which will be consumed\r
      by platform override protocol driver to publish the platform override protocol.\r
 \r
-Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -1335,81 +1335,81 @@ PlatOverMngrCallback (
   EFI_INPUT_KEY                             Key;\r
   PLAT_OVER_MNGR_DATA                       *FakeNvData;\r
 \r
-  if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) {
-    //\r
-    // Do nothing for UEFI OPEN/CLOSE Action\r
-    //\r
-    return EFI_SUCCESS;
-  }\r
-\r
-  Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
-  FakeNvData = &Private->FakeNvData;\r
-  if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  if (KeyValue == KEY_VALUE_DEVICE_REFRESH ||\r
-      KeyValue == KEY_VALUE_DEVICE_FILTER ||\r
-      KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS\r
-      ) {\r
-    UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
-    //\r
-    // Update page title string\r
-    //\r
-    NewStringToken = STRING_TOKEN (STR_TITLE);\r
-    if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) {\r
-      ASSERT (FALSE);\r
+  if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+    Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
+    FakeNvData = &Private->FakeNvData;\r
+    if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
+      return EFI_NOT_FOUND;\r
     }\r
-  }\r
 \r
-  if (((KeyValue >= KEY_VALUE_DEVICE_OFFSET) && (KeyValue < KEY_VALUE_DEVICE_MAX)) || (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS)) {\r
-    if (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS) {\r
-      KeyValue = (EFI_QUESTION_ID) (mSelectedCtrIndex + KEY_VALUE_DEVICE_OFFSET);\r
+    if (KeyValue == KEY_VALUE_DEVICE_REFRESH ||\r
+        KeyValue == KEY_VALUE_DEVICE_FILTER ||\r
+        KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS\r
+        ) {\r
+      UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
+      //\r
+      // Update page title string\r
+      //\r
+      NewStringToken = STRING_TOKEN (STR_TITLE);\r
+      if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) {\r
+        ASSERT (FALSE);\r
+      }\r
     }\r
-    UpdateBindingDriverSelectPage (Private, KeyValue, FakeNvData);\r
-    //\r
-    // Update page title string\r
-    //\r
-    NewStringToken = STRING_TOKEN (STR_TITLE);\r
-    if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Second, Select drivers for the previous selected controller", NULL) == 0) {\r
-      ASSERT (FALSE);\r
+\r
+    if (((KeyValue >= KEY_VALUE_DEVICE_OFFSET) && (KeyValue < KEY_VALUE_DEVICE_MAX)) || (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS)) {\r
+      if (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS) {\r
+        KeyValue = (EFI_QUESTION_ID) (mSelectedCtrIndex + KEY_VALUE_DEVICE_OFFSET);\r
+      }\r
+      UpdateBindingDriverSelectPage (Private, KeyValue, FakeNvData);\r
+      //\r
+      // Update page title string\r
+      //\r
+      NewStringToken = STRING_TOKEN (STR_TITLE);\r
+      if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Second, Select drivers for the previous selected controller", NULL) == 0) {\r
+        ASSERT (FALSE);\r
+      }\r
     }\r
-  }\r
 \r
-  if (KeyValue == KEY_VALUE_DRIVER_GOTO_ORDER) {\r
-    UpdatePrioritySelectPage (Private, KeyValue, FakeNvData);\r
-    //\r
-    // Update page title string\r
-    //\r
-    NewStringToken = STRING_TOKEN (STR_TITLE);\r
-    if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Finally, Set the priority order for the drivers and save them", NULL) == 0) {\r
-      ASSERT (FALSE);\r
+    if (KeyValue == KEY_VALUE_DRIVER_GOTO_ORDER) {\r
+      UpdatePrioritySelectPage (Private, KeyValue, FakeNvData);\r
+      //\r
+      // Update page title string\r
+      //\r
+      NewStringToken = STRING_TOKEN (STR_TITLE);\r
+      if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Finally, Set the priority order for the drivers and save them", NULL) == 0) {\r
+        ASSERT (FALSE);\r
+      }\r
     }\r
-  }\r
 \r
-  if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) {\r
-    Status = CommintChanges (Private, KeyValue, FakeNvData);\r
-    *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-    if (EFI_ERROR (Status)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
-      return EFI_DEVICE_ERROR;\r
+    if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) {\r
+      Status = CommintChanges (Private, KeyValue, FakeNvData);\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      if (EFI_ERROR (Status)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
+        return EFI_DEVICE_ERROR;\r
+      }\r
     }\r
-  }\r
 \r
-  if (KeyValue == KEY_VALUE_DEVICE_CLEAR) {\r
+    if (KeyValue == KEY_VALUE_DEVICE_CLEAR) {\r
+      //\r
+      // Deletes all environment variable(s) that contain the override mappings info\r
+      //\r
+      FreeMappingDatabase (&mMappingDataBase);\r
+      Status = SaveOverridesMapping (&mMappingDataBase);\r
+      UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
+    }\r
     //\r
-    // Deletes all environment variable(s) that contain the override mappings info\r
+    // Pass changed uncommitted data back to Form Browser\r
     //\r
-    FreeMappingDatabase (&mMappingDataBase);\r
-    Status = SaveOverridesMapping (&mMappingDataBase);\r
-    UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
-  }\r
+    HiiSetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+\r
+    return EFI_SUCCESS;\r
+  } \r
+\r
   //\r
-  // Pass changed uncommitted data back to Form Browser\r
+  // All other action return unsupported.\r
   //\r
-  HiiSetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
-\r
-  return EFI_SUCCESS;\r
+  return EFI_UNSUPPORTED;\r
 }\r
 \r
 /**\r