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 10F92740034 for ; Fri, 1 Dec 2023 23:27:24 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=yYir8j9BUtcDLc9ZosyPg/E/0wra7JB7aoTdbEqDDCc=; 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=1701473243; v=1; b=h+XfgVxxzxq8QvwqlIEbkBgC3ZbBDK8LhJYCS6l4hIoGPEuymVeu5VdG3EIr+YWh5VK9+If4 0VvR/gxDL9EnpCOnKZnHbxb9C8riFB8tU3vbUr1sgZhYrryNkibYfrZVSZFaPfOqqp6mp6D19Hd PwOYMThq9A8MaKTeq/bgfqJQ= X-Received: by 127.0.0.2 with SMTP id UDdfYY7687511xugGt6oXpNl; Fri, 01 Dec 2023 15:27:23 -0800 X-Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.57]) by mx.groups.io with SMTP id smtpd.web10.7277.1701473242342197311 for ; Fri, 01 Dec 2023 15:27:23 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dTRVM/CAaFo6y4fceLqPdXQmrtBgPf90SUIPk/UUUUdMnyBSMH/iHUJRYYz/hKfiP4QRzT6V5rGYCisaAPIZnoXCMn7CFJybrX/KIBsrJjRNJHdbT+JbJ67xRAt/aA2wimWzK9rkexIhxDlnYavUjDqu4Na7gZiiwlxbB95G0Q6yTqYIDTD/x6z1t7FSSnvFVOs8f3tFk0ndDWq4h883A43SzmzSioM/OblVzd5GOIzGhoqm5viV6V+4VTIW7jzgWde/nqUaJM2G0GV1LmOmD3q3KDHIpGypMold0CN5pC8yeP0v0c+KQNsPjJ5vQX9LTVaPMKvxYFb8ImO762KpCg== 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=kZwb9nKCOR7UEggJ+K9LsOoN5zi9dyr8cvSdpn3I5JY=; b=emXEchdJ+Z9b8rRms6Q0wVSbmr/fh/gnMX7+fJmXQQXP5Mk8i9o/873m/IUjL/AvCQ+dVe/IVrirBJMun3eAi/1eipy02OWcjLLqr29h1ooCIGcri/OZkEA/2SCWI2w3WJ1hM50ytXl5gnkCiUflkzllNLf+3DPp6oMZpLHlYC6jeTLEGQpHIIQ7XSESTWchJGhCFylgeXuxJmV7diGDkCQxy6kCLHN+anV1PLZO7AlG2t6II1LsKZX0+O9yiDDiH2kxlkkUv9mIxW+PwBOVTYaNrNRCAf0uFyY7OZOyz4J3khu+WtP9bIui2mOSmmEdVD/b7i8/niJnq8ZEzuQ7Ng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ami.com; dmarc=pass action=none header.from=ami.com; dkim=pass header.d=ami.com; arc=none X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com (2603:10b6:208:328::16) by CO1PR10MB4564.namprd10.prod.outlook.com (2603:10b6:303:6f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.27; Fri, 1 Dec 2023 23:27:16 +0000 X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::9dc0:d4e1:1d40:3e33]) by BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::9dc0:d4e1:1d40:3e33%5]) with mapi id 15.20.7046.028; Fri, 1 Dec 2023 23:27:16 +0000 From: "Igor Kulchytskyy via groups.io" To: "abner.chang@amd.com" , "devel@edk2.groups.io" CC: Mike Maslenkin , Nickle Wang Subject: Re: [edk2-devel] [PATCH V3 1/9] RedfishPkg/BmcUsbNicLib: Update BMC USB NIC searching algorithm Thread-Topic: [EXTERNAL] [PATCH V3 1/9] RedfishPkg/BmcUsbNicLib: Update BMC USB NIC searching algorithm Thread-Index: AQHaIPL/hAxNpwzH4U+0/Y4CIExxSbCVGTTA Date: Fri, 1 Dec 2023 23:27:16 +0000 Message-ID: References: <20231127053107.1686-1-abner.chang@amd.com> <20231127053107.1686-2-abner.chang@amd.com> In-Reply-To: <20231127053107.1686-2-abner.chang@amd.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR10MB5185:EE_|CO1PR10MB4564:EE_ x-ms-office365-filtering-correlation-id: f8feda12-cadf-4cdb-bc87-08dbf2c50e13 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: oaKfrVXfLcAOzc3aM9KYx8YT24fVqnCKCETTWwIs2NIFoYrqk3yxAoMsyBNLklTBMEcUFaV87FJODFjMiCCxJ/ww568gEDb6omY3zTwgwl7LhYiI/G+U9klBjl2xRo39Ks6xgTmW6FJakqcp5xFN4eD5ojNZMvNo4PUqwmU1FYaWUNhPbMbKSbASpzo6LMLRX0EfDMh6J0tV7L3/QAYdauAvfGdGZolt5CnL7audlsdcMUlZG2sAHU9PS20zWqhnNZMfchoZsA8PlSQmLCsxETGamxVGXuxmfSEZzE4nLDDVMsOmWqjcOHT8F+ULr8enQ9MMNizjpd4OEwUx+ZgpUhwV/Hmfx15O0FgLSGVfyxHax5QqaFZ7ZNv3EDA01azWu9QBALfjl4Mqmjw5C8IovSY3eebn2VN81OYT6sxg8PWyNBo5gciTWV1RO6jxaWw7rJ1iSmm4zHJRWiqqxKvsTACrheFq/P8GrzDTpNl8Chi6HQIFisq48HuCanbTvheMK6J3pSV/lIVhHgSrLkDj3B0KMklkh3s2n3bWAv3HrLExU6YHRYAHmB/6XSB58UJSQ2i3UUL16SQI64qQ2JgWGdEI6AOHveLoXjelDPBuIAC35UgsOQEIUp8nHaRHVtzolgvEgrD9qzOw8GUcNbZaOQ== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Ca5FOS6YUdcxKWW3THvvdpOxJ7MNDEnB8uspHBE6Mc/gJvObBnHmweXnFqrQ?= =?us-ascii?Q?50M7KomLQwydP0T5xjXWN8kxM7+HVSMEN7RaI5nrkon1N5vSmWe9CBzBewib?= =?us-ascii?Q?OweDB4+hPpOZ6rGOQDdAYfnDnIM4w1cvQRIYf5W6Wz9zCYvWHYsqMIOJ+jiH?= =?us-ascii?Q?Kdq4NYpl8kc0jPnat/MQjRjuerVW30nCCIhXmGC4BKk5To86MCikznY8Yxpq?= =?us-ascii?Q?Y76v9tJffyZ8ztCjhGXcpgsl0KT98BkAxup+551/lO3PiN1WyQh57LLvwxG+?= =?us-ascii?Q?yBDr4xIQAhIlCv1m50c38jKj7OmFy4lFwa/1+gl6joZnX0thBbzXe2lOiNe7?= =?us-ascii?Q?jLSGU9gF0fe7PE9qNvkVlxpJW5w9dR59WJFhGqvGo1V8sqy4Vaq7pcglQAi+?= =?us-ascii?Q?b6s/3VOJmvBLKO0nPa2QR6GewZDn70Ki0hP0/mmQXi7N1f46o16WRl0qJucs?= =?us-ascii?Q?RUHGHpZY7BF1YJ4SPpwil8ea/wCACj3tn5t0/TfobISQUfRndJ3dAqWONbpe?= =?us-ascii?Q?8ivoTPlUaQkYLPaIWV6JdpxTQCMcv/jzUYbTAolD2fXvNNBnLW5CdeGQnWhb?= =?us-ascii?Q?ua488ULscJHuW4GDz6oEUacBrr1KIp7GoHhF26IhwOVQTgZSrwzn5yGB/aVl?= =?us-ascii?Q?vWl1f8VM4EI0cq1v1ZaE2xeG3JOE4M+FzRy5KQnTJNEHwjmoI9EYGNVv4hhf?= =?us-ascii?Q?9PdCtD6z2JOoHJN7+FaTZxzZhhDuJfw+ZYjtYFmGo6vJKlKKlbPrR3Rqkw5c?= =?us-ascii?Q?NL26/Mep7qB6IMgRYUEz18kGWezXkcGyj9EQst9321/zt50QsIxB3g/FXxg1?= =?us-ascii?Q?mfspQlDsPq3szkLdu1FhjgByMq8n5flLIi9RrvMOeyCrQBNULYnA4B0+Imuw?= =?us-ascii?Q?D+YIeIVaxSbZq2dw3n1FxzoeIjLWj2xbfwAqehQAHAhBfic5IILvo9HhRQYi?= =?us-ascii?Q?OLNJpZKVfyjqs3BQabd20mXXa5UQojc/RBxknYWldM4C9z4Db/GkzpyzSKe8?= =?us-ascii?Q?KfZZxksJuhcur5Oz8zh1uKrGIhRksQjFf+1pZP0h86kI+HTXy9qX45VMusBV?= =?us-ascii?Q?eW1xhKptOgILZeUkLVkatc5AmDu+b+sWDRWggSgetLHhyeLLx03dyyKZTkC4?= =?us-ascii?Q?y+sOrx/lMTP5OY99cXYEPrPaMhCdAv7gQQ++c8i3PHKniYR5f8j+7e3sliMT?= =?us-ascii?Q?BFZMX0Zhm+5a9CopX9SEp5VUSwXIhxsMQ5N4YPYlkuM1a88KKLCVtGyGh28I?= =?us-ascii?Q?X0cUnKIJ+r2p1EBa4IR67I5guhSUARIZ/xiMQLh8dhHT2OdkV5GHwHIqGLWh?= =?us-ascii?Q?39TMkREb4EWK2VnwqUqDLydaOJqIjWPFuPC26SDgnI1MPZRuF5MqIMcelIkP?= =?us-ascii?Q?UDbTpDsHf227bO1OcbLquyl8cFUgsGjkdjK9o2abcrMHGOflsLJz9Dgl43TL?= =?us-ascii?Q?tCsEQ+e8bMA2qBGkwrnq0ln1YobGOFikGPz9DXAoKM7R9Kcp2LtwRqsA6QUQ?= =?us-ascii?Q?02HQlLpNp3MATBh0ZR+BxbD/VlerJHZH2CRfSlnI5LLj/s5nscVvpAS9ltbH?= =?us-ascii?Q?4epJGLPiPlU1/F8x8b4=3D?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5185.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8feda12-cadf-4cdb-bc87-08dbf2c50e13 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Dec 2023 23:27:16.1537 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: l38qExA/it8z+eGbl1bc2Tj4Xra/zvkCzRj8otIE3fYpTIEdzA+s17L9GO3c/sVn X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4564 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,igork@ami.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: hjtZOx9LwhjUKDefa6H8EKPKx7686176AA= 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=h+XfgVxx; 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; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") Reviewed-by: Igor Kulchytskyy Regards, Igor -----Original Message----- From: abner.chang@amd.com Sent: Monday, November 27, 2023 12:31 AM To: devel@edk2.groups.io Cc: Mike Maslenkin ; Nickle Wang ; Igor Kulchytskyy Subject: [EXTERNAL] [PATCH V3 1/9] RedfishPkg/BmcUsbNicLib: Update BMC USB = NIC searching algorithm **CAUTION: The e-mail below is from an external source. Please exercise cau= tion before opening attachments, clicking links, or following guidance.** From: Abner Chang Update BMC USB NIC searching algorithm for IPv4 only. 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(-) diff --git a/RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformH= ostInterfaceBmcUsbNicLib.c b/RedfishPkg/Library/PlatformHostInterfaceBmcUsb= NicLib/PlatformHostInterfaceBmcUsbNicLib.c index 95900579118..e5bf70cfd58 100644 --- a/RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformHostInte= rfaceBmcUsbNicLib.c +++ b/RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformHostInte= rfaceBmcUsbNicLib.c @@ -368,7 +368,9 @@ RetrievedBmcUsbNicInfo ( )); CopyMem ((VOID *)&ThisInstance->RedfishIpAddressIpv4, (VOID *)&DestI= pAddress->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#platform= -with-bmc-and-the-bmc-exposed-usb-network-device + // The IP address at BMC USB NIC host end is the IP address at BMC e= nd minus 1. // CopyMem ((VOID *)&ThisInstance->HostIpAddressIpv4, (VOID *)&DestIpAd= dress->IpAddress, sizeof (DestIpAddress->IpAddress)); ThisInstance->HostIpAddressIpv4[sizeof (ThisInstance->HostIpAddressI= pv4) - 1] -=3D 1; @@ -729,8 +731,10 @@ HostInterfaceIpmiCheckMacAddress ( // // 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#platform= -with-bmc-and-the-bmc-exposed-usb-network-device + // Compare the first five elements of MAC address and the 6th elemen= t 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 matc= hed.\n")); @@ -962,6 +966,49 @@ UsbNicSearchUsbIo ( return EFI_NOT_FOUND; } +/** + 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 no= t found on this handle.\n")); + break; + } + + if ((DevicePath->Type =3D=3D MESSAGING_DEVICE_PATH) && (DevicePath->Su= bType =3D=3D MSG_MAC_ADDR_DP)) { + DevicePath =3D NextDevicePathNode (DevicePath); // Advance to next d= evice path protocol. + if (IsDevicePathEnd (DevicePath)) { + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, "IPv4 device path is not fou= nd 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) for = this SNP instance:\n ", BmcUsbNic->MacAddressSize)); + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " MAC address (in size %d) for = 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; if ((HandleNumer =3D=3D 0) || (HandleBuffer =3D=3D NULL)) { return EFI_INVALID_PARAMETER; @@ -1076,26 +1124,37 @@ CheckBmcUsbNicOnHandles ( DEBUG ((DEBUG_MANAGEABILITY, "%a: Entry, #%d SNP handle\n", __func__, Ha= ndleNumer)); - 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", Ind= ex)); + DEBUG ((DEBUG_ERROR, " Failed to locate device path on %d handle.= \n", __func__, Index)); continue; } + DevicePathStr =3D ConvertDevicePathToText (DevicePath, FALSE, FALSE); + if (DevicePathStr !=3D NULL) { + DEBUG ((DEBUG_MANAGEABILITY, " Device path: %s\n", DevicePathStr)= ); + 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), Devi= cePath); + Status =3D IdentifyNetworkMessageDevicePath (DevicePath); if (!EFI_ERROR (Status)) { - GotOneUsbNIc =3D TRUE; - break; + Status =3D IdentifyUsbNicBmcChannel (*(HandleBuffer + Index), De= vicePath); + if (!EFI_ERROR (Status)) { + GotBmcUsbNic =3D TRUE; + } } + + break; // Advance to next SNP handle. } DevicePath =3D NextDevicePathNode (DevicePath); @@ -1105,10 +1164,11 @@ CheckBmcUsbNicOnHandles ( } } - if (GotOneUsbNIc) { + if (GotBmcUsbNic) { return EFI_SUCCESS; } + DEBUG ((DEBUG_MANAGEABILITY, "No BMC USB NIC found on SNP handles\n")); return EFI_NOT_FOUND; } @@ -1139,62 +1199,70 @@ CheckBmcUsbNic ( DEBUG ((DEBUG_MANAGEABILITY, "%a: Entry, the registration key - 0x%08x.\= n", __func__, Registration)); - Handle =3D NULL; - Status =3D EFI_SUCCESS; - BufferSize =3D 0; + Handle =3D NULL; + Status =3D EFI_SUCCESS; - Status =3D gBS->LocateHandle ( - Registration =3D=3D NULL ? ByProtocol : ByRegisterNotify= , - &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 handles.= \n")); - return EFI_OUT_OF_RESOURCES; - } + do { + BufferSize =3D 0; + Status =3D gBS->LocateHandle ( + Registration =3D=3D NULL ? ByProtocol : ByRegister= Notify, + &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 handle= s.\n")); + return EFI_OUT_OF_RESOURCES; + } + + 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)) { + if (Registration !=3D NULL) { + DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " No more newly installed= SNP protocol for this registration - %r.\n", Status)); + return EFI_SUCCESS; + } - Status =3D gBS->LocateHandle ( - Registration =3D=3D NULL ? ByProtocol : ByRegisterNoti= fy, - &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; - } - // Check USB NIC on handles. - Status =3D CheckBmcUsbNicOnHandles (BufferSize/sizeof (EFI_HANDLE), Hand= leBuffer); - if (!EFI_ERROR (Status)) { - // Retrieve the rest of BMC USB NIC information for Redfish over IP in= formation - // and USB Network Interface V2. - Status =3D RetrievedBmcUsbNicInfo (); + // Check USB NIC on handles. + Status =3D CheckBmcUsbNicOnHandles (BufferSize/sizeof (EFI_HANDLE), Ha= ndleBuffer); if (!EFI_ERROR (Status)) { - DEBUG ((DEBUG_REDFISH_HOST_INTERFACE, " Install protocol to notif= y 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 IP = information + // and USB Network Interface V2. + Status =3D RetrievedBmcUsbNicInfo (); + 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))= ; + } } } - } - FreePool (HandleBuffer); + FreePool (HandleBuffer); + } while (Registration !=3D NULL); + return Status; } -- 2.37.1.windows.1 -The information contained in this message may be confidential and propriet= ary 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 desig= nee. If the reader of this message is not the intended recipient, you are o= n notice that any distribution of this message, in any form, is strictly pr= ohibited. Please promptly notify the sender by reply e-mail or by telephone= at 770-246-8600, and then delete or destroy all copies of the transmission= . -=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 (#111990): https://edk2.groups.io/g/devel/message/111990 Mute This Topic: https://groups.io/mt/102824318/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-