From fcfdbe29874320e9f876baa7afebc3fca8f4a7df Mon Sep 17 00:00:00 2001 From: Liqi Liu Date: Thu, 21 Mar 2024 14:01:45 +0800 Subject: NetworkPkg/WifiConnectionManagerDxe: Update UI according to UEFI spec REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4736 In UEFI_Spec_2_10_Aug29.pdf page 1694 section 35.5.4 for EFI_BROWSER_ACTION_FORM_OPEN: NOTE: EFI_FORM_BROWSER2_PROTOCOL.BrowserCallback() cannot be used with this browser action because question values have not been retrieved yet. So should not call HiiGetBrowserData() and HiiSetBrowserData() in FORM_OPEN call back function. Now use wifi list key and enroll cert key instead of the connect action key, move wifi info display from open action to close action. Cc: Saloni Kasbekar Cc: Zachary Clark-williams Cc: Dandan Bi Cc: Felix Polyudov Signed-off-by: Liqi Liu Reviewed-by: Zachary Clark-williams Acked-by: Michael D Kinney --- .../WifiConnectionMgrHiiConfigAccess.c | 113 ++++++++++++++------- 1 file changed, 74 insertions(+), 39 deletions(-) (limited to 'NetworkPkg') diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c index 431fcbb33a..f242bdf056 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c @@ -1412,7 +1412,9 @@ WifiMgrDxeHiiConfigAccessCallback ( return EFI_OUT_OF_RESOURCES; } - HiiGetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *)IfrNvData); + if (Action != EFI_BROWSER_ACTION_FORM_OPEN) { + HiiGetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *)IfrNvData); + } if (Action == EFI_BROWSER_ACTION_FORM_OPEN) { switch (QuestionId) { @@ -1438,43 +1440,6 @@ WifiMgrDxeHiiConfigAccessCallback ( break; - case KEY_CONNECT_ACTION: - - if (Private->CurrentNic->UserSelectedProfile == NULL) { - break; - } - - Profile = Private->CurrentNic->UserSelectedProfile; - - // - // Enter the network connection configuration page - // Recovery from restored data - // - if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) { - return EFI_OUT_OF_RESOURCES; - } - - IfrNvData->SecurityType = Profile->SecurityType; - if (HiiSetString ( - Private->RegisteredHandle, - STRING_TOKEN (STR_SECURITY_TYPE), - mSecurityType[IfrNvData->SecurityType], - NULL - ) == 0) - { - return EFI_OUT_OF_RESOURCES; - } - - if ((IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) || - (IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE)) - { - IfrNvData->EapAuthMethod = Profile->EapAuthMethod; - IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod; - StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity); - } - - break; - case KEY_ENROLLED_CERT_NAME: if (Private->CurrentNic->UserSelectedProfile == NULL) { @@ -1524,6 +1489,43 @@ WifiMgrDxeHiiConfigAccessCallback ( } } else if (Action == EFI_BROWSER_ACTION_FORM_CLOSE) { switch (QuestionId) { + case KEY_EAP_ENROLL_CERT_FROM_FILE: + + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; + } + + Profile = Private->CurrentNic->UserSelectedProfile; + + // + // Enter the network connection configuration page + // Recovery from restored data + // + if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) { + return EFI_OUT_OF_RESOURCES; + } + + IfrNvData->SecurityType = Profile->SecurityType; + if (HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_SECURITY_TYPE), + mSecurityType[IfrNvData->SecurityType], + NULL + ) == 0) + { + return EFI_OUT_OF_RESOURCES; + } + + if ( (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) + || (IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE)) + { + IfrNvData->EapAuthMethod = Profile->EapAuthMethod; + IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod; + StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity); + } + + break; + case KEY_CONNECT_ACTION: if (Private->CurrentNic->UserSelectedProfile == NULL) { @@ -1909,6 +1911,39 @@ WifiMgrDxeHiiConfigAccessCallback ( NULL ); } + + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; + } + + Profile = Private->CurrentNic->UserSelectedProfile; + + // + // Enter the network connection configuration page + // Recovery from restored data + // + if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) { + return EFI_OUT_OF_RESOURCES; + } + + IfrNvData->SecurityType = Profile->SecurityType; + if (HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_SECURITY_TYPE), + mSecurityType[IfrNvData->SecurityType], + NULL + ) == 0) + { + return EFI_OUT_OF_RESOURCES; + } + + if ( (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) + || (IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE)) + { + IfrNvData->EapAuthMethod = Profile->EapAuthMethod; + IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod; + StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity); + } } break; @@ -1944,7 +1979,7 @@ WifiMgrDxeHiiConfigAccessCallback ( } } - if (!EFI_ERROR (Status)) { + if (!EFI_ERROR (Status) && (Action != EFI_BROWSER_ACTION_FORM_OPEN)) { // // Pass changed uncommitted data back to Form Browser. // -- cgit v1.2.3