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 101B1D8118B for ; Tue, 14 Nov 2023 14:29:38 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=5LQHav1dd7ReZNmwS1cY6Fa9ZTwyYtGGB77cbhs407E=; 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=1699972177; v=1; b=EhaVgWwX3lvRPFZZR+3r4VKHnaCnyT1qJUiEmef4FVMnJrHrn3R8f8gJTjwICS5VJ+aeOTIh +oag/UNf74gXa97LcjUB4++w9QvyFp5/t98edQC1UT5M+18Wd863vXV8/FQqqVH5FXRRpwSKowC NSwupa1nVj/Yi2TCN80OlPEY= X-Received: by 127.0.0.2 with SMTP id moiSYY7687511xcPYKTa7beQ; Tue, 14 Nov 2023 06:29:37 -0800 X-Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.66]) by mx.groups.io with SMTP id smtpd.web11.13824.1699972176914582137 for ; Tue, 14 Nov 2023 06:29:37 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pqir2zBH7In6QHL6Dc8iB0fHBtgGJpp1Cyy42d4MybOtsqYRLyojEnLwpzBe/GMVxkv7HEQ3w23grwZY1ElYF6j1VmiYCMMaYfq1O2i390l7vJxsow2PIXa6GSB+HzVN7Vft1XE4idKpLVLRhijLPI9StRuwKyutKdGRxLuqrtsod+B/9KJBINrZ+Kc08iaOzHKmKpWqkhJ+JJQszD/DOLkWcV/OSnlsNbskcPb5w8hEFCU3DPUoacVAkiH7yZp72JpCm/MACzaShAZiNQT1aB/LM+kTNitIxUIn3HH7Ci6WkHJ9DRw4KVUCYSfTOD0thLUaO+SmP4rGHF3OI7w92g== 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=twMMhBexi569xf5dee4OUSwFt33xIhdvC+3bjFnlhJY=; b=PV9bm/KFuEWmboMLiqQTjkHvDniw18q7chxloHwtzfy3Oj7BDoQ/sd50bXIsKL6qZ48pEzBR1+c8HCLdcUeukkGF8tN3o2IU5jKCW0qDvFcWGDMdHTYyjcHqEOsKUWsjXlILzgVxQjVkcdxcbseGqPw5EJJUjPZ1nSyKfYDB6cKpzan5t51bENIqGW6sJHJkssiS78L1H6KCVqk5HF2iAOUaHYkBd3PtInrvG6DLpU6PQUxZ+UivbxtcsIJDCMEhXk5Ydn7uksayQ1f4JtvSOiTeKRCmT34p8a8atP8B5obYFVm1njnHJBFCqGfHGmQDxt4U4sgHtuAtBC7esL6qlA== 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 MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by MW4PR12MB7264.namprd12.prod.outlook.com (2603:10b6:303:22e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.31; Tue, 14 Nov 2023 14:29:33 +0000 X-Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::91d9:e679:32a3:dd05]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::91d9:e679:32a3:dd05%4]) with mapi id 15.20.6977.029; Tue, 14 Nov 2023 14:29:33 +0000 From: "Chang, Abner via groups.io" To: Igor Kulchytskyy , "devel@edk2.groups.io" CC: Nickle Wang Subject: Re: [edk2-devel] [PATCH v5 2/2] RedfishPkg: RedfishDiscoverDxe: Optimize the Redfish Discover flow Thread-Topic: [PATCH v5 2/2] RedfishPkg: RedfishDiscoverDxe: Optimize the Redfish Discover flow Thread-Index: AQHaFwbPXAEHRBmyU0+CgaKub9bN4rB53+XQ Date: Tue, 14 Nov 2023 14:29:32 +0000 Message-ID: References: <20231114142815.1604-1-igork@ami.com> In-Reply-To: <20231114142815.1604-1-igork@ami.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=b4c206a5-c04a-4503-86d2-88671e053d84;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=2023-11-14T14:29:28Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|MW4PR12MB7264:EE_ x-ms-office365-filtering-correlation-id: 7749aec4-6d61-4ed1-2328-08dbe51e1eb4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: 1bOlLPifmzLzUAFUV1eHR4eij2p0s8LTGjbBfhwDFtXREuNhYSJQFdCbnRAqr75dB8NChHf4UaZPZ8++SFDSjJtPmcLldfFyyYEI03MVdgHmu0Dc/S2fSMGwLqDBmGUJPELhHoe9V0D7E1+U/Wme16xS6nQrVvVfvGjuq//+/8ELclOH9CxjlrayJjhK/EX6knSPu96Qi/akibPD1TdTcqlFxLd4H6oVCd8LuJvvcvUWfnKJSvRsVAMf0NIvJcbm4LIC/x/TBt3Fgf/63UuGykyPINi4D+pi4oelGhSNluPEObrAQEwwivxdH4Cn2IckDVdEMPQq0NMandTNnbuoAR9oiAv+f3g2SjgJxmga7XEID3N5gtm5q7C4lYfXj1jv/0OFeaqMYguPytxBxv63xNz3qUbMR7VoPsIw48X5ug+IxweegbhdhWTXaGTYsFFpcwYWJtJ0nvk7X1s+P/LV0at5r24nWqpZS9ai7ejE1GppXejyEJ662WZ7BMvzVDzTsVlNZeEQ/QxcqNMIACAcUw1iE43UpEr6bOFC+5/CI4yEqALuMWO9VhzpE087hJYgwDEf4rcyab4zxaud/yGt4KubF9eA1Q0b5mciFrZBF8mOozEXQkD0iG9TPoGb7oDP4+EThBoaiq1ag0DeibsCRInhBMjuMcF4xRLa19m82DE= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?9p32zTjRd5GNZcssbj0dl9xvMP7/OuaPne9O6m8eHhGAyUGa48LMJc1S3UnK?= =?us-ascii?Q?+o/0r/sOPa0ixBU8i9VdGCItSAWiN62PmzV3JWFGKrfsnhUgVzlBEX1DKGoQ?= =?us-ascii?Q?lZfLAAcC5iXxJ/ITIW6BmEBUOukat4t1R7yvHtCQ2Cl1jDLN8QJGPr2yzpWM?= =?us-ascii?Q?539ql7DyEg0pb4v9DV/EOKV1hexjoxKoOBK0T6ZpQG+XjYifXPNKFPBI/p/T?= =?us-ascii?Q?Q2YXmkZ6EEOGtDUWrX+2iP2TPTkWH+Ad+LsPGYZ9g1l5WLS0uN649cEkSOOM?= =?us-ascii?Q?EQM5ORScHZN2kjQg1q/mcw6r3rY4vWC3gSvIZnfYh/KQx6iKlJxC7emgBsbr?= =?us-ascii?Q?kME9gCE8UgrWskquWt/mRVEVkDKGMct1MrgGiRS18Fn7mLDmTGB05NYd+b1d?= =?us-ascii?Q?dAHzqbSWUPjHkJsGq2aeKA3Eh+sm25GU/RNczLHhX8yVDkcFHwBW2/05AXM3?= =?us-ascii?Q?JdJzt0/835RXRG47qKJTtOL79A8GiKX0GWHuVdLTu3b3ytWTghKt05ej8y5s?= =?us-ascii?Q?V29H8rpjQK8AuqPYF/jzaHySr+Xanvw98Mcl88NpCIz6jxM8XYJysqBz1y+o?= =?us-ascii?Q?EwILNcQvp4SSHmFysf9u4ecIBOviItHT1vUEzZJeGfNxqpEAkpc1ShaBrI4x?= =?us-ascii?Q?PSz7gTcFbqp+xAwGUZWcc47DjRSJGOwqPEzHBhMNSpp2wbmFLG8veDt5TVOe?= =?us-ascii?Q?0RX31iRsCV5S2Yza3wyvTa8c8kfHzsHojV2wWtJeyyMIDxth+07AA/loRnzg?= =?us-ascii?Q?OySQ1HjPIl/pqXcpc8DwSOl3C/WRuKwLmOIPsYkok0b+OZB4L3MuAhxXsaBZ?= =?us-ascii?Q?yHa/AMxXS6GrZa9z/asXD4q+RtFYTwL66OyBjP4Gs51oATASSKaQWFr9BQ5U?= =?us-ascii?Q?WLSAvo4XW9QhRtRhtbB5FPN+q6uMNkLShcMT0TnBNTXTjH2To3zxuPYrajhB?= =?us-ascii?Q?d8lTgregsE9bCb0JGPod+jm8g+nVz1PpgmkzjRF1kWEKzU8EygeO89RthMhq?= =?us-ascii?Q?Dx6Ry+o2DGZ5fBbaTcahU8HbPmI3+Bhlb5unmlCejDJn8kcVMTJDTspQxcfo?= =?us-ascii?Q?4jAKWZcUqlfKiah+R/NKQaMp+SQJ38W+foyh3K7Zto2z4WERdMJMMTTlC7Fy?= =?us-ascii?Q?zAWyxIMPpykxoDyKMahVULVgauVyyYB0bpE0obc0ChEdYIoXVrpGJ9avOQd/?= =?us-ascii?Q?LNhx69lrXN9epdCNrCsLTYxwOTT8f06d6QXh+QL75RU7m6mkO/+3eajEhUun?= =?us-ascii?Q?gkd7pcdE5aTXK1o7IoeHIr1fFR4LlQTEpsNOkjoIx1kl9qBZHneZyuQhbTkS?= =?us-ascii?Q?BjX/94j7Z9csWp2LUhfQZKPrH5ekQerMVkKZYmtnj1MISugNZc+jZjtgAudc?= =?us-ascii?Q?jNBKJM+QQwi3N6j0Un3KyFHmnRTdEGCyA86Nol6WKuvd2w9Dg7U7JSeMcivO?= =?us-ascii?Q?biqeb0KzVVh1kXT9Em2qSdZgf2/eGLDO/8Eo3AfxjEjED1i/z6ngGL1krBmT?= =?us-ascii?Q?C1NiLHhe5/jDTIoN7IIStSf43sV9hAM+5X+1YfVkn/nWhjBXQT8wmYI/yKnt?= =?us-ascii?Q?YW3YqJBPI168cBFbp258vJRQCwBXZiNURudXidCK?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7749aec4-6d61-4ed1-2328-08dbe51e1eb4 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Nov 2023 14:29:32.9880 (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: f8AFPFYo6pKhNRYBmjHIdW9HlY9uQvs62/zmaFd53W/kS7UPg1UAL49kZ92BDamV3bk+bYriiCVWwqfP89nG4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7264 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: V95MmBqVwVY3fhuisvtWhH7yx7686176AA= 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=EhaVgWwX; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=none; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") [AMD Official Use Only - General] Reviewed-by: Abner Chang > -----Original Message----- > From: Igor Kulchytskyy > Sent: Tuesday, November 14, 2023 10:28 PM > To: devel@edk2.groups.io > Cc: Chang, Abner ; Nickle Wang > > Subject: [PATCH v5 2/2] RedfishPkg: RedfishDiscoverDxe: Optimize the > Redfish Discover flow > > Caution: This message originated from an External Source. Use proper caut= ion > when opening attachments, clicking links, or responding. > > > Filter out the network interfaces which are not supported by > Redfish Host Interface. > > Cc: Abner Chang > Cc: Nickle Wang > Signed-off-by: Igor Kulchytskyy > --- > RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c | 163 > ++++++++++++++------ > RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverInternal.h | 6 + > 2 files changed, 120 insertions(+), 49 deletions(-) > > diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > index 0f622e05a9..ae83cd3c97 100644 > --- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > +++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c > @@ -322,9 +322,16 @@ GetTargetNetworkInterfaceInternal ( > { > EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL > *ThisNetworkInterface; > > + if (IsListEmpty (&mEfiRedfishDiscoverNetworkInterface)) { > + return NULL; > + } > + > ThisNetworkInterface =3D > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode > (&mEfiRedfishDiscoverNetworkInterface); > while (TRUE) { > - if (CompareMem ((VOID *)&ThisNetworkInterface->MacAddress, > &TargetNetworkInterface->MacAddress, ThisNetworkInterface- > >HwAddressSize) =3D=3D 0) { > + if ((MAC_COMPARE (ThisNetworkInterface, TargetNetworkInterface) =3D= =3D 0) > && > + (VALID_TCP6 (TargetNetworkInterface, ThisNetworkInterface) || > + VALID_TCP4 (TargetNetworkInterface, ThisNetworkInterface))) > + { > return ThisNetworkInterface; > } > > @@ -354,6 +361,10 @@ GetTargetNetworkInterfaceInternalByController ( > { > EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL > *ThisNetworkInterface; > > + if (IsListEmpty (&mEfiRedfishDiscoverNetworkInterface)) { > + return NULL; > + } > + > ThisNetworkInterface =3D > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode > (&mEfiRedfishDiscoverNetworkInterface); > while (TRUE) { > if (ThisNetworkInterface->OpenDriverControllerHandle =3D=3D > ControllerHandle) { > @@ -476,6 +487,42 @@ CheckIsIpVersion6 ( > return FALSE; > } > > +/** > + This function returns the IP type supported by the Host Interface. > + > + @retval 00h is Unknown > + 01h is Ipv4 > + 02h is Ipv6 > + > +**/ > +UINT8 > +GetHiIpProtocolType ( > + VOID > + ) > +{ > + EFI_STATUS Status; > + REDFISH_OVER_IP_PROTOCOL_DATA *Data; > + REDFISH_INTERFACE_DATA *DeviceDescriptor; > + > + Data =3D NULL; > + DeviceDescriptor =3D NULL; > + if (mSmbios =3D=3D NULL) { > + Status =3D gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL, (VOID > **)&mSmbios); > + if (EFI_ERROR (Status)) { > + return > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_UNKNOWN; > + } > + } > + > + Status =3D RedfishGetHostInterfaceProtocolData (mSmbios, > &DeviceDescriptor, &Data); // Search for SMBIOS type 42h > + if (!EFI_ERROR (Status) && (Data !=3D NULL) && > + (Data->HostIpAssignmentType =3D=3D RedfishHostIpAssignmentStatic)) > + { > + return Data->HostIpAddressFormat; > + } > + > + return > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_UNKNOWN; > +} > + > /** > This function discover Redfish service through SMBIOS host interface. > > @@ -512,6 +559,18 @@ DiscoverRedfishHostInterface ( > > Status =3D RedfishGetHostInterfaceProtocolData (mSmbios, > &DeviceDescriptor, &Data); // Search for SMBIOS type 42h > if (!EFI_ERROR (Status) && (Data !=3D NULL) && (DeviceDescriptor !=3D = NULL)) { > + if ((Instance->NetworkInterface->NetworkProtocolType =3D=3D > ProtocolTypeTcp4) && > + (Data->HostIpAddressFormat !=3D > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4)) // IPv4 case > + { > + DEBUG ((DEBUG_ERROR, "%a: Network Interface is IPv4, but Host > Interface requires Ipv6\n", __func__)); > + return EFI_UNSUPPORTED; > + } else if ((Instance->NetworkInterface->NetworkProtocolType =3D=3D > ProtocolTypeTcp6) && > + (Data->HostIpAddressFormat !=3D > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP6)) // IPv6 case > + { > + DEBUG ((DEBUG_ERROR, "%a: Network Interface is IPv6, but Host > Interface requires IPv4\n", __func__)); > + return EFI_UNSUPPORTED; > + } > + > // > // Check if we can reach out Redfish service using this network inte= rface. > // Check with MAC address using Device Descriptor Data Device Type 0= 4 > and Type 05. > @@ -1102,6 +1161,7 @@ RedfishServiceGetNetworkInterface ( > OUT EFI_REDFISH_DISCOVER_NETWORK_INTERFACE > **NetworkIntfInstances > ) > { > + EFI_STATUS Status; > EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL > *ThisNetworkInterfaceIntn; > EFI_REDFISH_DISCOVER_NETWORK_INTERFACE > *ThisNetworkInterface; > EFI_REDFISH_DISCOVER_REST_EX_INSTANCE_INTERNAL *RestExInstance; > @@ -1141,13 +1201,23 @@ RedfishServiceGetNetworkInterface ( > > ThisNetworkInterfaceIntn =3D > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode > (&mEfiRedfishDiscoverNetworkInterface); > while (TRUE) { > + // If Get Subnet Info failed then skip this interface > + Status =3D NetworkInterfaceGetSubnetInfo (ThisNetworkInterfaceIntn, > ImageHandle); // Get subnet info > + if (EFI_ERROR (Status)) { > + if (IsNodeAtEnd (&mEfiRedfishDiscoverNetworkInterface, > &ThisNetworkInterfaceIntn->Entry)) { > + break; > + } > + > + ThisNetworkInterfaceIntn =3D > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetNextNode > (&mEfiRedfishDiscoverNetworkInterface, &ThisNetworkInterfaceIntn->Entry); > + continue; > + } > + > ThisNetworkInterface->IsIpv6 =3D FALSE; > if (CheckIsIpVersion6 (ThisNetworkInterfaceIntn)) { > ThisNetworkInterface->IsIpv6 =3D TRUE; > } > > CopyMem ((VOID *)&ThisNetworkInterface->MacAddress, > &ThisNetworkInterfaceIntn->MacAddress, ThisNetworkInterfaceIntn- > >HwAddressSize); > - NetworkInterfaceGetSubnetInfo (ThisNetworkInterfaceIntn, ImageHandle= ); > // Get subnet info. > if (!ThisNetworkInterface->IsIpv6) { > IP4_COPY_ADDRESS (&ThisNetworkInterface->SubnetId.v4, > &ThisNetworkInterfaceIntn->SubnetAddr.v4); // IPv4 subnet information. > } else { > @@ -1230,7 +1300,12 @@ RedfishServiceAcquireService ( > > if (TargetNetworkInterface !=3D NULL) { > TargetNetworkInterfaceInternal =3D GetTargetNetworkInterfaceInternal > (TargetNetworkInterface); > - NumNetworkInterfaces =3D 1; > + if (TargetNetworkInterfaceInternal =3D=3D NULL) { > + DEBUG ((DEBUG_ERROR, "%a:No network interface on platform.\n", > __func__)); > + return EFI_UNSUPPORTED; > + } > + > + NumNetworkInterfaces =3D 1; > } else { > TargetNetworkInterfaceInternal =3D > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode > (&mEfiRedfishDiscoverNetworkInterface); > NumNetworkInterfaces =3D NumberOfNetworkInterface (); > @@ -1260,7 +1335,13 @@ RedfishServiceAcquireService ( > // Get subnet information in case subnet information is not set be= cause > // RedfishServiceGetNetworkInterfaces hasn't been called yet. > // > - NetworkInterfaceGetSubnetInfo (TargetNetworkInterfaceInternal, > ImageHandle); > + Status1 =3D NetworkInterfaceGetSubnetInfo > (TargetNetworkInterfaceInternal, ImageHandle); > + if (EFI_ERROR (Status1)) { > + DEBUG ((DEBUG_ERROR, "%a: Get subnet information fail.\n", > __func__)); > + FreePool (Instance); > + continue; > + } > + > NewInstance =3D TRUE; > } > > @@ -1547,26 +1628,25 @@ TestForRequiredProtocols ( > ControllerHandle, > EFI_OPEN_PROTOCOL_TEST_PROTOCOL > ); > - if (EFI_ERROR (Status)) { > - return EFI_UNSUPPORTED; > - } > - > - Status =3D gBS->OpenProtocol ( > - ControllerHandle, > - gRequiredProtocol[Index].DiscoveredProtocolGuid, > - (VOID **)&Id, > - This->DriverBindingHandle, > - ControllerHandle, > - EFI_OPEN_PROTOCOL_GET_PROTOCOL > - ); > if (!EFI_ERROR (Status)) { > - // Already installed > - return EFI_UNSUPPORTED; > + Status =3D gBS->OpenProtocol ( > + ControllerHandle, > + gRequiredProtocol[Index].DiscoveredProtocolGuid, > + (VOID **)&Id, > + This->DriverBindingHandle, > + ControllerHandle, > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > + ); > + if (EFI_ERROR (Status)) { > + if (Index =3D=3D ListCount - 1) { > + DEBUG ((DEBUG_INFO, "%a: all required protocols are found on t= his > controller handle: %p.\n", __func__, ControllerHandle)); > + return EFI_SUCCESS; > + } > + } > } > } > > - DEBUG ((DEBUG_MANAGEABILITY, "%a: all required protocols are found on > this controller handle: %p.\n", __func__, ControllerHandle)); > - return EFI_SUCCESS; > + return EFI_UNSUPPORTED; > } > > /** > @@ -1601,10 +1681,22 @@ BuildupNetworkInterface ( > EFI_REDFISH_DISCOVER_REST_EX_INSTANCE_INTERNAL *RestExInstance; > EFI_TPL OldTpl; > BOOLEAN NewNetworkInterfaceIn= stalled; > + UINT8 IpType; > + UINTN ListCount; > > + ListCount =3D (sizeof (gRequiredProtocol) / sizeof > (REDFISH_DISCOVER_REQUIRED_PROTOCOL)); > NewNetworkInterfaceInstalled =3D FALSE; > Index =3D 0; > - do { > + > + // Get IP Type to filter out unnecessary network protocol if possible > + IpType =3D GetHiIpProtocolType (); > + > + for (Index =3D 0; Index < ListCount; Index++) { > + // Check IP Type and skip an unnecessary network protocol if does no= t > match > + if (IS_TCP4_MATCH (IpType) || IS_TCP6_MATCH (IpType)) { > + continue; > + } > + > Status =3D gBS->OpenProtocol ( > // Already in list? > ControllerHandle, > @@ -1615,11 +1707,6 @@ BuildupNetworkInterface ( > EFI_OPEN_PROTOCOL_GET_PROTOCOL > ); > if (!EFI_ERROR (Status)) { > - Index++; > - if (Index =3D=3D (sizeof (gRequiredProtocol) / sizeof > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) { > - break; > - } > - > continue; > } > > @@ -1632,11 +1719,6 @@ BuildupNetworkInterface ( > EFI_OPEN_PROTOCOL_GET_PROTOCOL > ); > if (EFI_ERROR (Status)) { > - Index++; > - if (Index =3D=3D (sizeof (gRequiredProtocol) / sizeof > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) { > - break; > - } > - > continue; > } > > @@ -1695,11 +1777,6 @@ BuildupNetworkInterface ( > ProtocolDiscoverIdPtr > ); > if (EFI_ERROR (Status)) { > - Index++; > - if (Index =3D=3D (sizeof (gRequiredProtocol) / sizeof > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) { > - break; > - } > - > continue; > } > > @@ -1756,25 +1833,13 @@ BuildupNetworkInterface ( > } > } else { > DEBUG ((DEBUG_MANAGEABILITY, "%a: Not REST EX, continue with > next\n", __func__)); > - Index++; > - if (Index =3D=3D (sizeof (gRequiredProtocol) / sizeof > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) { > - break; > - } > - > continue; > } > } > > return Status; > - } else { > - Index++; > - if (Index =3D=3D (sizeof (gRequiredProtocol) / sizeof > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) { > - break; > - } > - > - continue; > } > - } while (Index < (sizeof (gRequiredProtocol) / sizeof > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))); > + } > > return EFI_DEVICE_ERROR; > } > diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverInternal.h > b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverInternal.h > index 01454acc1d..3093eea0d5 100644 > --- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverInternal.h > +++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverInternal.h > @@ -39,6 +39,12 @@ > #define REDFISH_DISCOVER_VERSION 0x00010000 > #define EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_TPL TPL_NOTIFY > > +#define MAC_COMPARE(ThisNetworkInterface, TargetNetworkInterface) > (CompareMem ((VOID *)&ThisNetworkInterface->MacAddress, > &TargetNetworkInterface->MacAddress, ThisNetworkInterface- > >HwAddressSize)) > +#define VALID_TCP6(TargetNetworkInterface, ThisNetworkInterface) > (TargetNetworkInterface->IsIpv6 && (ThisNetworkInterface- > >NetworkProtocolType =3D=3D ProtocolTypeTcp6)) > +#define VALID_TCP4(TargetNetworkInterface, ThisNetworkInterface) > (!TargetNetworkInterface->IsIpv6 && (ThisNetworkInterface- > >NetworkProtocolType =3D=3D ProtocolTypeTcp4)) > +#define IS_TCP4_MATCH(IpType) > ((gRequiredProtocol[Index].ProtocolType =3D=3D ProtocolTypeTcp4) && (IpTy= pe !=3D > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4)) > +#define IS_TCP6_MATCH(IpType) > ((gRequiredProtocol[Index].ProtocolType =3D=3D ProtocolTypeTcp6) && (IpTy= pe !=3D > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP6)) > + > // > // GUID definitions > // > -- > 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 (#111199): https://edk2.groups.io/g/devel/message/111199 Mute This Topic: https://groups.io/mt/102584140/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-