[AMD Official Use Only - General]

Just let you know I just merged this change. Igor can help to follow up the 
suggestions given by Leif and Mike.

Thanks
Abner

> -----Original Message-----
> From: Chang, Abner
> Sent: Wednesday, November 15, 2023 9:20 AM
> To: Mike Maslenkin <mike.maslen...@gmail.com>; devel@edk2.groups.io;
> ig...@ami.com
> Cc: Leif Lindholm <quic_llind...@quicinc.com>; Nickle Wang
> <nick...@nvidia.com>
> Subject: RE: [edk2-devel] [PATCH v5 2/2] RedfishPkg: RedfishDiscoverDxe:
> Optimize the Redfish Discover flow
>
> Hi Mike and Leif,
> Thanks for your comments on this change. As we are rushing to get this
> change to be pulled in stable release 202312 this week, I will just merge this
> code to master branch and let the discussing keeps going.
> I think there is no functionality difference base on your suggestions, but 
> it's
> about the coding practice and readability.
>
> Hi Igor,
> Could you please resend the V6 after stable tag is released if Mike and Leif's
> comment is reasonable to you?
>
> Thanks
> Abner
>
> > -----Original Message-----
> > From: Mike Maslenkin <mike.maslen...@gmail.com>
> > Sent: Wednesday, November 15, 2023 7:53 AM
> > To: devel@edk2.groups.io; ig...@ami.com
> > Cc: Leif Lindholm <quic_llind...@quicinc.com>; Chang, Abner
> > <abner.ch...@amd.com>; Nickle Wang <nick...@nvidia.com>
> > Subject: Re: [edk2-devel] [PATCH v5 2/2] RedfishPkg: RedfishDiscoverDxe:
> > Optimize the Redfish Discover flow
> >
> > Caution: This message originated from an External Source. Use proper
> caution
> > when opening attachments, clicking links, or responding.
> >
> >
> > On Tue, Nov 14, 2023 at 9:57 PM Igor Kulchytskyy via groups.io
> > <igork=ami....@groups.io> wrote:
> > >
> > > Hi Leif,
> > > Please see my comments below.
> > > Thank you,
> > > Igor
> > >
> > >
> > > -----Original Message-----
> > > From: Leif Lindholm <quic_llind...@quicinc.com>
> > > Sent: Tuesday, November 14, 2023 12:26 PM
> > > To: devel@edk2.groups.io; Igor Kulchytskyy <ig...@ami.com>
> > > Cc: Abner Chang <abner.ch...@amd.com>; Nickle Wang
> > <nick...@nvidia.com>
> > > Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v5 2/2] RedfishPkg:
> > RedfishDiscoverDxe: Optimize the Redfish Discover flow
> > >
> > >
> > > **CAUTION: The e-mail below is from an external source. Please exercise
> > caution before opening attachments, clicking links, or following guidance.**
> > >
> > > On 2023-11-14 14:28, Igor Kulchytskyy via groups.io wrote:
> > > > Filter out the network interfaces which are not supported by
> > > > Redfish Host Interface.
> > > >
> > > > Cc: Abner Chang <abner.ch...@amd.com>
> > > > Cc: Nickle Wang <nick...@nvidia.com>
> > > > Signed-off-by: Igor Kulchytskyy <ig...@ami.com>
> > > > ---
> > > >   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
> > >
> > >
> > > > @@ -1601,10 +1681,22 @@ 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 (IS_TCP4_MATCH (IpType) || IS_TCP6_MATCH (IpType)) {
> > >
> > > The logic of these macros is inverted compared to their names, though.
> > >
> > > You want this test to read
> > >    if (!IS_TCP4_MATCH (IpType) && !IS_TCP6_MATCH (IpType)) {
> > >
> > > > +      continue;
> > > > +    }
> > > > +
> > > >       Status = gBS->OpenProtocol (
> > > >                       // Already in list?
> > > >                       ControllerHandle,
> > >
> > > > 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 == ProtocolTypeTcp6))
> > > > +#define VALID_TCP4(TargetNetworkInterface, ThisNetworkInterface)
> > (!TargetNetworkInterface->IsIpv6 && (ThisNetworkInterface-
> > >NetworkProtocolType == ProtocolTypeTcp4))
> > > > +#define IS_TCP4_MATCH(IpType)
> > ((gRequiredProtocol[Index].ProtocolType == ProtocolTypeTcp4) &&
> (IpType !=
> > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4))
> > > > +#define IS_TCP6_MATCH(IpType)
> > ((gRequiredProtocol[Index].ProtocolType == ProtocolTypeTcp6) &&
> (IpType !=
> > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP6))
> > >
> > > And these macros to test for ==, not !=
> > >
> > >
> > > Igor: First version tested "==", but we agreed that it may not work if we
> have
> > a wrong value of IpType.
> > >
> > > Otherwise the code reads like it does the opposite of what it does.
> > >
> > > (You could also keep the logic and call the macros IS_TCP#_MISMATCH, but
> > > that feels a bit convoluted.)
> > >
> > > Igor: I would prefer to go with IS_TCP#_MISMATCH names.
> > >
> > > Regards,
> > >
> > > Leif
> >
> > Sorry, could I add my 2 cents?
> >
> > For me all newly added defines looks bad, just because those
> > implicitly use reference to a global variable
> > plus local variable state (i.e  current cycle index).
> >
> > Could we rewrite code in a simple and straight forward manner, similar to:
> >
> > if (IpType ==
> > REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_UNKNOWN) {
> >   // The protocol type is not specified in SMBIOS table type 42h
> >   return EFI_UNSUPPORTED;
> > }
> >
> > for (Index = 0; Index < ListCount; Index++) {
> >   if ((gRequiredProtocol[Index].ProtocolType == ProtocolTypeTcp4) &&
> >      (IpType !=
> REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4)) {
> >      continue;
> >   }
> >   if ((gRequiredProtocol[Index].ProtocolType == ProtocolTypeTcp6) &&
> >      (IpType !=
> REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP6)) {
> >      continue;
> >   }
> >   <skip>
> >
> > Regards,
> > Mike.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111233): https://edk2.groups.io/g/devel/message/111233
Mute This Topic: https://groups.io/mt/102584140/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to