public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <quic_llindhol@quicinc.com>
To: <devel@edk2.groups.io>, <gaoliming@byosoft.com.cn>,
	<nicklew@nvidia.com>,
	"'Kinney, Michael D'" <michael.d.kinney@intel.com>,
	'Andrew Fish' <afish@apple.com>
Cc: 'Igor Kulchytskyy' <igork@ami.com>,
	"'Chang, Abner'" <abner.chang@amd.com>
Subject: Re: [edk2-devel] 回复: [edk2-stable202311] [PATCH v3] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx
Date: Thu, 9 Nov 2023 14:48:20 +0000	[thread overview]
Message-ID: <d5a05692-3b21-4d30-8e66-89fa14b4c87d@quicinc.com> (raw)
In-Reply-To: <011b01da1313$a157c080$e4074180$@byosoft.com.cn>

(You have my old now-dysfunctional @nuviainc.com email address on cc, 
please delete that one if you can.)

I think it's fine to merge this bugfix, but I have a couple of review 
comments I will make on the v3 code itself, replying to that submission.
(I am however not the maintainer of RedFishPkg, so Nickle is free to 
ignore me and push this version.)

/
     Leif


On 2023-11-09 13:49, gaoliming via groups.io wrote:
> Nickle:
> 
>   This is a bug fix. Its impact is only in RedfishDiscoverDxe. I think 
> it can be merged for this stable tag.
> 
> Thanks
> 
> Liming
> 
> *发件人:*devel@edk2.groups.io <devel@edk2.groups.io> *代表 *Nickle Wang 
> via groups.io
> *发送时间:*2023年11月8日10:44
> *收件人:*Liming Gao <gaoliming@byosoft.com.cn>; Kinney, Michael D 
> <michael.d.kinney@intel.com>; devel@edk2.groups.io
> *抄送:*Igor Kulchytskyy <igork@ami.com>; Chang, Abner <abner.chang@amd.com>
> *主题:*Re: [edk2-devel] [PATCH v3] RedfishPkg: RedfishDiscoverDxe: Fix 
> issue if IPv4 installed after RestEx
> 
> Hi @Liming Gao <mailto:gaoliming@byosoft.com.cn>, @Kinney, Michael D 
> <mailto:michael.d.kinney@intel.com>
> 
>> If the patch is sent before Soft Feature Freeze, and plans to catch this stable tag, the patch contributor need reply to his patch and notify edk2 community
> 
> We would like to include this fix to edk2-stable202311 release. Could 
> you please help us to merge this patch? This patch review was started on 
> November 1: https://edk2.groups.io/g/devel/message/110440 
> <https://edk2.groups.io/g/devel/message/110440>. Anber and I gave 
> reviewed-by to this patch today. We have a pull request ready for 
> merging here: https://github.com/tianocore/edk2/pull/4994 
> <https://github.com/tianocore/edk2/pull/4994>
> 
> Thanks,
> 
> Nickle
> 
>> -----Original Message-----
> 
>> From: devel@edk2.groups.io <mailto:devel@edk2.groups.io> <devel@edk2.groups.io 
> <mailto:devel@edk2.groups.io>> On Behalf Of Chang, Abner
> 
>> via groups.io
> 
>> Sent: Wednesday, November 8, 2023 8:14 AM
> 
>> To: Igor Kulchytskyy <igork@ami.com <mailto:igork@ami.com>>; devel@edk2.groups.io 
> <mailto:devel@edk2.groups.io>
> 
>> Cc: Nickle Wang <nicklew@nvidia.com <mailto:nicklew@nvidia.com>>
> 
>> Subject: Re: [edk2-devel] [PATCH v3] RedfishPkg: RedfishDiscoverDxe: Fix issue if
> 
>> IPv4 installed after RestEx
> 
>> 
> 
>> External email: Use caution opening links or attachments
> 
>> 
> 
>> 
> 
>> [AMD Official Use Only - General]
> 
>> 
> 
>> Reviewed-by: Abner Chang <abner.chang@amd.com <mailto:abner.chang@amd.com>>
> 
>> 
> 
>> > -----Original Message-----
> 
>> > From: Igor Kulchytskyy <igork@ami.com <mailto:igork@ami.com>>
> 
>> > Sent: Tuesday, November 7, 2023 8:06 PM
> 
>> > To: devel@edk2.groups.io <mailto:devel@edk2.groups.io>
> 
>> > Cc: Chang, Abner <Abner.Chang@amd.com <mailto:Abner.Chang@amd.com>>; Nickle Wang
> 
>> > <nicklew@nvidia.com <mailto:nicklew@nvidia.com>>
> 
>> > Subject: [PATCH v3] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4
> 
>> > installed after RestEx
> 
>> >
> 
>> > Caution: This message originated from an External Source. Use proper
> 
>> > caution when opening attachments, clicking links, or responding.
> 
>> >
> 
>> >
> 
>> > Supported function of the driver changed to wait for all newtwork
> 
>> > interface to be installed.
> 
>> > Filer out the network interfaces which are not supported by Redfish
> 
>> > Host Interface.
> 
>> >
> 
>> > Cc: Abner Chang <abner.chang@amd.com <mailto:abner.chang@amd.com>>
> 
>> > Cc: Nickle Wang <nicklew@nvidia.com <mailto:nicklew@nvidia.com>>
> 
>> > Signed-off-by: Igor Kulchytskyy <igork@ami.com <mailto:igork@ami.com>>
> 
>> > ---
> 
>> >  RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c | 165
> 
>> > ++++++++++++++------
> 
>> >  1 file changed, 117 insertions(+), 48 deletions(-)
> 
>> >
> 
>> > diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
> 
>> > b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
> 
>> > index 23da3b968f..85e47843e4 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 =
> 
>> > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode
> 
>> > (&mEfiRedfishDiscoverNetworkInterface);
> 
>> >    while (TRUE) {
> 
>> > -    if (CompareMem ((VOID *)&ThisNetworkInterface->MacAddress,
> 
>> > &TargetNetworkInterface->MacAddress, ThisNetworkInterface-
> 
>> > >HwAddressSize) == 0) {
> 
>> > +    if ((CompareMem ((VOID *)&ThisNetworkInterface->MacAddress,
> 
>> > &TargetNetworkInterface->MacAddress, ThisNetworkInterface-
> 
>> > >HwAddressSize) == 0) &&
> 
>> > +        ((TargetNetworkInterface->IsIpv6 && (ThisNetworkInterface-
> 
>> > >NetworkProtocolType == ProtocolTypeTcp6)) ||
> 
>> > +         (!TargetNetworkInterface->IsIpv6 && (ThisNetworkInterface-
> 
>> > >NetworkProtocolType == ProtocolTypeTcp4))))
> 
>> > +    {
> 
>> >        return ThisNetworkInterface;
> 
>> >      }
> 
>> >
> 
>> > @@ -354,6 +361,10 @@ GetTargetNetworkInterfaceInternalByController (
> 
>> > {
> 
>> >    EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL
> 
>> > *ThisNetworkInterface;
> 
>> >
> 
>> > +  if (IsListEmpty (&mEfiRedfishDiscoverNetworkInterface)) {
> 
>> > +    return NULL;
> 
>> > +  }
> 
>> > +
> 
>> >    ThisNetworkInterface =
> 
>> > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode
> 
>> > (&mEfiRedfishDiscoverNetworkInterface);
> 
>> >    while (TRUE) {
> 
>> >      if (ThisNetworkInterface->OpenDriverControllerHandle ==
> 
>> > 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             = NULL;
> 
>> > +  DeviceDescriptor = NULL;
> 
>> > +  if (mSmbios == NULL) {
> 
>> > +    Status = gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL,
> 
>> > + (VOID
> 
>> > **)&mSmbios);
> 
>> > +    if (EFI_ERROR (Status)) {
> 
>> > +      return
> 
>> > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_UNKNOWN;
> 
>> > +    }
> 
>> > +  }
> 
>> > +
> 
>> > +  Status = RedfishGetHostInterfaceProtocolData (mSmbios,
> 
>> > &DeviceDescriptor, &Data); // Search for SMBIOS type 42h
> 
>> > +  if (!EFI_ERROR (Status) && (Data != NULL) &&
> 
>> > +      (Data->HostIpAssignmentType == 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 = RedfishGetHostInterfaceProtocolData (mSmbios,
> 
>> > &DeviceDescriptor, &Data); // Search for SMBIOS type 42h
> 
>> >    if (!EFI_ERROR (Status) && (Data != NULL) && (DeviceDescriptor !=
> 
>> > NULL)) {
> 
>> > +    if ((Instance->NetworkInterface->NetworkProtocolType ==
> 
>> > ProtocolTypeTcp4) &&
> 
>> > +        (Data->HostIpAddressFormat !=
> 
>> > 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 ==
> 
>> > ProtocolTypeTcp6) &&
> 
>> > +               (Data->HostIpAddressFormat !=
> 
>> > 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 interface.
> 
>> >      // Check with MAC address using Device Descriptor Data Device
> 
>> > Type 04 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 =
> 
>> > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode
> 
>> > (&mEfiRedfishDiscoverNetworkInterface);
> 
>> >    while (TRUE) {
> 
>> > +    // If Get Subnet Info failed then skip this interface
> 
>> > +    Status = NetworkInterfaceGetSubnetInfo (ThisNetworkInterfaceIntn,
> 
>> > ImageHandle); // Get subnet info
> 
>> > +    if (EFI_ERROR (Status)) {
> 
>> > +      if (IsNodeAtEnd (&mEfiRedfishDiscoverNetworkInterface,
> 
>> > &ThisNetworkInterfaceIntn->Entry)) {
> 
>> > +        break;
> 
>> > +      }
> 
>> > +
> 
>> > +      ThisNetworkInterfaceIntn =
> 
>> > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetNextNode
> 
>> > (&mEfiRedfishDiscoverNetworkInterface,
> 
>> > &ThisNetworkInterfaceIntn->Entry);
> 
>> > +      continue;
> 
>> > +    }
> 
>> > +
> 
>> >      ThisNetworkInterface->IsIpv6 = FALSE;
> 
>> >      if (CheckIsIpVersion6 (ThisNetworkInterfaceIntn)) {
> 
>> >        ThisNetworkInterface->IsIpv6 = 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 != NULL) {
> 
>> >      TargetNetworkInterfaceInternal =
> 
>> > GetTargetNetworkInterfaceInternal (TargetNetworkInterface);
> 
>> > -    NumNetworkInterfaces           = 1;
> 
>> > +    if (TargetNetworkInterfaceInternal == NULL) {
> 
>> > +      DEBUG ((DEBUG_ERROR, "%a:No network interface on platform.\n",
> 
>> > __func__));
> 
>> > +      return EFI_UNSUPPORTED;
> 
>> > +    }
> 
>> > +
> 
>> > +    NumNetworkInterfaces = 1;
> 
>> >    } else {
> 
>> >      TargetNetworkInterfaceInternal =
> 
>> > (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *)GetFirstNode
> 
>> > (&mEfiRedfishDiscoverNetworkInterface);
> 
>> >      NumNetworkInterfaces           = NumberOfNetworkInterface ();
> 
>> > @@ -1260,7 +1335,13 @@ RedfishServiceAcquireService (
> 
>> >        // Get subnet information in case subnet information is not set because
> 
>> >        // RedfishServiceGetNetworkInterfaces hasn't been called yet.
> 
>> >        //
> 
>> > -      NetworkInterfaceGetSubnetInfo (TargetNetworkInterfaceInternal,
> 
>> > ImageHandle);
> 
>> > +      Status1 = NetworkInterfaceGetSubnetInfo
> 
>> > (TargetNetworkInterfaceInternal, ImageHandle);
> 
>> > +      if (EFI_ERROR (Status1)) {
> 
>> > +        DEBUG ((DEBUG_ERROR, "%a: Get subnet information fail.\n",
> 
>> > __func__));
> 
>> > +        FreePool (Instance);
> 
>> > +        continue;
> 
>> > +      }
> 
>> > +
> 
>> >        NewInstance = TRUE;
> 
>> >      }
> 
>> >
> 
>> > @@ -1547,25 +1628,26 @@ TestForRequiredProtocols (
> 
>> >                      ControllerHandle,
> 
>> >                      EFI_OPEN_PROTOCOL_TEST_PROTOCOL
> 
>> >                      );
> 
>> > +    if (EFI_ERROR (Status)) {
> 
>> > +      return EFI_UNSUPPORTED;
> 
>> > +    }
> 
>> > +
> 
>> > +    Status = gBS->OpenProtocol (
> 
>> > +                    ControllerHandle,
> 
>> > +                    gRequiredProtocol[Index].DiscoveredProtocolGuid,
> 
>> > +                    (VOID **)&Id,
> 
>> > +                    This->DriverBindingHandle,
> 
>> > +                    ControllerHandle,
> 
>> > +                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
> 
>> > +                    );
> 
>> >      if (!EFI_ERROR (Status)) {
> 
>> > -      Status = gBS->OpenProtocol (
> 
>> > -                      ControllerHandle,
> 
>> > -                      gRequiredProtocol[Index].DiscoveredProtocolGuid,
> 
>> > -                      (VOID **)&Id,
> 
>> > -                      This->DriverBindingHandle,
> 
>> > -                      ControllerHandle,
> 
>> > -                      EFI_OPEN_PROTOCOL_GET_PROTOCOL
> 
>> > -                      );
> 
>> > -      if (EFI_ERROR (Status)) {
> 
>> > -        if (Index == ListCount - 1) {
> 
>> > -          DEBUG ((DEBUG_INFO, "%a: all required protocols are found on this
> 
>> > controller handle: %p.\n", __func__, ControllerHandle));
> 
>> > -          return EFI_SUCCESS;
> 
>> > -        }
> 
>> > -      }
> 
>> > +      // Already installed
> 
>> > +      return EFI_UNSUPPORTED;
> 
>> >      }
> 
>> >    }
> 
>> >
> 
>> > -  return EFI_UNSUPPORTED;
> 
>> > +  DEBUG ((DEBUG_MANAGEABILITY, "%a: all required protocols are found
> 
>> > + on
> 
>> > this controller handle: %p.\n", __func__, ControllerHandle));
> 
>> > +  return EFI_SUCCESS;
> 
>> >  }
> 
>> >
> 
>> >  /**
> 
>> > @@ -1600,10 +1682,24 @@ BuildupNetworkInterface (
> 
>> >    EFI_REDFISH_DISCOVER_REST_EX_INSTANCE_INTERNAL   *RestExInstance;
> 
>> >    EFI_TPL                                          OldTpl;
> 
>> >    BOOLEAN                                          NewNetworkInterfaceInstalled;
> 
>> > +  UINT8                                            IpType;
> 
>> > +  UINTN                                            ListCount;
> 
>> >
> 
>> > +  ListCount                    = (sizeof (gRequiredProtocol) / sizeof
> 
>> > (REDFISH_DISCOVER_REQUIRED_PROTOCOL));
> 
>> >    NewNetworkInterfaceInstalled = FALSE;
> 
>> >    Index                        = 0;
> 
>> > -  do {
> 
>> > +
> 
>> > +  // Get IP Type to filter out unnecessary network protocol if
> 
>> > + possible  IpType = GetHiIpProtocolType ();
> 
>> > +
> 
>> > +  for (Index = 0; Index < ListCount; Index++) {
> 
>> > +    // Check IP Type and skip an unnecessary network protocol if does
> 
>> > + not
> 
>> > match
> 
>> > +    if (((gRequiredProtocol[Index].ProtocolType == ProtocolTypeTcp4)
> 
>> > + &&
> 
>> > (IpType == REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP6)) ||
> 
>> > +        ((gRequiredProtocol[Index].ProtocolType == ProtocolTypeTcp6)
> 
>> > + &&
> 
>> > (IpType == REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4)))
> 
>> > +    {
> 
>> > +      continue;
> 
>> > +    }
> 
>> > +
> 
>> >      Status = gBS->OpenProtocol (
> 
>> >                      // Already in list?
> 
>> >                      ControllerHandle, @@ -1614,11 +1710,6 @@
> 
>> > BuildupNetworkInterface (
> 
>> >                      EFI_OPEN_PROTOCOL_GET_PROTOCOL
> 
>> >                      );
> 
>> >      if (!EFI_ERROR (Status)) {
> 
>> > -      Index++;
> 
>> > -      if (Index == (sizeof (gRequiredProtocol) / sizeof
> 
>> > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) {
> 
>> > -        break;
> 
>> > -      }
> 
>> > -
> 
>> >        continue;
> 
>> >      }
> 
>> >
> 
>> > @@ -1631,11 +1722,6 @@ BuildupNetworkInterface (
> 
>> >                      EFI_OPEN_PROTOCOL_GET_PROTOCOL
> 
>> >                      );
> 
>> >      if (EFI_ERROR (Status)) {
> 
>> > -      Index++;
> 
>> > -      if (Index == (sizeof (gRequiredProtocol) / sizeof
> 
>> > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) {
> 
>> > -        break;
> 
>> > -      }
> 
>> > -
> 
>> >        continue;
> 
>> >      }
> 
>> >
> 
>> > @@ -1694,11 +1780,6 @@ BuildupNetworkInterface (
> 
>> >                      ProtocolDiscoverIdPtr
> 
>> >                      );
> 
>> >      if (EFI_ERROR (Status)) {
> 
>> > -      Index++;
> 
>> > -      if (Index == (sizeof (gRequiredProtocol) / sizeof
> 
>> > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) {
> 
>> > -        break;
> 
>> > -      }
> 
>> > -
> 
>> >        continue;
> 
>> >      }
> 
>> >
> 
>> > @@ -1755,25 +1836,13 @@ BuildupNetworkInterface (
> 
>> >            }
> 
>> >          } else {
> 
>> >            DEBUG ((DEBUG_MANAGEABILITY, "%a: Not REST EX, continue
> 
>> > with next\n", __func__));
> 
>> > -          Index++;
> 
>> > -          if (Index == (sizeof (gRequiredProtocol) / sizeof
> 
>> > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) {
> 
>> > -            break;
> 
>> > -          }
> 
>> > -
> 
>> >            continue;
> 
>> >          }
> 
>> >        }
> 
>> >
> 
>> >        return Status;
> 
>> > -    } else {
> 
>> > -      Index++;
> 
>> > -      if (Index == (sizeof (gRequiredProtocol) / sizeof
> 
>> > (REDFISH_DISCOVER_REQUIRED_PROTOCOL))) {
> 
>> > -        break;
> 
>> > -      }
> 
>> > -
> 
>> > -      continue;
> 
>> >      }
> 
>> > -  } while (Index < (sizeof (gRequiredProtocol) / sizeof
> 
>> > (REDFISH_DISCOVER_REQUIRED_PROTOCOL)));
> 
>> > +  }
> 
>> >
> 
>> >    return EFI_DEVICE_ERROR;
> 
>> >  }
> 
>> > --
> 
>> > 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, you 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 telephone at 770-246-8600, and then
> 
>> delete or destroy all copies of the transmission.
> 
>> 
> 
>> 
> 
>> 
> 
>> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#110988): https://edk2.groups.io/g/devel/message/110988
Mute This Topic: https://groups.io/mt/102485712/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2023-11-09 14:48 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-07 12:06 [edk2-devel] [PATCH v3] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx Igor Kulchytskyy via groups.io
2023-11-07 13:03 ` Nickle Wang via groups.io
2023-11-07 14:00 ` Mike Maslenkin
2023-11-08  0:13 ` Chang, Abner via groups.io
2023-11-08  2:43   ` Nickle Wang via groups.io
2023-11-09 13:49     ` [edk2-devel] 回复: [edk2-stable202311] " gaoliming via groups.io
2023-11-09 14:48       ` Leif Lindholm [this message]
2023-11-09 15:12 ` [edk2-devel] " Leif Lindholm
2023-11-10  0:39   ` Chang, Abner via groups.io
2023-11-10 13:53     ` Leif Lindholm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d5a05692-3b21-4d30-8e66-89fa14b4c87d@quicinc.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox