From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 2733F78003C for ; Thu, 4 Jan 2024 02:32:32 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=vKa+7ACSz/IFjjMgKAxM1WEk5VI4qd+MS4H/9nZ/WQw=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:Received-SPF:From:To:CC:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1704335550; v=1; b=AANm2wH1rh2/k+mPps4JLz0D4numkgVtP+qRvmx/P6vlGPMcOBXVeS6togk3E9xz+m2yj8ap YgSE1B9xm3lWrYksM+5cdZSS0pEfSfi8Hg2EvcfXRwzQBAg1UomWoJOB2ARrc2raFiWLXye8bFP c2aIITp6YS6LKdjOg1p9Utxc= X-Received: by 127.0.0.2 with SMTP id Ne5zYY7687511xDt7SOQU4ld; Wed, 03 Jan 2024 18:32:30 -0800 X-Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.49]) by mx.groups.io with SMTP id smtpd.web10.46009.1704335550216206710 for ; Wed, 03 Jan 2024 18:32:30 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fj0wU1fpOHhjQ6RB3erHRd8T0snAW2eldMq/OsGjDPyBJ03SMi9DKGQRnHaPcNhdzwed5uyAf/0D9/Adl+KP1/gBTUwNtMq0uJsZ4PR6QcLNRIwRQ3U+GE9qk0+aEenzBciV5jgi3GGGMrANatgLc8Qs0B8/+447tkal0ZS2FZKwbHB4fxVCUX1pFyaGUp/3KMLGn62YFoawbz+uP+7FvsulBKFaBDQDQ0g4rsFvOfK6hbDpEgPDp7FiWMhqkiCMXy/Die7duMKTvBFaseA8O1sv0WDzaaGov/Kd0LahByg+ZrLelgcd4kzBmsjsyKCxH7yR3ec/KphUZxczoqFT3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=K4ZBFAWXNvlIphPaWybRw0jP3qnDB5G/tiEjMAJITiw=; b=B0WWjkOAvGQIvE8XNjYBB7IyLQ4GGspX3rbqQO20vO01kbvYbOTxreL5Q4GJmL4Ec9hheKZn6GWOE7xOOqfft5DJfoRUf8svDwgXQbWni+Gu2EBRr5F5xf392K5v4SVrrZo5Va3WaSij4Od2k+Z24GTsSquPta6Xlnff5tr+c+ozynAHGoapGPjVGvQKwS212JPZdsMZ0xGu9gNiWyLwI48ag6Xos0JDLElfn8c/GhfCndZZZ+ahJ/XphBh2VSrCQ6JdlO6KskjUyt4u7pqLJ71xGc+22A0gte36YHFoEbHtq4cC0ajCu3yma7t7cVSUTZ3z9pzizdpNQWjl+e5iTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) X-Received: from PH8PR07CA0045.namprd07.prod.outlook.com (2603:10b6:510:2cf::14) by DM6PR12MB4252.namprd12.prod.outlook.com (2603:10b6:5:211::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Thu, 4 Jan 2024 02:32:26 +0000 X-Received: from SN1PEPF0002BA52.namprd03.prod.outlook.com (2603:10b6:510:2cf:cafe::21) by PH8PR07CA0045.outlook.office365.com (2603:10b6:510:2cf::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13 via Frontend Transport; Thu, 4 Jan 2024 02:32:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (216.228.117.160) by SN1PEPF0002BA52.mail.protection.outlook.com (10.167.242.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.9 via Frontend Transport; Thu, 4 Jan 2024 02:32:26 +0000 X-Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 3 Jan 2024 18:32:12 -0800 X-Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 3 Jan 2024 18:32:12 -0800 X-Received: from NV-CL38DL3.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.986.41 via Frontend Transport; Wed, 3 Jan 2024 18:32:11 -0800 From: "Nickle Wang via groups.io" To: CC: Abner Chang , Igor Kulchytskyy , "Nick Ramirez" Subject: [edk2-devel] [edk2-redfish-client][PATCH v2 06/10] RedfishClientPkg/Memory: use HTTP cache lib Date: Thu, 4 Jan 2024 10:32:10 +0800 Message-ID: <20240104023210.11150-1-nicklew@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA52:EE_|DM6PR12MB4252:EE_ X-MS-Office365-Filtering-Correlation-Id: fdcbb492-435e-4d74-7585-08dc0ccd6400 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: EqaLfSQKKx7vwmpmRULR/VY2kgDciC971WCDKBYItDCpm1EnrMQ2iHgXLvFw9Qf/I1njneoaNKGxxY1V/iW+RRN6Au1Noar2oZgosy3a7sr5vZsUBvjLuw75STZdfv7HqbkTMf1693WoXYER4d1mmipu2Tr0yXBfV5AfrwCED/dtgIQ2SCNREv9xcyZN4lwWIFHDc82dSRcGjP1+YtUDoy1jMlgixi4Ol9Hc5FoonY4eoZv/RDP3rR1jjejebDlDEHBYBUoXJJzmpMXvlqczGYP9M8pYaSj/wXTmlUba0giwyx7Nt5eN/1p6NPd8X7uX59Qf6JbXV4nfTUh5+QGXnYwMNJgQ+ronPQnUl+zQ7djH7xQFaRM2xEQfUQHWr9wsz2KtgH/VmvapyLdEZhgbf9bpWPN+uEsRPb7Ytxzbs6dklg3FW16cWGVfuzzZ8JBrdCm6qQbtqlAFW2g3pSXKHbiGphGqzZb5Y7K1DcIX06QkF0O1k7P5nQqhPh3ddlwOCqLyqtyupEZWMzWD4KI2xPkgNDhUJHMdyK8+nmPc2zTAWvXLiTqoqHDP6SGwTY/UC/NHoLxlntnGwrZQA4BVKIOp38LJg5hyouIWHG7CV/aiula0sPcRNxjf3QCUvHObvOfrzaV7+zqy33v2FoRTmttCWOq4X47XPTB1AabnjuuGwQe+4uP0sDVEW0iUmfgbuVNpnAWxjVWuu5sAE5Iae73/wNXXd1NciuWlraaRFBNhcO0zQcMWI0lrdVvQHgAt X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2024 02:32:26.3942 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fdcbb492-435e-4d74-7585-08dc0ccd6400 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA52.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4252 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nicklew@nvidia.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: dkm9WY1nsgSj6mJt03gVsnxJx7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=AANm2wH1; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Use Redfish Http cache library to query Redfish service. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy Cc: Nick Ramirez --- .../Features/Memory/V1_7_1/Dxe/MemoryDxe.inf | 3 +- .../Features/Memory/V1_7_1/Dxe/MemoryDxe.c | 70 +++++++++++++++---- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.inf b/Re= dfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.inf index 594a8749..43039b9f 100644 --- a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.inf +++ b/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.inf @@ -1,6 +1,7 @@ ## @file # # (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserve= d. # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -36,7 +37,7 @@ RedfishResourceIdentifyLib UefiLib UefiDriverEntryPoint - + RedfishHttpCacheLib =20 [Protocols] gEdkIIRedfishConfigHandlerProtocolGuid ## PRODUCED diff --git a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c b/Redf= ishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c index 80bfd6d2..450170e1 100644 --- a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c +++ b/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c @@ -2,7 +2,7 @@ Redfish feature driver implementation - Memory =20 (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
- Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved= . + Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights res= erved. =20 SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -49,7 +49,8 @@ RedfishResourceProvisioningResource ( return EFI_NOT_READY; } =20 - Status =3D GetResourceByUri (Private->RedfishService, Uri, &Response); + ZeroMem (&Response, sizeof (Response)); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -71,6 +72,7 @@ RedfishResourceProvisioningResource ( Response.Headers, Response.Payload ); + RedfishHttpResetResource (Uri); Private->Payload =3D NULL; } =20 @@ -97,6 +99,9 @@ RedfishResourceConsumeResource ( REDFISH_RESOURCE_COMMON_PRIVATE *Private; EFI_STATUS Status; REDFISH_RESPONSE Response; + EFI_STRING PendingSettingUri; + REDFISH_RESPONSE PendingSettingResponse; + REDFISH_RESPONSE *ExpectedResponse; CHAR8 *Etag; =20 if ((This =3D=3D NULL) || IS_EMPTY_STRING (Uri)) { @@ -109,14 +114,33 @@ RedfishResourceConsumeResource ( return EFI_NOT_READY; } =20 - Status =3D GetResourceByUri (Private->RedfishService, Uri, &Response); + ZeroMem (&Response, sizeof (Response)); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; } =20 - Private->Uri =3D Uri; - Private->Payload =3D Response.Payload; + // + // Check and see if "@Redfish.Settings" exist or not. + // + ZeroMem (&PendingSettingResponse, sizeof (REDFISH_RESPONSE)); + Status =3D GetPendingSettings ( + Private->RedfishService, + Response.Payload, + &PendingSettingResponse, + &PendingSettingUri + ); + if (!EFI_ERROR (Status)) { + DEBUG ((REDFISH_DEBUG_TRACE, "%a: @Redfish.Settings found: %s\n", __fu= nc__, PendingSettingUri)); + Private->Uri =3D PendingSettingUri; + ExpectedResponse =3D &PendingSettingResponse; + } else { + Private->Uri =3D Uri; + ExpectedResponse =3D &Response; + } + + Private->Payload =3D ExpectedResponse->Payload; ASSERT (Private->Payload !=3D NULL); =20 Private->Json =3D JsonDumpString (RedfishJsonInPayload (Private->Payload= ), EDKII_JSON_COMPACT); @@ -126,7 +150,7 @@ RedfishResourceConsumeResource ( // Find etag in HTTP response header // Etag =3D NULL; - Status =3D GetEtagAndLocation (&Response, &Etag, NULL); + Status =3D GetEtagAndLocation (ExpectedResponse, &Etag, NULL); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, failed to get ETag from HTTP header\n", __fu= nc__)); } @@ -149,12 +173,24 @@ RedfishResourceConsumeResource ( // Release resource // if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); + if (Response.Payload !=3D NULL) { + RedfishFreeResponse ( + Response.StatusCode, + Response.HeaderCount, + Response.Headers, + Response.Payload + ); + } + + if (PendingSettingResponse.Payload !=3D NULL) { + RedfishFreeResponse ( + PendingSettingResponse.StatusCode, + PendingSettingResponse.HeaderCount, + PendingSettingResponse.Headers, + PendingSettingResponse.Payload + ); + } + Private->Payload =3D NULL; } =20 @@ -233,7 +269,8 @@ RedfishResourceUpdate ( return EFI_NOT_READY; } =20 - Status =3D GetResourceByUri (Private->RedfishService, Uri, &Response); + ZeroMem (&Response, sizeof (Response)); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -261,6 +298,7 @@ RedfishResourceUpdate ( Response.Headers, Response.Payload ); + RedfishHttpResetResource (Uri); Private->Payload =3D NULL; } =20 @@ -303,7 +341,8 @@ RedfishResourceCheck ( return EFI_NOT_READY; } =20 - Status =3D GetResourceByUri (Private->RedfishService, Uri, &Response); + ZeroMem (&Response, sizeof (Response)); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -374,7 +413,8 @@ RedfishResourceIdentify ( return EFI_NOT_READY; } =20 - Status =3D GetResourceByUri (Private->RedfishService, Uri, &Response); + ZeroMem (&Response, sizeof (Response)); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113121): https://edk2.groups.io/g/devel/message/113121 Mute This Topic: https://groups.io/mt/103516006/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-