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 1B1F0D80CA2 for ; Mon, 4 Dec 2023 07:14:16 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=CunRMwgHEkTzVwfqdPIv9anL8p7emBGAR/Ubjk0J9+s=; 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: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=1701674055; v=1; b=wO34xFeURfgCLcvWfZcpOCeFbwP1AhrYfeWnZUdkarInPTqOKgkeF3cWfDeT7utjMerPXGXL 3hT96SIfeh+oCviysggxa0SexgoQM8k2fN1V3D0vePPOvVkvbDdR4uG9JMpre4W2+MKpmPM0v+z LLWlEZVsNkucMp/pobDVjjac= X-Received: by 127.0.0.2 with SMTP id qh1iYY7687511xTWLcYQagOt; Sun, 03 Dec 2023 23:14:15 -0800 X-Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.107.220.85]) by mx.groups.io with SMTP id smtpd.web11.63609.1701674054950106744 for ; Sun, 03 Dec 2023 23:14:15 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FZB09KaAjl2St9e/HrT+pu+BCXmjPH90shCPRMt/V6kvU7UBs6lbozsAbmFH+ocbpds+SEqEV+/YaD3Po/IV738OG2aWnu4uylBKFhkDeuOLmVhAH6AJfZ/2kB19rDg+n9jclrYyAsFkbk4X+j8uBnTqCCyqcRXZzVLc4RUXbO0Jri/R/lAyIVXTKlxuTTYuvkvxMqtB5kIRsW4TvOfDyinvb5ThtijafZ+nbWFv0Q1qaA96te2q+GIZwaBsD8OM2gQNhp7MQRFcRll0qmuXoCN1Oj9cW+MoBXdBwSEjuUYg/uJ19RPI2l1+S0ts81wfCzYXwrSPdYWvNi/MJs1aUw== 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=smHDyunD0poQmdR4nrEj2armvGnfLYSgsY1D/+u7rXc=; b=j3JtH/qLRvDmWrPbG2WS05vzJQEpe7phg4ZEK0W3cc/xbG8UTNce8uTfu45cwjLtTT4CmpkH/ZZnLhyq9sjst8cl1RycTY4r9EPZzZ+pINFH1D6oApSZ8Uk4d6G0RojfjSPkW1ZIUUcDD2sjLXcitZrQWuC+78PMcQsm07ZRdaDuMIuBSX7XrPhBWnE3/hzOqXEiIgkJPFRQBsLWQR0GKNUSBnL4ZPSmJuGRn4STrT8tg7F5xQwGHkK23SKlmzL6ZguXX0BddD+blZjb+8L+mbB9DOrbiPrROQG2kogOsJHCWoURH91UhZzxLRLvTpx2eDAAb6YogjYVxPspHKChkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none X-Received: from MW4PR12MB7031.namprd12.prod.outlook.com (2603:10b6:303:1ef::6) by BL3PR12MB6617.namprd12.prod.outlook.com (2603:10b6:208:38c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.33; Mon, 4 Dec 2023 07:14:10 +0000 X-Received: from MW4PR12MB7031.namprd12.prod.outlook.com ([fe80::a78e:602e:415c:4cb4]) by MW4PR12MB7031.namprd12.prod.outlook.com ([fe80::a78e:602e:415c:4cb4%3]) with mapi id 15.20.7046.033; Mon, 4 Dec 2023 07:14:10 +0000 From: "Nickle Wang via groups.io" To: "devel@edk2.groups.io" , "Chang, Abner" CC: Mike Maslenkin , Igor Kulchytskyy Subject: Re: [edk2-devel] [PATCH V3 1/9] RedfishPkg/BmcUsbNicLib: Update BMC USB NIC searching algorithm Thread-Topic: [edk2-devel] [PATCH V3 1/9] RedfishPkg/BmcUsbNicLib: Update BMC USB NIC searching algorithm Thread-Index: AQHaJoF6IbjKy7cMJ0eMRD1os0nJFw== Date: Mon, 4 Dec 2023 07:14:10 +0000 Message-ID: References: <20231127053107.1686-1-abner.chang@amd.com> <179B63DFD0330B10.32091@groups.io> In-Reply-To: <179B63DFD0330B10.32091@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR12MB7031:EE_|BL3PR12MB6617:EE_ x-ms-office365-filtering-correlation-id: 84db0ae0-0593-4a2d-0534-08dbf4989cbe x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: tfJD2HDhj3pcu1/GyUDyXCI53c2P7zQOudj1iQID1aWICIchLwTm7Vq/TNGWWoEikWFgksWTFtoPI1jec2wuq/nQD1BF1YIrNQluWsefyNI4Mwu9F/BXH2EHvc7ZfpcTHthg+swk2hcIzQkdUcAPsSenMmq0aXbpHURO+sfYsGT1cjYEIls/CWkJoPi4FCByCqxf3vrey/euHTbktWCCGyT8nh+7BhY1CVVdwN7RzkcaW9F6M8xy8oVSfo67IQqvoTH9W4ouz17bqV4+CdjlD8HTzjkjW2p7Nb5wIpXhwc/kOkNwaRLwXI+zDV73Q1HL/QmnoFlJbtT+u8B61HMj4QDJxLkpfkbdtBm7w9uXiSurE+aslVkvRztu++B9eBy6xd+USCTcyKij5hJQTOSDSjebuZK4zpvPIGFqZs2atxVy7t3KhlYufpoQ+fQSEwA7zLeoRLmqMTwIPEerWs5Ymz0q1gHz2LkWuhTHkU2bOE63XgZGZgHn4LePtOAul2Xz0Tp90HeeUUhoBBzifztKqjRNw0ppSzJMeKqjlmh0VQammaBb4T+gihI5ntp4njRewvtGDgAZa2EsvODqgFKXl/DZ9H0OIjN5V+clgq2cT8TWDw5CK4SdP1YIZuEQzr7RFit7eQUHWYmukYa3W0X1lA== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?lnyeKw7SBkWcSBxjSAyXLQ56WocA5Z7RCJWvu50DY3Cj4NJlduxN8jO6NR9i?= =?us-ascii?Q?vsSymwRfXchDXaH6Az1eh3762vlx/kpm+A9PQ8ZL9vEqu8gxfVW6pFZnyX4I?= =?us-ascii?Q?0YVPitYjUz2JdIkd/4JY9YzdQDQ7+GvtJ6TMpH+Swd0l6IFo0FIGvPGhud99?= =?us-ascii?Q?SMBHXLVZNsM+ZiC7ELDSuSDhnPaa206wDZwpBmQ9/ny+Cy6wLlEuk0tC0anR?= =?us-ascii?Q?7jG6o5st+LyFL+OuXDP96UbWWm8T7LCYhCUVHSYZhwtvrWzhsiuMTOGg0loi?= =?us-ascii?Q?bCGKptqOaSLE0hVl9MGLd2+sOwXx41LTHPSABmupjNPtT/+XxfXXEYJ7HRfU?= =?us-ascii?Q?lKTh4mHE8TevInuxUMwWLQvc6FMDPdSrfCnidF0ud9fROKBAajXJrJHp0Lhn?= =?us-ascii?Q?mAN0JpPBDH6g5zX7lE3UFpw0Dy3etCLQwhggzUqvFjkMoTYllbiPNB7OZtCA?= =?us-ascii?Q?cHVSIWW4UnuQ3VnxAybLrQ5363KSypYmFlrIwzYRpmHR5FsQIlvi0xkFiCQR?= =?us-ascii?Q?PBuLEKsNDAAD0evG0dDlOeCcjBdsYQrMCNUCZy8JTdbtaz6wBxqwCHN3ws+W?= =?us-ascii?Q?m7guf6gZnXXHvWv5Ud0YHHgobM7cbKuzwzh7ikwpTbyCbmecXZBjTuJ6+ILq?= =?us-ascii?Q?/7vu7cRLsk1nCLPTR/tOtY0S4tWkOELlstK5U/h7GzTb/Na4FHUok6K1aV4E?= =?us-ascii?Q?0tJEh7genGwe2ZOO7d0UjZJZt8bEMkBjwifKbo0n1u3dFo9k2og7QeEcdFpC?= =?us-ascii?Q?SqeNpVqpm88PaysZjK3blLQ4yfLDAK2GohP+F8BOJpPPLfD+S86yX5gPgGnh?= =?us-ascii?Q?G6Jx6MNksn1kAPOKAXgcA1UlMWRe+993WRB3owJIWVr/lSsteHVsR+BQQIDW?= =?us-ascii?Q?WST+l0/hQ/p/DbbA4H3SL9oYGNR5OGkCs7nrgnJUi7BF6manNH+3v5XwAvT/?= =?us-ascii?Q?PltCg6/TObD65IRYa7lk/jsVEZQHL1ygtUJH+nmAjoSBMJNAHXlZ5bOJlXma?= =?us-ascii?Q?bfsNv2leg8RPRHTf04G+KAU6Hj/gMpcCbMwq42RdfbZRLxm8i7mzOD++AX1i?= =?us-ascii?Q?gVAQKPLfOUoEZqCUFSa8lqI5aXOsjO7554knhBdjBjIwisq7nkh7BiqYxvZP?= =?us-ascii?Q?w/gYujfVZDV3DzD8CxKIAqMYLzPYFuWjKgY9bKhvDDngUB4TIHctghb4qjMg?= =?us-ascii?Q?eSgl7MDp5w+K0Zk5k/XcsdlvNUdj9+bkAyn4ElblG3OiJ6bk1Re2v6NwKte1?= =?us-ascii?Q?6PjP/XzSarKW/KYTFOBw2YFg/QO2WwxYCRLSld+V0tfEIpWKLbXOcST7yDUu?= =?us-ascii?Q?5AxloIvEtPtBa4FfrYjGT6g2IBZqHAjcNQvBsZlkZai2Gv4wpsQU93TuoHjC?= =?us-ascii?Q?arR5tURbgt79O80EZbcF8aHoSSvw3xesb/nuH5a0kivttYohLTeQNz4+jAD/?= =?us-ascii?Q?ts5xBqHTIMVEpYcmMKWbnET477EqLehDf4yGxrCPuPjgRqTquNwFVsTOfV+3?= =?us-ascii?Q?FPjpQRCh28w+fn4ritLMvpwrbo3cM5LI5/C3onrLqKy+MpITqRVLncOSxq+7?= =?us-ascii?Q?bW8glxQhlVKH35qMf9LAYW2GZtV4wjilCpRFMCR64c5OnvklL5pUGsCSeI4t?= =?us-ascii?Q?HhXcNihEk3os50fbjMnVOhGojfBpc0vp4gV9xOFrbfko?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR12MB7031.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84db0ae0-0593-4a2d-0534-08dbf4989cbe X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Dec 2023 07:14:10.4914 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 3NrliOoYXEil6ljNNwxOq3QnRyE9IwMJSVxGVu5IGg6V+93scCQOyjgFV4pmVYQuto1hW+Vxs2nL7PDiEWSQlA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6617 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: afCOf2xolUsOy2Yw3UIR7gyax7686176AA= 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=wO34xFeU; 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}") Reviewed-by: Nickle Wang Regards, Nickle > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Chang, Abn= er > via groups.io > Sent: Monday, November 27, 2023 1:31 PM > To: devel@edk2.groups.io > Cc: Mike Maslenkin ; Nickle Wang > ; Igor Kulchytskyy > Subject: [edk2-devel] [PATCH V3 1/9] RedfishPkg/BmcUsbNicLib: Update BMC > USB NIC searching algorithm >=20 > Caution: This message originated from an External Source. Use proper caut= ion > when opening attachments, clicking links, or responding. >=20 >=20 > From: Abner Chang >=20 > Update BMC USB NIC searching algorithm for IPv4 only. >=20 > Signed-off-by: Abner Chang > Co-authored-by: Mike Maslenkin > Cc: Nickle Wang > Cc: Igor Kulchytskyy > Cc: Mike Maslenkin > --- > .../PlatformHostInterfaceBmcUsbNicLib.c | 188 ++++++++++++------ > 1 file changed, 128 insertions(+), 60 deletions(-) >=20 > diff --git > a/RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformHostInterf= ac > eBmcUsbNicLib.c > b/RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformHostInterf= ac > eBmcUsbNicLib.c > index 95900579118..e5bf70cfd58 100644 > --- > a/RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformHostInterf= ac > eBmcUsbNicLib.c > +++ > b/RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformHostInterf= ac > eBmcUsbNicLib.c > @@ -368,7 +368,9 @@ RetrievedBmcUsbNicInfo ( > )); > CopyMem ((VOID *)&ThisInstance->RedfishIpAddressIpv4, (VOID > *)&DestIpAddress->IpAddress, sizeof (DestIpAddress->IpAddress)); > // > - // According to UEFI spec, the IP address at BMC USB NIC host end = is the IP > address at BMC end minus 1. > + // According to the design spec: > + // https://github.com/tianocore/edk2/tree/master/RedfishPkg#platfo= rm- > with-bmc-and-the-bmc-exposed-usb-network-device > + // The IP address at BMC USB NIC host end is the IP address at BMC= end > minus 1. > // > CopyMem ((VOID *)&ThisInstance->HostIpAddressIpv4, (VOID > *)&DestIpAddress->IpAddress, sizeof (DestIpAddress->IpAddress)); > ThisInstance->HostIpAddressIpv4[sizeof (ThisInstance->HostIpAddres= sIpv4) - > 1] -=3D 1; > @@ -729,8 +731,10 @@ HostInterfaceIpmiCheckMacAddress ( >=20 > // > // According to design spec in Readme file under RedfishPkg. > - // Compare the first five MAC address and > - // the 6th MAC address. > + // https://github.com/tianocore/edk2/tree/master/RedfishPkg#platfo= rm- > with-bmc-and-the-bmc-exposed-usb-network-device > + // Compare the first five elements of MAC address and the 6th elem= ent of > MAC address. > + // The 6th element of MAC address must be the 6th element of > + // IPMI channel MAC address minus 1. > // > if ((IpmiLanMacAddressSize !=3D UsbNicInfo->MacAddressSize) || > (CompareMem ( > @@ -738,8 +742,8 @@ HostInterfaceIpmiCheckMacAddress ( > (VOID *)&IpmiLanChannelMacAddress.Addr, > IpmiLanMacAddressSize - 1 > ) !=3D 0) || > - (IpmiLanChannelMacAddress.Addr[IpmiLanMacAddressSize - 1] !=3D > - *(UsbNicInfo->MacAddress + IpmiLanMacAddressSize - 1) - 1) > + ((IpmiLanChannelMacAddress.Addr[IpmiLanMacAddressSize - 1] - 1= ) !=3D > + *(UsbNicInfo->MacAddress + IpmiLanMacAddressSize - 1)) > ) > { > DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " MAC address is not > matched.\n")); > @@ -962,6 +966,49 @@ UsbNicSearchUsbIo ( > return EFI_NOT_FOUND; > } >=20 > +/** > + This function identifies if the USB NIC has MAC address and internet > + protocol device path installed. (Only support IPv4) > + > + @param[in] UsbDevicePath USB device path. > + > + @retval EFI_SUCCESS Yes, this is IPv4 SNP handle > + @retval EFI_NOT_FOUND No, this is not IPv4 SNP handle > + > +**/ > +EFI_STATUS > +IdentifyNetworkMessageDevicePath ( > + IN EFI_DEVICE_PATH_PROTOCOL *UsbDevicePath > + ) > +{ > + EFI_DEVICE_PATH_PROTOCOL *DevicePath; > + > + DevicePath =3D UsbDevicePath; > + while (TRUE) { > + DevicePath =3D NextDevicePathNode (DevicePath); > + if (IsDevicePathEnd (DevicePath)) { > + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, "MAC address device path is > not found on this handle.\n")); > + break; > + } > + > + if ((DevicePath->Type =3D=3D MESSAGING_DEVICE_PATH) && (DevicePath- > >SubType =3D=3D MSG_MAC_ADDR_DP)) { > + DevicePath =3D NextDevicePathNode (DevicePath); // Advance to next= device > path protocol. > + if (IsDevicePathEnd (DevicePath)) { > + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, "IPv4 device path is not > found on this handle.\n")); > + break; > + } > + > + if ((DevicePath->Type =3D=3D MESSAGING_DEVICE_PATH) && (DevicePath= - > >SubType =3D=3D MSG_IPv4_DP)) { > + return EFI_SUCCESS; > + } > + > + break; > + } > + } > + > + return EFI_NOT_FOUND; > +} > + > /** > This function identifies if the USB NIC is exposed by BMC as > the host-BMC channel. > @@ -1025,7 +1072,7 @@ IdentifyUsbNicBmcChannel ( > (VOID *)&Snp->Mode->CurrentAddress, > BmcUsbNic->MacAddressSize > ); > - DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " MAC address (in size %d) fo= r > this SNP instance:\n ", BmcUsbNic->MacAddressSize)); > + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " MAC address (in size %d) fo= r > this SNP instance:\n", BmcUsbNic->MacAddressSize)); > for (Index =3D 0; Index < BmcUsbNic->MacAddressSize; Index++) { > DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, "%02x ", *(BmcUsbNic- > >MacAddress + Index))); > } > @@ -1068,7 +1115,8 @@ CheckBmcUsbNicOnHandles ( > UINTN Index; > EFI_STATUS Status; > EFI_DEVICE_PATH_PROTOCOL *DevicePath; > - BOOLEAN GotOneUsbNIc; > + BOOLEAN GotBmcUsbNic; > + CHAR16 *DevicePathStr; >=20 > if ((HandleNumer =3D=3D 0) || (HandleBuffer =3D=3D NULL)) { > return EFI_INVALID_PARAMETER; > @@ -1076,26 +1124,37 @@ CheckBmcUsbNicOnHandles ( >=20 > DEBUG ((DEBUG_MANAGEABILITY, "%a: Entry, #%d SNP handle\n", __func__, > HandleNumer)); >=20 > - GotOneUsbNIc =3D FALSE; > + GotBmcUsbNic =3D FALSE; > for (Index =3D 0; Index < HandleNumer; Index++) { > + DEBUG ((DEBUG_MANAGEABILITY, " Locate device path on handle > 0x%08x\n", *(HandleBuffer + Index))); > Status =3D gBS->HandleProtocol ( > *(HandleBuffer + Index), > &gEfiDevicePathProtocolGuid, > (VOID **)&DevicePath > ); > if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, " Failed to locate SNP on %d handle.\n", I= ndex)); > + DEBUG ((DEBUG_ERROR, " Failed to locate device path on %d handl= e.\n", > __func__, Index)); > continue; > } >=20 > + DevicePathStr =3D ConvertDevicePathToText (DevicePath, FALSE, FALSE)= ; > + if (DevicePathStr !=3D NULL) { > + DEBUG ((DEBUG_MANAGEABILITY, " Device path: %s\n", DevicePathSt= r)); > + FreePool (DevicePathStr); > + } > + > // Check if this is an BMC exposed USB NIC device. > while (TRUE) { > if ((DevicePath->Type =3D=3D MESSAGING_DEVICE_PATH) && (DevicePath= - > >SubType =3D=3D MSG_USB_DP)) { > - Status =3D IdentifyUsbNicBmcChannel (*(HandleBuffer + Index), De= vicePath); > + Status =3D IdentifyNetworkMessageDevicePath (DevicePath); > if (!EFI_ERROR (Status)) { > - GotOneUsbNIc =3D TRUE; > - break; > + Status =3D IdentifyUsbNicBmcChannel (*(HandleBuffer + Index), = DevicePath); > + if (!EFI_ERROR (Status)) { > + GotBmcUsbNic =3D TRUE; > + } > } > + > + break; // Advance to next SNP handle. > } >=20 > DevicePath =3D NextDevicePathNode (DevicePath); > @@ -1105,10 +1164,11 @@ CheckBmcUsbNicOnHandles ( > } > } >=20 > - if (GotOneUsbNIc) { > + if (GotBmcUsbNic) { > return EFI_SUCCESS; > } >=20 > + DEBUG ((DEBUG_MANAGEABILITY, "No BMC USB NIC found on SNP > handles\n")); > return EFI_NOT_FOUND; > } >=20 > @@ -1139,62 +1199,70 @@ CheckBmcUsbNic ( >=20 > DEBUG ((DEBUG_MANAGEABILITY, "%a: Entry, the registration key - > 0x%08x.\n", __func__, Registration)); >=20 > - Handle =3D NULL; > - Status =3D EFI_SUCCESS; > - BufferSize =3D 0; > + Handle =3D NULL; > + Status =3D EFI_SUCCESS; >=20 > - Status =3D gBS->LocateHandle ( > - Registration =3D=3D NULL ? ByProtocol : ByRegisterNoti= fy, > - &gEfiSimpleNetworkProtocolGuid, > - Registration, > - &BufferSize, > - NULL > - ); > - if (Status =3D=3D EFI_BUFFER_TOO_SMALL) { > - DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " %d SNP protocol > instances.\n", BufferSize/sizeof (EFI_HANDLE))); > - HandleBuffer =3D AllocateZeroPool (BufferSize); > - if (HandleBuffer =3D=3D NULL) { > - DEBUG ((DEBUG_ERROR, " Falied to allocate buffer for the handle= s.\n")); > - return EFI_OUT_OF_RESOURCES; > - } > + do { > + BufferSize =3D 0; > + Status =3D gBS->LocateHandle ( > + Registration =3D=3D NULL ? ByProtocol : ByRegist= erNotify, > + &gEfiSimpleNetworkProtocolGuid, > + Registration, > + &BufferSize, > + NULL > + ); > + if (Status =3D=3D EFI_BUFFER_TOO_SMALL) { > + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " %d SNP protocol > instance(s).\n", BufferSize/sizeof (EFI_HANDLE))); > + HandleBuffer =3D AllocateZeroPool (BufferSize); > + if (HandleBuffer =3D=3D NULL) { > + DEBUG ((DEBUG_ERROR, " Falied to allocate buffer for the hand= les.\n")); > + return EFI_OUT_OF_RESOURCES; > + } > + > + Status =3D gBS->LocateHandle ( > + Registration =3D=3D NULL ? ByProtocol : ByRegister= Notify, > + &gEfiSimpleNetworkProtocolGuid, > + Registration, > + &BufferSize, > + HandleBuffer > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, " Falied to locate SNP protocol handles.= \n")); > + FreePool (HandleBuffer); > + return Status; > + } > + } else if (EFI_ERROR (Status)) { > + if (Registration !=3D NULL) { > + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " No more newly install= ed > SNP protocol for this registration - %r.\n", Status)); > + return EFI_SUCCESS; > + } >=20 > - Status =3D gBS->LocateHandle ( > - Registration =3D=3D NULL ? ByProtocol : ByRegisterNo= tify, > - &gEfiSimpleNetworkProtocolGuid, > - Registration, > - &BufferSize, > - HandleBuffer > - ); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, " Falied to locate SNP protocol handles.\n= ")); > - FreePool (HandleBuffer); > return Status; > } > - } else if (EFI_ERROR (Status)) { > - return Status; > - } >=20 > - // Check USB NIC on handles. > - Status =3D CheckBmcUsbNicOnHandles (BufferSize/sizeof (EFI_HANDLE), > HandleBuffer); > - if (!EFI_ERROR (Status)) { > - // Retrieve the rest of BMC USB NIC information for Redfish over IP > information > - // and USB Network Interface V2. > - Status =3D RetrievedBmcUsbNicInfo (); > + // Check USB NIC on handles. > + Status =3D CheckBmcUsbNicOnHandles (BufferSize/sizeof (EFI_HANDLE), > HandleBuffer); > if (!EFI_ERROR (Status)) { > - DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " Install protocol to not= ify > the platform Redfish Host Interface information is ready.\n")); > - Status =3D gBS->InstallProtocolInterface ( > - &Handle, > - &mPlatformHostInterfaceBmcUsbNicReadinessGuid, > - EFI_NATIVE_INTERFACE, > - NULL > - ); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_ERROR, " Install protocol fail %r.\n", Status))= ; > + // Retrieve the rest of BMC USB NIC information for Redfish over I= P > information > + // and USB Network Interface V2. > + Status =3D RetrievedBmcUsbNicInfo (); > + if (!EFI_ERROR (Status)) { > + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " Install protocol to n= otify > the platform Redfish Host Interface information is ready.\n")); > + Status =3D gBS->InstallProtocolInterface ( > + &Handle, > + &mPlatformHostInterfaceBmcUsbNicReadinessGuid, > + EFI_NATIVE_INTERFACE, > + NULL > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, " Install protocol fail %r.\n", Status= )); > + } > } > } > - } >=20 > - FreePool (HandleBuffer); > + FreePool (HandleBuffer); > + } while (Registration !=3D NULL); > + > return Status; > } >=20 > -- > 2.37.1.windows.1 >=20 >=20 >=20 >=20 >=20 -=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 (#112007): https://edk2.groups.io/g/devel/message/112007 Mute This Topic: https://groups.io/mt/102966531/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-