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 4A1DB7803CC for ; Mon, 8 Jan 2024 02:42:54 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=6llDLJW05DO6heMZUYOddFHErhQBRd1LKDREPf4IMcA=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1704681773; v=1; b=WJ2XLDwF2lWznSz1zwxxLvjc/oj/tbgBAtOqKnoneYLEdxpGuQ+wmASty+W7kUfno5ex3g22 GO3Zz+MBeoO7N/9QijAdT9+EXz/y7FZvH9j9Th66Ns0u3lvOn/uXGFtfp+pvee4pu8Skmr/Tdsb agWe8X+I8VNvRQ+CIkyFLCmE= X-Received: by 127.0.0.2 with SMTP id ruBiYY7687511xoJpW6batyC; Sun, 07 Jan 2024 18:42:53 -0800 X-Received: from NAM02-BN1-obe.outbound.protection.outlook.com (NAM02-BN1-obe.outbound.protection.outlook.com [40.107.212.42]) by mx.groups.io with SMTP id smtpd.web10.31334.1704681771995874788 for ; Sun, 07 Jan 2024 18:42:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GHm7jTqsK019W6ngzGJQSRaxF3ZvCFKe+cDFzoBoOnTYQOrFparpGAdcOkz7ex3NFt8RrWy/ZtHGsApR1ZnKtDsj9GrHhlUDwR4OewhSi0pKmJd+mma5VWMu2inDrMoCROEwlddkhyZoJw5++Dd/99ko9JYW+2EC0uLVBXavr9auZ7YI3VCeVl5Pe3NEzXiVjOZy4ZXhGUFV4NFm6Q0e/D0/0LYPUGdUDxjIX8sGVU79O3IzL3vOAqlUyUGKn7hxR0kCa2XIRN9bCyO5euIxgCo0iAYRynRbtnTCe22uObh+FeQqRUQAkKonjuPbU05WlYLTa1olYhbIstwmpE67+Q== 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=dVaSIhYeObT1N7cAKAbzt7Gul+ZQd+1lnuC8dXPvrrE=; b=j5J3s4+abjhKiDyWNXPk7GJ+ewiZrOUoRea7DPm84Jngs3JuqQrjQpxzwy/uS6ELK14utfJ1y3Vd0oktkrjAqFr9crTrYl2/NhOpmK5AK0IPkPANVlo5mvrVkOmSddxS42QzX6xQV7b4tJifwZZWr5tzeyalf29C4Nacfaj54MtVR/zhTfQ2SPBsZOSq7dx0nTayq69JT4xgUpfBQd6WJTt8ODfH/bMSaNFYcsoNH9hrOXImi1MZeyXCrGnUZF6RfdI9vMhORb0CGCC9jILNoDk4EJSkV8dqf0Nr2a4ECpD0CVuhKGegeyVX81CCgLu5PEtqJA0KqFi2kNhcMMcpSA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com (2603:10b6:408:200::8) by DM6PR12MB4514.namprd12.prod.outlook.com (2603:10b6:5:2a7::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan 2024 02:42:45 +0000 X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::67bd:f1b9:58a3:d2e6]) by LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::67bd:f1b9:58a3:d2e6%7]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024 02:42:44 +0000 From: "Chang, Abner via groups.io" To: Igor Kulchytskyy , "devel@edk2.groups.io" CC: Nickle Wang , Mike Maslenkin Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH V3] RedfishClientPkg: Add ETag PCD and revise Redfish ETag functions Thread-Topic: [EXTERNAL] [edk2-redfish-client][PATCH V3] RedfishClientPkg: Add ETag PCD and revise Redfish ETag functions Thread-Index: AQHaPu23T2WssRNBUky7AzsCmisLSbDJvYWggAV9MzA= Date: Mon, 8 Jan 2024 02:42:44 +0000 Message-ID: References: <20240104090901.1624-1-abner.chang@amd.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=3f4ef099-07fd-4c9d-a951-641841bc3c5b;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2024-01-08T02:42:14Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV8PR12MB9452:EE_|DM6PR12MB4514:EE_ x-ms-office365-filtering-correlation-id: 41b57f9f-048f-49d8-82c5-08dc0ff37e23 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: zAU5in7PrjZhEZibvuhuso7NCkjVkebemfQUAB0AnIs7wg/+7yKI32yr2HSSgoMSUdcXmcTS0xNZaunE+cQMf2tah52hLjLJKelRWvEXvL/1gfgK+60qhl58a4KquUV5HqQEgy3IHQudqEuILyWOH3R97bV1uUn+0OTc92S5hgRcDEeDpxQMOqGbuH1LSI5D9QG+icxHWzMwR8aMHLuFxOLF+GZxk52Sxxtn5IPZ9GG2me+SI/iV2rRH45LKatNXTQz7ijIW7xCWKCQtBSuuHzVjijesWtlLv/VtP/XjEHUNaPT45Y+MCUczqxN2oBTzOGb9jviV5sm+zaXSdji6ZU7DwSQPXtAvDFM7XwT/0DFnAMrzWiKZZ5W+CLge0YgOTeTSNCM38e00Igs727z2wRkxNqUHxmF0ZzkjhJnxlZUoGy3rdjPKt/UK4iBKbwqmFjDtxA7xS1NRnNxcz0WrLC2Nn3YT5CDwe/wrPWZ7orNCgt2JoUKd2c9s2MZL4u1a3j4vuob07MRNdUY1rtIGY/atjDS4ic9NlJQKfcniWaI45VFcQnV4m7x3EdeOVJgybOQ5VGxRkBWtq5QaIc05hIh6DifER50FHvjsWfBXNWEZS4GSfXSzFnaKw6HbZVFU7CdIsxhrInW+mYxYyYf1mj4DSDgzgamx2Q3fkRLVqD8= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Qikb9YXNoweOhIA1oJQr1XaRVlZRV6fs3dtqnKhXGktI+4eCil3z7JSPXJyL?= =?us-ascii?Q?13+uCuMFUr46vrEZUBfrEtEXqKEI1hnvKxcU65f8l0vh3S5M4lelh4tohN1Z?= =?us-ascii?Q?jovtA76D6RA9NBNGW+yaQuaxXVLCVpmY/AbHLDpD9hv6OFCafLdW41qR8ZT8?= =?us-ascii?Q?Pb2ttsc1yr8ufCjUj06INQ18+qRjK18XT39IBNm6hqVvD6KQSBthFrrbV+IU?= =?us-ascii?Q?PU4UqDVZV/+Td2uLZeB0hfvsJVb3GCifdkZdxBYySDN08yyWxocrdfS/HU8y?= =?us-ascii?Q?TS4QqdlKqbaC188QrIxPosvwR/V9/D1Kusi+g1RXlYcsQrQYji7StNPDHzqJ?= =?us-ascii?Q?MQus5mHWpN8zzHfS0QQri4D8Fq42JkCXPo/S+ZAhPqJDEZwmyAKZjU51DBwB?= =?us-ascii?Q?RZYs82d7YsGRHYFEVaIbZpIaxDHPP6zhKqij//V7a17RzW9ipXdNFL3Gc6uJ?= =?us-ascii?Q?sAltspEr2bpNZxxoWa2Y3ejRMwUShb6/JYJ9hJZIh2CNDvMcsoeBITkqV1mh?= =?us-ascii?Q?O0wIANeoYPwckYy+cVZv+joziHo6hcopeqnPY/igiezSyUWm07BZrawICSUz?= =?us-ascii?Q?lwyUYBoYi8XixVh0q2fbbssiqr0El207VyxJ56ObfT469WjAe0TK8nX0/IAg?= =?us-ascii?Q?agTYSASB3vSIxe7nCMAInDhKOxakH1n80adVOP0vug5jsCYMscyDUYIV83VW?= =?us-ascii?Q?aNpCF0oS9qLRQQAOp8YB+vgcXY9DXSRIw4UFi7BAi/77ZdIqOIuNtIJ+uc0z?= =?us-ascii?Q?gfg+jpmseLHqcM2Pl2OYRrSfYasWKlbw4J6sC3bykbbUANxTMgZh+4RJvVMz?= =?us-ascii?Q?Jgj26DhhhZnO26Gfi9hKTNyxhfEDTEdcaEWh7aVM43MyS6ITp/2aQ3LV6+00?= =?us-ascii?Q?+BvwmeOvS8tcK6hU23vysOG96bIWxwzVD2O7XP25tpj6/McJ+AcdzpPlXlR5?= =?us-ascii?Q?eQ7Ll93EoD1XwQtysD3o747jF9qC1Qcoux5kcsjQ87fo6AlSb5awlsNt20jL?= =?us-ascii?Q?udB7JRoRGugA7lDFPKHY0Q6/eGTskc04CZksmDOA2XsecgRRwQ0MiEvp7ZZD?= =?us-ascii?Q?eQqfLneLjgP2eLHs03L5CvJFAc87kSqqZF8tEDbrpE0ntNz2x8lpj5K8JgWC?= =?us-ascii?Q?Cea4+XJAfffBct4jA7CKbO8YGG8P4a9AQ6SxUyF/lI7MR9qeH6t4Z/bvY/rz?= =?us-ascii?Q?t5ceQXE8wNQcQJypya47iU36htw3csuFHQc1j5PQ7XjuFIx5zFww4wHAd2z/?= =?us-ascii?Q?zntDEnKxbrJzAKyoSBq4qT0eHI6dNJxWUztB5toERsxkY5g7gPw9k8htVSjA?= =?us-ascii?Q?OD0uclUB/i2Qvg3Q7ZfbFSKqH77ugAa0cc4ZbgXrnZOySQvqYp7YzXQoGXSx?= =?us-ascii?Q?34wd/OYYWPu+YkMJY5ySUevgmfuCj66uxyzA0RmNL3qthyTGsAKKmv6PMB9h?= =?us-ascii?Q?DHhQGkpURCSJea37Pr8sTHBEsSVW/xcdXtv32FBkG8ATqVMM5s7ksdr/Sj2y?= =?us-ascii?Q?iQ3b3gbnEXEfE8s796Mn+1AV5GlSLDrqF2fmP0avhuwtdJBNVsbNGh7jhQ5f?= =?us-ascii?Q?AJbGbh9vN+4WXQOIFI4=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9452.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 41b57f9f-048f-49d8-82c5-08dc0ff37e23 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2024 02:42:44.7375 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: H8MLxG5p4xP3KXiYFNynL+lSqKye+BIj6Gvadn8zECUamp/bSvPnCv28Rbe7CQWjiR41yftLd9vLK2LsfjYLVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4514 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,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: k2ixQTGs38oX6dhnVEeLLXxbx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=WJ2XLDwF; 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 [AMD Official Use Only - General] Thanks for catching that, Igor. Will send out V4 for this change. Abner > -----Original Message----- > From: Igor Kulchytskyy > Sent: Thursday, January 4, 2024 10:59 PM > To: Chang, Abner ; devel@edk2.groups.io > Cc: Nickle Wang ; Mike Maslenkin > > Subject: RE: [EXTERNAL] [edk2-redfish-client][PATCH V3] RedfishClientPkg: > Add ETag PCD and revise Redfish ETag functions > > Caution: This message originated from an External Source. Use proper caut= ion > when opening attachments, clicking links, or responding. > > > Hi Abner, > Some small correction in comments syntax (see below). > Thank you, > Igor > > -----Original Message----- > From: abner.chang@amd.com > Sent: Thursday, January 4, 2024 4:09 AM > To: devel@edk2.groups.io > Cc: Nickle Wang ; Igor Kulchytskyy ; > Mike Maslenkin > Subject: [EXTERNAL] [edk2-redfish-client][PATCH V3] RedfishClientPkg: Add > ETag PCD and revise Redfish ETag functions > > > **CAUTION: The e-mail below is from an external source. Please exercise > caution before opening attachments, clicking links, or following guidance= .** > > From: Abner Chang > > Add PCD to disable ETag capability for the case Redfish > service doesn't support ETag. > > Signed-off-by: Abner Chang > Cc: Nickle Wang > Cc: Igor Kulchytskyy > Cc: Mike Maslenkin > --- > RedfishClientPkg/RedfishClientPkg.dec | 3 + > .../RedfishFeatureUtilityLib.inf | 2 + > .../Library/RedfishFeatureUtilityLib.h | 47 +++- > .../Features/Bios/v1_0_9/Dxe/BiosDxe.c | 19 +- > .../v1_0_4/Common/BootOptionCommon.c | 5 +- > .../BootOption/v1_0_4/Dxe/BootOptionDxe.c | 17 +- > .../v1_5_0/Dxe/ComputerSystemDxe.c | 13 +- > .../Features/Memory/V1_7_1/Dxe/MemoryDxe.c | 17 +- > .../RedfishFeatureUtilityLib.c | 209 ++++++++++++------ > 9 files changed, 204 insertions(+), 128 deletions(-) > > diff --git a/RedfishClientPkg/RedfishClientPkg.dec > b/RedfishClientPkg/RedfishClientPkg.dec > index b350facae0..ce3b6d9752 100644 > --- a/RedfishClientPkg/RedfishClientPkg.dec > +++ b/RedfishClientPkg/RedfishClientPkg.dec > @@ -3,6 +3,7 @@ > # > # (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP
> # Copyright (c) 2022-2024, NVIDIA CORPORATION & AFFILIATES. All rights > reserved. > +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > # > # SPDX-License-Identifier: BSD-2-Clause-Patent > ## > @@ -76,6 +77,8 @@ > > gEfiRedfishClientPkgTokenSpaceGuid.PcdDefaultRedfishVersion|L"v1"|VOID* > |0x10000004 > ## The number of seconds that the firmware will wait before system reb= oot > > gEfiRedfishClientPkgTokenSpaceGuid.PcdRedfishSystemRebootTimeout|5|UI > NT16|0x20000002 > + ## Default capability of Redfish service side ETAG support > + > gEfiRedfishClientPkgTokenSpaceGuid.PcdRedfishServiceEtagSupported|TRUE| > BOOLEAN|0x10000005 > > [PcdsDynamicEx] > ## The flag used to indicate that system reboot is required due to sys= tem > configuration change > diff --git > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib.i > nf > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib.i > nf > index 718273b248..63330c8e9d 100644 > --- > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib.i > nf > +++ > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib.i > nf > @@ -3,6 +3,7 @@ > # > # (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
> # Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights > reserved. > +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.<= BR> > # > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > @@ -54,6 +55,7 @@ > > [Pcd] > gEfiRedfishClientPkgTokenSpaceGuid.PcdRedfishSystemRebootRequired > + gEfiRedfishClientPkgTokenSpaceGuid.PcdRedfishServiceEtagSupported > > [Guids] > > diff --git a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > index 9513a65617..0f8aede5c4 100644 > --- a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > +++ b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > @@ -3,6 +3,7 @@ > > (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP
> Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights > reserved. > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -81,7 +82,7 @@ CopyConfiglanguageList ( > > /** > > - Get number of node from the string. Node is seperated by '/'. > + Get number of node from the string. Node is separated by '/'. > > @param[in] NodeString The node string to parse. > > @@ -559,6 +560,19 @@ GetEtagWithUri ( > IN EFI_STRING Uri > ); > > +/** > + > + This function returns a boolean of ETAG support on Redfish service sid= e. > + > + @retval TRUE ETAG is supported on Redfish service. > + @retval FALSE ETAG is not supported on Redfish service. > + > +**/ > +BOOLEAN > +CheckIsServerEtagSupported ( > + VOID > + ); > + > /** > > Get @odata.id from give HTTP payload. It's call responsibility to rele= ase > returned buffer. > @@ -931,22 +945,33 @@ CompareRedfishPropertyVagueValues ( > ); > > /** > + Find "ETag" from either HTTP header or Redfish response. > > - Find "ETag" and "Location" from either HTTP header or Redfish response= . > + @param[in] Response HTTP response > + @param[out] Etag String buffer to return ETag > > - @param[in] Response HTTP response > - @param[out] Etag String buffer to return ETag > - @param[out] Location String buffer to return Location > + @retval EFI_SUCCESS ETag is returned in Etag > + @retval EFI_UNSUPPORTED ETag is unsupported > + @retval EFI_INVALID_PARAMETER Response, Etag or both are NULL. > > - @retval EFI_SUCCESS Data is found and returned. > - @retval Others Errors occur. > +**/ > +EFI_STATUS > +GetHttpResponseEtag ( > + IN REDFISH_RESPONSE *Response, > + OUT CHAR8 **Etag > + ); > + > +/** > + Find "Location" from either HTTP header or Redfish response. > + > + @param[in] Response HTTP response > + @param[out] Location String buffer to return Location > > **/ > EFI_STATUS > -GetEtagAndLocation ( > - IN REDFISH_RESPONSE *Response, > - OUT CHAR8 **Etag, OPTIONAL > - OUT EFI_STRING *Location OPTIONAL > +GetHttpResponseLocation ( > + IN REDFISH_RESPONSE *Response, > + OUT EFI_STRING *Location > ); > > /** > diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > index 2a49c5cd22..f40f2d85af 100644 > --- a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c > @@ -3,6 +3,7 @@ > > (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
> Copyright (c) 2022-2024, NVIDIA CORPORATION. All rights reserved. > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -153,14 +154,10 @@ RedfishResourceConsumeResource ( > ASSERT (Private->Json !=3D NULL); > > // > - // Find etag in HTTP response header > + // Searching for etag in HTTP response header > // > - Etag =3D NULL; > - Status =3D GetEtagAndLocation (ExpectedResponse, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, failed to get ETag from HTTP header\n", > __func__)); > - } > - > + Etag =3D NULL; > + GetHttpResponseEtag (ExpectedResponse, &Etag); > Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag)= ; > if (EFI_ERROR (Status)) { > if (Status !=3D EFI_ALREADY_STARTED) { > @@ -365,12 +362,8 @@ RedfishResourceCheck ( > // > // Find etag in HTTP response header > // > - Etag =3D NULL; > - Status =3D GetEtagAndLocation (&Response, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", > __func__)); > - } > - > + Etag =3D NULL; > + GetHttpResponseEtag (&Response, &Etag); > Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a, failed to check resource from: %s: %r\n", > __func__, Uri, Status)); > diff --git > a/RedfishClientPkg/Features/BootOption/v1_0_4/Common/BootOptionCom > mon.c > b/RedfishClientPkg/Features/BootOption/v1_0_4/Common/BootOptionCom > mon.c > index 0d4c2162c6..0b9f2bf284 100644 > --- > a/RedfishClientPkg/Features/BootOption/v1_0_4/Common/BootOptionCom > mon.c > +++ > b/RedfishClientPkg/Features/BootOption/v1_0_4/Common/BootOptionCom > mon.c > @@ -3,6 +3,7 @@ > > (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
> Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserv= ed. > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -455,9 +456,9 @@ RedfishProvisioningResourceCommon ( > } > > // > - // per Redfish spec. the URL of new resource will be returned in "Loca= tion" > header. > + // Per Redfish spec. the URL of new resource will be returned in "Loca= tion" > header. > // > - Status =3D GetEtagAndLocation (&Response, NULL, &NewResourceLocation); > + Status =3D GetHttpResponseLocation (&Response, &NewResourceLocation); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a: cannot find new location: %r\n", __func__, > Status)); > goto RELEASE_RESOURCE; > diff --git > a/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.c > b/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.c > index ba090c51d3..dc2bd9da85 100644 > --- a/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.c > +++ b/RedfishClientPkg/Features/BootOption/v1_0_4/Dxe/BootOptionDxe.c > @@ -3,6 +3,7 @@ > > (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
> Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserv= ed. > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -154,12 +155,8 @@ RedfishResourceConsumeResource ( > // > // Find etag in HTTP response header > // > - Etag =3D NULL; > - Status =3D GetEtagAndLocation (ExpectedResponse, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", > __func__)); > - } > - > + Etag =3D NULL; > + GetHttpResponseEtag (ExpectedResponse, &Etag); > Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag)= ; > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n"= , > __func__, Private->Uri, Status)); > @@ -358,12 +355,8 @@ RedfishResourceCheck ( > // > // Find etag in HTTP response header > // > - Etag =3D NULL; > - Status =3D GetEtagAndLocation (&Response, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", > __func__)); > - } > - > + Etag =3D NULL; > + GetHttpResponseEtag (&Response, &Etag); > Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); > if (EFI_ERROR (Status)) { > DEBUG ((REDFISH_BOOT_OPTION_DEBUG_TRACE, "%a: failed to check > resource from: %s: %r\n", __func__, Uri, Status)); > diff --git > a/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSyste > mDxe.c > b/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSyste > mDxe.c > index 0bbaa92bf4..5927b5fa7a 100644 > --- > a/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSyste > mDxe.c > +++ > b/RedfishClientPkg/Features/ComputerSystem/v1_5_0/Dxe/ComputerSyste > mDxe.c > @@ -3,6 +3,7 @@ > > (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
> Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights > reserved. > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -150,11 +151,7 @@ RedfishResourceConsumeResource ( > // Find etag in HTTP response header > // > Etag =3D NULL; > - Status =3D GetEtagAndLocation (ExpectedResponse, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, failed to get ETag from HTTP header\n", > __func__)); > - } > - > + GetHttpResponseEtag (ExpectedResponse, &Etag); > Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag)= ; > if (EFI_ERROR (Status)) { > if (Status !=3D EFI_ALREADY_STARTED) { > @@ -360,11 +357,7 @@ RedfishResourceCheck ( > // Find etag in HTTP response header > // > Etag =3D NULL; > - Status =3D GetEtagAndLocation (&Response, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", > __func__)); > - } > - > + GetHttpResponseEtag (&Response, &Etag); > Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a, failed to check resource from: %s: %r\n", > __func__, Uri, Status)); > diff --git a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c > b/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c > index 9230078051..4a6e342879 100644 > --- a/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c > +++ b/RedfishClientPkg/Features/Memory/V1_7_1/Dxe/MemoryDxe.c > @@ -3,6 +3,7 @@ > > (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
> Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights > reserved. > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -149,12 +150,8 @@ RedfishResourceConsumeResource ( > // > // Find etag in HTTP response header > // > - Etag =3D NULL; > - Status =3D GetEtagAndLocation (ExpectedResponse, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a, failed to get ETag from HTTP header\n", > __func__)); > - } > - > + Etag =3D NULL; > + GetHttpResponseEtag (ExpectedResponse, &Etag); > Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag)= ; > if (EFI_ERROR (Status)) { > if (Status !=3D EFI_ALREADY_STARTED) { > @@ -359,12 +356,8 @@ RedfishResourceCheck ( > // > // Find etag in HTTP response header > // > - Etag =3D NULL; > - Status =3D GetEtagAndLocation (&Response, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", > __func__)); > - } > - > + Etag =3D NULL; > + GetHttpResponseEtag (&Response, &Etag); > Status =3D RedfishCheckResourceCommon (Private, Private->Json, Etag); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a, failed to check resource from: %s: %r\n", > __func__, Uri, Status)); > diff --git > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib. > c > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib. > c > index 1c2d40f622..f767b4d875 100644 > --- > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib. > c > +++ > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtility= Lib. > c > @@ -3,6 +3,7 @@ > > (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
> Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights > reserved. > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -133,6 +134,11 @@ SetEtagFromUri ( > REDFISH_RESPONSE Response; > EFI_STRING PendingSettingUri; > > + if (!CheckIsServerEtagSupported ()) { > + DEBUG ((DEBUG_INFO, "%a: WARNING - ETAG is not supported\n", > __func__)); > + return EFI_SUCCESS; > + } > + > if ((RedfishService =3D=3D NULL) || IS_EMPTY_STRING (Uri)) { > return EFI_INVALID_PARAMETER; > } > @@ -157,9 +163,9 @@ SetEtagFromUri ( > // > // Find etag in HTTP response header > // > - Status =3D GetEtagAndLocation (&Response, &Etag, NULL); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, "%a: failed to get ETag from HTTP header\n", > __func__)); > + Status =3D GetHttpResponseEtag (&Response, &Etag); > + if (EFI_ERROR (Status) && (Status !=3D EFI_UNSUPPORTED)) { > + DEBUG ((DEBUG_ERROR, "%a: Failed to get ETag from HTTP header\n", > __func__)); > Status =3D EFI_NOT_FOUND; > goto ON_RELEASE; > } > @@ -241,6 +247,11 @@ SetEtagWithUri ( > EFI_STATUS Status; > CHAR8 *AsciiUri; > > + if (!CheckIsServerEtagSupported ()) { > + DEBUG ((DEBUG_INFO, "%a: WARNING - ETAG is not supported\n", > __func__)); > + return EFI_SUCCESS; > + } > + > if (IS_EMPTY_STRING (EtagStr) || IS_EMPTY_STRING (Uri)) { > return EFI_INVALID_PARAMETER; > } > @@ -286,6 +297,11 @@ GetEtagWithUri ( > return NULL; > } > > + if (!CheckIsServerEtagSupported ()) { > + DEBUG ((DEBUG_INFO, "%a: WARNING - ETAG is not supported\n", > __func__)); > + return NULL; > + } > + > Status =3D RedfishLocateProtocol ((VOID **)&mEtagProtocol, > &gEdkIIRedfishETagProtocolGuid); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a: fail to locate gEdkIIRedfishETagProtocolGu= id: > %r\n", __func__, Status)); > @@ -1726,44 +1742,39 @@ > RedfishFeatureGetUnifiedArrayTypeConfigureLang ( > } > > /** > + Find "ETag" from either HTTP header or Redfish response. > > - Find "ETag" and "Location" from either HTTP header or Redfish response= . > + @param[in] Response HTTP response > + @param[out] Etag String buffer to return ETag > > - @param[in] Response HTTP response > - @param[out] Etag String buffer to return ETag > - @param[out] Location String buffer to return Location > - > - @retval EFI_SUCCESS Data is found and returned. > - @retval Others Errors occur. > + @retval EFI_SUCCESS ETag is returned in Etag > + @retval EFI_UNSUPPORTED ETag is unsupported > + @retval EFI_INVALID_PARAMETER Response, Etag or both are NULL. > > **/ > EFI_STATUS > -GetEtagAndLocation ( > - IN REDFISH_RESPONSE *Response, > - OUT CHAR8 **Etag, OPTIONAL > - OUT EFI_STRING *Location OPTIONAL > +GetHttpResponseEtag ( > + IN REDFISH_RESPONSE *Response, > + OUT CHAR8 **Etag > ) > { > + EFI_STATUS Status; > EDKII_JSON_VALUE JsonValue; > EDKII_JSON_VALUE OdataValue; > CHAR8 *OdataString; > - CHAR8 *AsciiLocation; > EFI_HTTP_HEADER *Header; > - EFI_STATUS Status; > > - if (Response =3D=3D NULL) { > + if ((Response =3D=3D NULL) || (Etag =3D=3D NULL)) { > return EFI_INVALID_PARAMETER; > } > > - if ((Etag =3D=3D NULL) && (Location =3D=3D NULL)) { > - return EFI_SUCCESS; > - } > - > Status =3D EFI_SUCCESS; > - > - if (Etag !=3D NULL) { > - *Etag =3D NULL; > - > + *Etag =3D NULL; > + if (!CheckIsServerEtagSupported ()) { > + // Don't look for ETAG header or property in this case. > + DEBUG ((DEBUG_INFO, "%a: WARNING - No ETag support on Redfish > service.\n", __func__)); > + return EFI_UNSUPPORTED; > + } else { > if (*(Response->StatusCode) =3D=3D HTTP_STATUS_200_OK) { > Header =3D HttpFindHeader (Response->HeaderCount, Response->Header= s, > HTTP_HEADER_ETAG); > if (Header !=3D NULL) { > @@ -1793,51 +1804,94 @@ GetEtagAndLocation ( > > if (*Etag =3D=3D NULL) { > Status =3D EFI_NOT_FOUND; > + DEBUG ((DEBUG_ERROR, "%a: Failed to retrieve ETag from HTTP respon= se > paylaod.\n", __func__)); > } > } > > - if (Location !=3D NULL) { > - *Location =3D NULL; > - AsciiLocation =3D NULL; > + return Status; > +} > > - if (*(Response->StatusCode) =3D=3D HTTP_STATUS_200_OK) { > - Header =3D HttpFindHeader (Response->HeaderCount, Response->Header= s, > HTTP_HEADER_LOCATION); > - if (Header !=3D NULL) { > - AsciiLocation =3D AllocateCopyPool (AsciiStrSize (Header->FieldV= alue), > Header->FieldValue); > - ASSERT (AsciiLocation !=3D NULL); > - } > +/** > + Find "Location" from either HTTP header or Redfish response. > + > + @param[in] Response HTTP response > + @param[out] Location String buffer to return Location > + > +**/ > +EFI_STATUS > +GetHttpResponseLocation ( > + IN REDFISH_RESPONSE *Response, > + OUT EFI_STRING *Location > + ) > +{ > + EFI_STATUS Status; > + EDKII_JSON_VALUE JsonValue; > + EDKII_JSON_VALUE OdataValue; > + CHAR8 *OdataString; > + CHAR8 *AsciiLocation; > + EFI_HTTP_HEADER *Header; > + > + if ((Response =3D=3D NULL) || (Location =3D=3D NULL)) { > + return EFI_INVALID_PARAMETER; > + } > + > + Status =3D EFI_SUCCESS; > + *Location =3D NULL; > + AsciiLocation =3D NULL; > + if (*(Response->StatusCode) =3D=3D HTTP_STATUS_200_OK) { > + Header =3D HttpFindHeader (Response->HeaderCount, Response->Headers, > HTTP_HEADER_LOCATION); > + if (Header !=3D NULL) { > + AsciiLocation =3D AllocateCopyPool (AsciiStrSize (Header->FieldVal= ue), > Header->FieldValue); > + ASSERT (AsciiLocation !=3D NULL); > } > + } > > - // > - // No header is returned. Search payload for location. > - // > - if ((*Location =3D=3D NULL) && (Response->Payload !=3D NULL)) { > - JsonValue =3D RedfishJsonInPayload (Response->Payload); > - if (JsonValue !=3D NULL) { > - OdataValue =3D JsonObjectGetValue (JsonValueGetObject (JsonValue= ), > "@odata.id"); > - if (OdataValue !=3D NULL) { > - OdataString =3D (CHAR8 *)JsonValueGetAsciiString (OdataValue); > - if (OdataString !=3D NULL) { > - AsciiLocation =3D AllocateCopyPool (AsciiStrSize (OdataStrin= g), > OdataString); > - ASSERT (AsciiLocation !=3D NULL); > - } > + // > + // No header is returned. Search payload for location. > + // > + if ((*Location =3D=3D NULL) && (Response->Payload !=3D NULL)) { > + JsonValue =3D RedfishJsonInPayload (Response->Payload); > + if (JsonValue !=3D NULL) { > + OdataValue =3D JsonObjectGetValue (JsonValueGetObject (JsonValue), > "@odata.id"); > + if (OdataValue !=3D NULL) { > + OdataString =3D (CHAR8 *)JsonValueGetAsciiString (OdataValue); > + if (OdataString !=3D NULL) { > + AsciiLocation =3D AllocateCopyPool (AsciiStrSize (OdataString)= , > OdataString); > + ASSERT (AsciiLocation !=3D NULL); > } > - > - JsonValueFree (JsonValue); > } > - } > > - if (AsciiLocation !=3D NULL) { > - *Location =3D StrAsciiToUnicode (AsciiLocation); > - FreePool (AsciiLocation); > - } else { > - Status =3D EFI_NOT_FOUND; > + JsonValueFree (JsonValue); > } > } > > + if (AsciiLocation !=3D NULL) { > + *Location =3D StrAsciiToUnicode (AsciiLocation); > + FreePool (AsciiLocation); > + } else { > + Status =3D EFI_NOT_FOUND; > + DEBUG ((DEBUG_ERROR, "%a: Failed to retrieve Location from HTTP > response paylaod.\n", __func__)); > + } > + > return Status; > } > > +/** > + > + This function returns a boolean of ETAG support on Redfish service sid= e. > + > + @retval TRUE ETAG is supported on Redfish service. > + @retval FALSE ETAG is not supported on Redfish service. > + > +**/ > +BOOLEAN > +CheckIsServerEtagSupported ( > + VOID > + ) > +{ > + return FixedPcdGetBool (PcdRedfishServiceEtagSupported); > +} > + > /** > > Create HTTP payload and send them to redfish service with PATCH method= . > @@ -1861,7 +1915,7 @@ CreatePayloadToPatchResource ( > { > REDFISH_PAYLOAD Payload; > EDKII_JSON_VALUE ResourceJsonValue; > - REDFISH_RESPONSE PostResponse; > + REDFISH_RESPONSE PatchResponse; > EFI_STATUS Status; > > if ((Service =3D=3D NULL) || (TargetPayload =3D=3D NULL) || IS_EMPTY_S= TRING > (Json)) { > @@ -1876,8 +1930,8 @@ CreatePayloadToPatchResource ( > goto EXIT_FREE_JSON_VALUE; > } > > - ZeroMem (&PostResponse, sizeof (REDFISH_RESPONSE)); > - Status =3D RedfishPatchToPayload (TargetPayload, Payload, &PostRespons= e); > + ZeroMem (&PatchResponse, sizeof (REDFISH_RESPONSE)); > + Status =3D RedfishPatchToPayload (TargetPayload, Payload, &PatchRespon= se); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a:%d Failed to PATCH payload to Redfish > service.\n", __func__, __LINE__)); > > @@ -1885,7 +1939,7 @@ CreatePayloadToPatchResource ( > DEBUG ((DEBUG_ERROR, "%a: Request:\n", __func__)); > DumpRedfishPayload (DEBUG_ERROR, Payload); > DEBUG ((DEBUG_ERROR, "%a: Response:\n", __func__)); > - DumpRedfishResponse (__func__, DEBUG_ERROR, &PostResponse); > + DumpRedfishResponse (__func__, DEBUG_ERROR, &PatchResponse); > DEBUG_CODE_END (); > goto EXIT_FREE_JSON_VALUE; > } > @@ -1893,16 +1947,20 @@ CreatePayloadToPatchResource ( > // > // Find ETag > // > - Status =3D GetEtagAndLocation (&PostResponse, Etag, NULL); > - if (EFI_ERROR (Status)) { > + Status =3D GetHttpResponseEtag (&PatchResponse, Etag); > + if (Status =3D=3D EFI_UNSUPPORTED) { > + Status =3D EFI_SUCCESS; > + DEBUG ((DEBUG_INFO, "%a: WARNING - ETAG is not supported on Redfish > service.\n", __func__)); > + } else { > Status =3D EFI_DEVICE_ERROR; > + DEBUG ((DEBUG_ERROR, "%a: Fail to get Location header nor proerty fr= om > HTTP response payload.\n", __func__)); > Igor: > DEBUG ((DEBUG_ERROR, "%a: Fail to get Location header nor Location > property from HTTP response payload.\n", __func__)); > > } > > RedfishFreeResponse ( > - PostResponse.StatusCode, > - PostResponse.HeaderCount, > - PostResponse.Headers, > - PostResponse.Payload > + PatchResponse.StatusCode, > + PatchResponse.HeaderCount, > + PatchResponse.Headers, > + PatchResponse.Payload > ); > > EXIT_FREE_JSON_VALUE: > @@ -1935,7 +1993,7 @@ CreatePayloadToPostResource ( > IN REDFISH_PAYLOAD *TargetPayload, > IN CHAR8 *Json, > OUT EFI_STRING *Location, > - OUT CHAR8 **Etag > + OUT CHAR8 **Etag OPTIONAL > ) > { > REDFISH_PAYLOAD Payload; > @@ -1943,7 +2001,7 @@ CreatePayloadToPostResource ( > REDFISH_RESPONSE PostResponse; > EFI_STATUS Status; > > - if ((Service =3D=3D NULL) || (TargetPayload =3D=3D NULL) || IS_EMPTY_S= TRING (Json) > || (Location =3D=3D NULL) || (Etag =3D=3D NULL)) { > + if ((Service =3D=3D NULL) || (TargetPayload =3D=3D NULL) || IS_EMPTY_S= TRING > (Json) || (Location =3D=3D NULL)) { > return EFI_INVALID_PARAMETER; > } > > @@ -1970,12 +2028,22 @@ CreatePayloadToPostResource ( > goto EXIT_FREE_JSON_VALUE; > } > > + Status =3D GetHttpResponseEtag (&PostResponse, Etag); > + if (Status =3D=3D EFI_UNSUPPORTED) { > + Status =3D EFI_SUCCESS; > + DEBUG ((DEBUG_INFO, "%a: WARNING - ETAG is not supported on Redfish > service.\n", __func__)); > + } else if (EFI_ERROR (Status)) { > + Status =3D EFI_DEVICE_ERROR; > + DEBUG ((DEBUG_ERROR, "%a: Fail to get ETAG header nor ETAG > propertyfrom HTTP response payload.\n", __func__)); > Igor: > DEBUG ((DEBUG_ERROR, "%a: Fail to get ETAG header nor ETAG property > from HTTP response payload.\n", __func__)); > + } > + > // > // per Redfish spec. the URL of new resource will be returned in "Loca= tion" > header. > // > - Status =3D GetEtagAndLocation (&PostResponse, Etag, Location); > + Status =3D GetHttpResponseLocation (&PostResponse, Location); > if (EFI_ERROR (Status)) { > Status =3D EFI_DEVICE_ERROR; > + DEBUG ((DEBUG_ERROR, "%a: Fail to get Location header nor proerty fr= om > HTTP response payload.\n", __func__)); > Igor: > DEBUG ((DEBUG_ERROR, "%a: Fail to get Location header nor Location > property from HTTP response payload.\n", __func__)); > } > > RedfishFreeResponse ( > @@ -3117,6 +3185,11 @@ CheckEtag ( > { > CHAR8 *EtagInDb; > > + if (!CheckIsServerEtagSupported ()) { > + DEBUG ((DEBUG_INFO, "%a: WARNING - ETAG is not supported, always > returns FALSE to consume resource (Performance would be reduced).\n", > __func__)); > + return FALSE; > + } > + > if (IS_EMPTY_STRING (Uri)) { > return FALSE; > } > -- > 2.37.1.windows.1 > > -The information contained in this message may be confidential and > proprietary to American Megatrends (AMI). This communication is intended > to be read only by the individual or entity to whom it is addressed or by= their > designee. If the reader of this message is not the intended recipient, yo= u are > on notice that any distribution of this message, in any form, is strictly > prohibited. Please promptly notify the sender by reply e-mail or by telep= hone > at 770-246-8600, and then delete or destroy all copies of the transmissio= n. -=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 (#113343): https://edk2.groups.io/g/devel/message/113343 Mute This Topic: https://groups.io/mt/103519370/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-