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 9A7747803DA for ; Thu, 29 Feb 2024 08:55:28 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Uj4h/ELO8sg8gj35U5lFdU1b/M+KFPzmEeeyhia++gY=; 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=1709196927; v=1; b=JzrPcHJ6DcaQzEZk94sdi7jxHaOlOlTXap63ovth7r+pa87FejjNGvldkBb4HpzFw6Rban/E 3+H+fmbZ7Qr45MV2iS82l0cFUlBlnt+xqU1bCT7NDBLORBgYm1aYC82ury4nwcc8fA5paAbJmHW crhu7f3aml5OmAFjHUzFHiQM= X-Received: by 127.0.0.2 with SMTP id kZ1BYY7687511xeMtxJLtrRl; Thu, 29 Feb 2024 00:55:27 -0800 X-Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.89]) by mx.groups.io with SMTP id smtpd.web10.20246.1709196926686779400 for ; Thu, 29 Feb 2024 00:55:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L61Ks6joJGY6Tbkww058+g5sLMETDzvryty9skpCPhClBugWvXskVWUd4dMSBJJdhY/2M1jX7K7RGYSXPyAx2B+wksPpKfPBPow1hIj2w82dgoQbNOD6tnYlnkCxtDflH/LK9g3IUvlZt9NG/osJMgbQLmElGaeSx4QSMX96FN29yo4fUVgVoejM6d7AGWrafvukHheLwnvFgL+ix/0bMHgehgqZc/JJVuHeEYTxPzIeowZUbWyaFJsIRtU4JPw8y8QC89zyQDXyt9UVkwufpgyC6B07kpADsbpAVbfx7Q+Bh/eceuuUvc1AeWc1nH/QKCBqrhwmPh94aMFTNSqUWQ== 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=9fMn6EShG9LB+w9UFM7lHRLHi21ceq/vZRulQ5d8gbg=; b=BtL1eGjE1SFQOkrapM8O19OcSliiIsbzbuDXiTQpMawgCzP4FgHAAcgY8p9TUvkxiJQcootHUDK+0YsAJKVCKSy/6L/PapCESNnRzU5LC3079FJnpBIuoyq7gyH2raG+8GOTHbunDqVlvMeeD2pAheMHBzoNNtNQT/xgeEbxduN4Na/CIFGsr3icb7K3JZEWU4AyWSaZsdLqqcBj+WJHDwXbzQX6ve1Vx2S/bgqFQpoQlBm9TLJ67UOsFwgD3iUMae+xMusrteNPTtC8Prxrwbk4/7Wr7i8GkYO+sQo1D6eXDCs25thqO6ass77BSn6y38yRAkPD15e5tnDznIdZAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) 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 BY3PR10CA0009.namprd10.prod.outlook.com (2603:10b6:a03:255::14) by CY8PR12MB8242.namprd12.prod.outlook.com (2603:10b6:930:77::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.41; Thu, 29 Feb 2024 08:55:23 +0000 X-Received: from CO1PEPF000042AE.namprd03.prod.outlook.com (2603:10b6:a03:255:cafe::b6) by BY3PR10CA0009.outlook.office365.com (2603:10b6:a03:255::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.32 via Frontend Transport; Thu, 29 Feb 2024 08:55:23 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) 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.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (216.228.118.232) by CO1PEPF000042AE.mail.protection.outlook.com (10.167.243.43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Thu, 29 Feb 2024 08:55:23 +0000 X-Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Thu, 29 Feb 2024 00:55:11 -0800 X-Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Thu, 29 Feb 2024 00:55:10 -0800 X-Received: from NV-CL38DL3.nvidia.com (10.127.8.13) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server id 15.2.1258.12 via Frontend Transport; Thu, 29 Feb 2024 00:55:09 -0800 From: "Nickle Wang via groups.io" To: CC: Abner Chang , Igor Kulchytskyy Subject: [edk2-devel] [edk2-redfish-client][PATCH 12/13] RedfishClientPkg/MemoryDxe: ues RedfishHttpLib Date: Thu, 29 Feb 2024 16:55:09 +0800 Message-ID: <20240229085509.112804-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: CO1PEPF000042AE:EE_|CY8PR12MB8242:EE_ X-MS-Office365-Filtering-Correlation-Id: a9cf250c-40e9-4e52-03ab-08dc39042a50 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: o6bqD9PFX+FBnw0xpYyBDNdEBqv77LLLvfO1OHUVKuhhDDk/AHJVs5+f8jjLjb5GGb4nQ8AmU/nTcFa1B+XsMggqNaehboeTcXTeh6Vu7Ch/qLgfg6hY/4qHP1nO+vDRl/nNW/q0jVOzZ1wxWvbJEtN2B4vcIXpH4fhsX8b3HHb9zS92EAD33BqP0T/+ObJBJaQu1qa4oDXZuUwHPAmVnNQ7WC8yRkMxh8IvC7zekdU/yvoVtY9ObIz6hYDqL6B9zZhgQCusgU1Sa43SZrdmbQHyOSzO4n5R04JA2+lXiEnFdA6YqATIocgqkMuG+KxwjSSozsC2Zh6pk3S4BxAEoStmNWXVEaV8jvzYIDNj2XGTGZLVm8uqW99lReUkScruD287tFRQS/1VoplCoaeZzIEnlrTpuwEffF5ZIXGuHyvgNN47w/TZnyLuy+lutpF1iAb5/EvhAkmmyGx7Sp5TRCwtx6Oa699Or9lLFeiFaf0o5NT8I+AOrqXfNzGQoLZ1BBShLT+INigtVrNIzzyg1dqqKBqyQS2BZscSWvKS4byxlK69LWGR6tjMuQEQnzleYZLslHKsfKhp8BvR50BGIgmy24d8kvqjJhhEBiUj17QljNGII+ccn3EhR3lk8QGShjYs4LtnRUwjkdi/zwOWhiZRnJmc+dx/mTqJhcfC03xT0WzQltPfdqxDGIo312Yv9fr53FLq1RV1v53GxGUAhObaUwjDHri4UQxEXmQsk6lkLs4C4Cxq5sGb19kJnjqE X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Feb 2024 08:55:23.1369 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a9cf250c-40e9-4e52-03ab-08dc39042a50 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000042AE.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8242 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: QcRf2tvAbcNxJYdADEUO6k4mx7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-Spam-Flag: yes X-Spam-Level: ************ X-GND-Spam-Score: 190 X-GND-Status: SPAM Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=JzrPcHJ6; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=pass (policy=none) header.from=groups.io; 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 EDK2 RedfishHttpLib to replace RedfishHttpCacheLib and RedfishLib Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy --- .../Features/Memory/V1_7_1/Dxe/MemoryDxe.inf | 3 +- .../Memory/V1_7_1/Common/MemoryCommon.c | 86 ++++++-------- .../Features/Memory/V1_7_1/Dxe/MemoryDxe.c | 111 +++++------------- 3 files changed, 69 insertions(+), 131 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 43039b9f4..687c1a39d 100644 --- a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.inf +++ b/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.inf @@ -32,12 +32,11 @@ BaseMemoryLib DebugLib EdkIIRedfishResourceConfigLib - RedfishLib + RedfishHttpLib RedfishFeatureUtilityLib RedfishResourceIdentifyLib UefiLib UefiDriverEntryPoint - RedfishHttpCacheLib =20 [Protocols] gEdkIIRedfishConfigHandlerProtocolGuid ## PRODUCED diff --git a/RedfishClientPkg/Features/Memory/V1_7_1/Common/MemoryCommon.c = b/RedfishClientPkg/Features/Memory/V1_7_1/Common/MemoryCommon.c index 00a69f748..e873f05ca 100644 --- a/RedfishClientPkg/Features/Memory/V1_7_1/Common/MemoryCommon.c +++ b/RedfishClientPkg/Features/Memory/V1_7_1/Common/MemoryCommon.c @@ -2,7 +2,7 @@ Redfish feature driver implementation - common functions =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 @@ -67,7 +67,7 @@ RedfishConsumeResourceCommon ( // No change // DEBUG ((DEBUG_MANAGEABILITY, "%a, ETAG: %s has no change, ignore consu= me action\n", __func__, Private->Uri)); - Status =3D EFI_ALREADY_STARTED; + Status =3D EFI_SUCCESS; goto ON_RELEASE; } =20 @@ -2154,17 +2154,17 @@ ProvisioningMemoryResource ( IN EFI_STRING ConfigureLang ) { - CHAR8 *Json; - EFI_STATUS Status; - EFI_STRING NewResourceLocation; - CHAR8 *EtagStr; - CHAR8 ResourceId[16]; + CHAR8 *Json; + EFI_STATUS Status; + EFI_STRING NewResourceLocation; + CHAR8 ResourceId[16]; + REDFISH_RESPONSE Response; =20 if (IS_EMPTY_STRING (ConfigureLang) || (Private =3D=3D NULL)) { return EFI_INVALID_PARAMETER; } =20 - EtagStr =3D NULL; + ZeroMem (&Response, sizeof (REDFISH_RESPONSE)); AsciiSPrint (ResourceId, sizeof (ResourceId), "%d", Index); =20 Status =3D ProvisioningMemoryProperties ( @@ -2180,27 +2180,27 @@ ProvisioningMemoryResource ( return Status; } =20 - Status =3D CreatePayloadToPostResource (Private->RedfishService, Private= ->Payload, Json, &NewResourceLocation, &EtagStr); + Status =3D RedfishHttpPostResource (Private->RedfishService, Private->Ur= i, Json, &Response); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, post Memory resource for %s failed: %r\n", _= _func__, ConfigureLang, Status)); + DEBUG ((DEBUG_ERROR, "%a, post Bios resource for %s failed: %r\n", __f= unc__, ConfigureLang, Status)); goto RELEASE_RESOURCE; } =20 - ASSERT (NewResourceLocation !=3D NULL); - // - // Keep location of new resource. + // Per Redfish spec. the URL of new resource will be returned in "Locati= on" header. // - if (NewResourceLocation !=3D NULL) { - RedfishSetRedfishUri (ConfigureLang, NewResourceLocation); + Status =3D GetHttpResponseLocation (&Response, &NewResourceLocation); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: cannot find new location: %r\n", __func__, S= tatus)); + goto RELEASE_RESOURCE; } =20 // - // Handle Etag + // Keep location of new resource. // - if (EtagStr !=3D NULL) { - SetEtagWithUri (EtagStr, NewResourceLocation); - FreePool (EtagStr); + if (NewResourceLocation !=3D NULL) { + DEBUG ((DEBUG_MANAGEABILITY, "%a: Location: %s\n", __func__, NewResour= ceLocation)); + RedfishSetRedfishUri (ConfigureLang, NewResourceLocation); } =20 RELEASE_RESOURCE: @@ -2255,18 +2255,18 @@ ProvisioningMemoryExistResource ( IN REDFISH_RESOURCE_COMMON_PRIVATE *Private ) { - EFI_STATUS Status; - EFI_STRING ConfigureLang; - CHAR8 *EtagStr; - CHAR8 *Json; + EFI_STATUS Status; + EFI_STRING ConfigureLang; + CHAR8 *Json; + REDFISH_RESPONSE Response; =20 if (Private =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 - EtagStr =3D NULL; Json =3D NULL; ConfigureLang =3D NULL; + ZeroMem (&Response, sizeof (REDFISH_RESPONSE)); =20 ConfigureLang =3D RedfishGetConfigLanguage (Private->Uri); if (ConfigureLang =3D=3D NULL) { @@ -2293,23 +2293,17 @@ ProvisioningMemoryExistResource ( =20 DEBUG ((REDFISH_DEBUG_TRACE, "%a, provisioning existing resource for %s\= n", __func__, ConfigureLang)); // - // PUT back to instance + // PATCH back to instance // - Status =3D CreatePayloadToPatchResource (Private->RedfishService, Privat= e->Payload, Json, &EtagStr); + Status =3D RedfishHttpPatchResource (Private->RedfishService, Private->U= ri, Json, &Response); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, patch resource for %s failed: %r\n", __func_= _, ConfigureLang, Status)); } =20 - // - // Handle Etag - // - if (EtagStr !=3D NULL) { - SetEtagWithUri (EtagStr, Private->Uri); - FreePool (EtagStr); - } - ON_RELEASE: =20 + RedfishHttpFreeResponse (&Response); + if (Json !=3D NULL) { FreePool (Json); } @@ -2429,18 +2423,18 @@ RedfishUpdateResourceCommon ( IN CHAR8 *InputJson ) { - EFI_STATUS Status; - CHAR8 *Json; - EFI_STRING ConfigureLang; - CHAR8 *EtagStr; + EFI_STATUS Status; + CHAR8 *Json; + EFI_STRING ConfigureLang; + REDFISH_RESPONSE Response; =20 if ((Private =3D=3D NULL) || IS_EMPTY_STRING (InputJson)) { return EFI_INVALID_PARAMETER; } =20 - EtagStr =3D NULL; Json =3D NULL; ConfigureLang =3D NULL; + ZeroMem (&Response, sizeof (REDFISH_RESPONSE)); =20 ConfigureLang =3D RedfishGetConfigLanguage (Private->Uri); if (ConfigureLang =3D=3D NULL) { @@ -2467,23 +2461,17 @@ RedfishUpdateResourceCommon ( =20 DEBUG ((REDFISH_DEBUG_TRACE, "%a, update resource for %s\n", __func__, C= onfigureLang)); // - // PUT back to instance + // PATCH back to instance // - Status =3D CreatePayloadToPatchResource (Private->RedfishService, Privat= e->Payload, Json, &EtagStr); + Status =3D RedfishHttpPatchResource (Private->RedfishService, Private->U= ri, Json, &Response); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, patch resource for %s failed: %r\n", __func_= _, ConfigureLang, Status)); } =20 - // - // Handle Etag - // - if (EtagStr !=3D NULL) { - SetEtagWithUri (EtagStr, Private->Uri); - FreePool (EtagStr); - } - ON_RELEASE: =20 + RedfishHttpFreeResponse (&Response); + if (Json !=3D NULL) { FreePool (Json); } diff --git a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c b/Redf= ishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c index 4a6e34287..c4a363cdf 100644 --- a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c +++ b/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c @@ -51,7 +51,7 @@ RedfishResourceProvisioningResource ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -62,20 +62,20 @@ RedfishResourceProvisioningResource ( ASSERT (Private->Payload !=3D NULL); =20 Status =3D RedfishProvisioningResourceCommon (Private, !PostMode); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to provision resource to: %s: %r\n", = __func__, Uri, Status)); + } else { + // + // Get latest ETag on URI and keep it in variable. + // + SetEtagFromUri (Private->RedfishService, Private->Uri, TRUE); + } =20 // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - RedfishHttpResetResource (Uri); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 return Status; } @@ -116,7 +116,7 @@ RedfishResourceConsumeResource ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -154,42 +154,15 @@ RedfishResourceConsumeResource ( GetHttpResponseEtag (ExpectedResponse, &Etag); Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { - if (Status !=3D EFI_ALREADY_STARTED) { - DEBUG ((DEBUG_ERROR, "%a, failed to consume resource from: %s: %r\n"= , __func__, Uri, Status)); - } - } else { - // - // Keep etag after consuming pending settings. - // - if (Etag !=3D NULL) { - SetEtagWithUri (Etag, Private->Uri); - } + DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n", = __func__, Private->Uri, Status)); } =20 // // Release resource // - if (Private->Payload !=3D NULL) { - 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; - } + RedfishHttpFreeResponse (&Response); + RedfishHttpFreeResponse (&PendingSettingResponse); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -267,7 +240,7 @@ RedfishResourceUpdate ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -282,22 +255,19 @@ RedfishResourceUpdate ( =20 Status =3D RedfishUpdateResourceCommon (Private, Private->Json); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, failed to update resource from: %s: %r\n", _= _func__, Uri, Status)); + DEBUG ((DEBUG_ERROR, "%a: failed to update resource to: %s: %r\n", __f= unc__, Uri, Status)); + } else { + // + // Get latest ETag on URI and keep it in variable. + // + SetEtagFromUri (Private->RedfishService, Private->Uri, TRUE); } =20 // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - RedfishHttpResetResource (Uri); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -340,7 +310,7 @@ RedfishResourceCheck ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -366,15 +336,8 @@ RedfishResourceCheck ( // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -417,7 +380,7 @@ RedfishResourceIdentify ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -438,15 +401,8 @@ RedfishResourceIdentify ( // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -528,11 +484,6 @@ RedfishResourceStop ( Private->RedfishService =3D NULL; } =20 - if (Private->Payload !=3D NULL) { - RedfishCleanupPayload (Private->Payload); - Private->Payload =3D NULL; - } - return EFI_SUCCESS; } =20 --=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 (#116151): https://edk2.groups.io/g/devel/message/116151 Mute This Topic: https://groups.io/mt/104640234/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-