public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Abner Chang" <abner.chang@hpe.com>
To: gaoliming <gaoliming@byosoft.com.cn>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>,
	'Zhiguang Liu' <zhiguang.liu@intel.com>,
	"Wang, Nickle (HPS SW)" <nickle.wang@hpe.com>,
	"O'Hanley, Peter (EXL)" <peter.ohanley@hpe.com>
Subject: Re: [EFI Shell PATCH v2 1/2] MdePkg/Include: EFI Redfish Discover protocol
Date: Mon, 9 Nov 2020 04:08:41 +0000	[thread overview]
Message-ID: <CS1PR8401MB114407B73FDEF182835767C9FFEA0@CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <004d01d6b639$49cfe200$dd6fa600$@byosoft.com.cn>

Liming, feedbacks in below.

> -----Original Message-----
> From: gaoliming [mailto:gaoliming@byosoft.com.cn]
> Sent: Monday, November 9, 2020 9:40 AM
> To: Chang, Abner (HPS SW/FW Technologist) <abner.chang@hpe.com>;
> devel@edk2.groups.io
> Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>; 'Zhiguang Liu'
> <zhiguang.liu@intel.com>; Wang, Nickle (HPS SW) <nickle.wang@hpe.com>;
> O'Hanley, Peter (EXL) <peter.ohanley@hpe.com>
> Subject: 回复: [EFI Shell PATCH v2 1/2] MdePkg/Include: EFI Redfish Discover
> protocol
> 
> Abner:
>  I further check UEFI Spec 2.8 A and review the code change. I find some
> structure definitions are different. Can you make sure the one in MdePkg to
> align to UEFI spec?
> 
>  Now, I find these below three structure definition don't follow UEFI spec.
> Please help check them.
>  EFI_REDFISH_DISCOVERED_INFORMATION,
> EFI_REDFISH_DISCOVERED_INSTANCE and
> EFI_REDFISH_DISCOVERED_TOKEN

I also found some inconsistencies between UEFI spec and the implementation. Some definitions are changed when we implement the code.
ECR is submitted to Mantis,
https://mantis.uefi.org/mantis/view.php?id=2172
We can just halt this patch until the ECR is approved.

> 
>  Besides, the driver should include the header file that defines Guid if the
> driver uses those Guid. So, those two guids are not required to be listed here.
> 
> extern EFI_GUID gEfiRestExProtocolGuid;
> extern EFI_GUID gEfiRestExServiceBindingProtocolGuid;
Ok, will remove these guids.

> 
> Thanks
> Liming
> > -----邮件原件-----
> > 发件人: Abner Chang <abner.chang@hpe.com>
> > 发送时间: 2020年11月6日 15:48
> > 收件人: devel@edk2.groups.io
> > 抄送: Michael D Kinney <michael.d.kinney@intel.com>; Liming Gao
> > <gaoliming@byosoft.com.cn>; Zhiguang Liu <zhiguang.liu@intel.com>;
> > Nickle Wang <nickle.wang@hpe.com>; Peter O'Hanley
> > <peter.ohanley@hpe.com>
> > 主题: [EFI Shell PATCH v2 1/2] MdePkg/Include: EFI Redfish Discover
> protocol
> >
> > Move GUID definition of EFI Redfish Discover protocol to under MdePkg.
> > With this we don't have dependency of RedfishPkg in ShellPkg.
> >
> > Signed-off-by: Abner Chang <abner.chang@hpe.com>
> >
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> > Cc: Nickle Wang <nickle.wang@hpe.com>
> > Cc: Peter O'Hanley <peter.ohanley@hpe.com>
> > ---
> >  .../Include/Protocol/RedfishDiscover.h        | 42 ++++++++-----------
> >  MdePkg/MdePkg.dec                             |  3 ++
> >  RedfishPkg/RedfishPkg.dec                     |  4 --
> >  3 files changed, 21 insertions(+), 28 deletions(-)  rename
> > {RedfishPkg => MdePkg}/Include/Protocol/RedfishDiscover.h (87%)
> >
> > diff --git a/RedfishPkg/Include/Protocol/RedfishDiscover.h
> > b/MdePkg/Include/Protocol/RedfishDiscover.h
> > similarity index 87%
> > rename from RedfishPkg/Include/Protocol/RedfishDiscover.h
> > rename to MdePkg/Include/Protocol/RedfishDiscover.h
> > index 4c91605c4e..8fe23470e1 100644
> > --- a/RedfishPkg/Include/Protocol/RedfishDiscover.h
> > +++ b/MdePkg/Include/Protocol/RedfishDiscover.h
> > @@ -5,16 +5,13 @@
> >
> >    SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > +  @par Revision Reference:
> > +  This Protocol is introduced in UEFI Specification 2.8
> >  **/
> >
> >  #ifndef EFI_REDFISH_DISCOVER_PROTOCOL_H_  #define
> > EFI_REDFISH_DISCOVER_PROTOCOL_H_
> >
> > -#include <IndustryStandard/Http11.h>
> > -#include <Protocol/Http.h>
> > -#include <Protocol/RestEx.h>
> > -#include <Uefi.h>
> > -
> >  //
> >  // GUID definitions
> >  //
> > @@ -40,12 +37,9 @@ typedef UINT32 EFI_REDFISH_DISCOVER_FLAG;
> >                                                         ///< 3 to 15.
> > The corresponding duration is 8 to 2^15 seconds.
> >                                                         ///< Duration
> > is only valid when EFI_REDFISH_DISCOVER_KEEP_ALIVE
> >                                                         ///< is set to
> > 1.
> > -#define EFI_REDFISH_DISCOVER_DURATION_BIT_POS 8
> > -
> >  typedef struct _EFI_REDFISH_DISCOVER_PROTOCOL
> > EFI_REDFISH_DISCOVER_PROTOCOL; -typedef struct
> > _EFI_REDFISH_DISCOVERED_INFORMATION
> > EFI_REDFISH_DISCOVERED_INFORMATION;
> >
> > -typedef struct _EFI_REDFISH_DISCOVERED_INFORMATION {
> > +typedef struct {
> >    EFI_HANDLE RedfishRestExHandle;           ///< REST EX EFI handle
> > associated with this Redfish service.
> >    BOOLEAN         IsUdp6;                   ///< Indicates it's IP
> > versino 6.
> >    EFI_IP_ADDRESS  RedfishHostIpAddress;     ///< IP address of Redfish
> > service.
> > @@ -57,7 +51,7 @@ typedef struct
> > _EFI_REDFISH_DISCOVERED_INFORMATION {
> >    CHAR16 *Product;                          ///< Redfish service
> > product name.
> >    CHAR16 *ProductVer;                       ///< Redfish service
> > product version.
> >    BOOLEAN UseHttps;                         ///< Using HTTPS.
> > -};
> > +} EFI_REDFISH_DISCOVERED_INFORMATION;
> >
> >  typedef struct {
> >    EFI_STATUS Status;                                ///< Status of
> > Redfish service discovery.
> > @@ -75,7 +69,7 @@ typedef struct {
> >      EFI_IP_ADDRESS        SubnetId;               ///< Subnet ID.
> >      UINT8                 SubnetPrefixLength;     ///< Subnet
> > prefix-length for IPv4 and IPv6.
> >      UINT16                VlanId;                 ///< VLAN ID.
> > -} EFI_REDFISH_DISCOVER_NETWORK_INSTANCE;
> > +} EFI_REDFISH_DISCOVER_NETWORK_INTERFACE;
> >
> >  typedef struct {
> >    UINT32    Signature;            ///< Token signature.
> > @@ -112,10 +106,10 @@ typedef struct {  typedef  EFI_STATUS  (EFIAPI
> > *EFI_REDFISH_DISCOVER_NETWORK_LIST)(
> > -  IN EFI_REDFISH_DISCOVER_PROTOCOL   *This,
> > -  IN EFI_HANDLE                      ImageHandle,
> > -  OUT UINTN
> > *NumberOfNetworkInterfaces,
> > -  OUT EFI_REDFISH_DISCOVER_NETWORK_INSTANCE
> > **NetworkInterfaces
> > +  IN EFI_REDFISH_DISCOVER_PROTOCOL           *This,
> > +  IN EFI_HANDLE                              ImageHandle,
> > +  OUT UINTN
> > *NumberOfNetworkInterfaces,
> > +  OUT EFI_REDFISH_DISCOVER_NETWORK_INTERFACE
> > **NetworkInterfaces
> >  );
> >
> >  /**
> > @@ -147,7 +141,7 @@ EFI_STATUS
> >  (EFIAPI *EFI_REDFISH_DISCOVER_ACQUIRE_SERVICE)(
> >    IN EFI_REDFISH_DISCOVER_PROTOCOL          *This,
> >    IN EFI_HANDLE                             ImageHandle,
> > -  IN EFI_REDFISH_DISCOVER_NETWORK_INSTANCE
> > *TargetNetworkInterface,
> > +  IN EFI_REDFISH_DISCOVER_NETWORK_INTERFACE
> > *TargetNetworkInterface OPTIONAL,
> >    IN EFI_REDFISH_DISCOVER_FLAG              Flags,
> >    IN EFI_REDFISH_DISCOVERED_TOKEN           *Token
> >  );
> > @@ -155,8 +149,8 @@ EFI_STATUS
> >  /**
> >    This function aborts Redfish service discovery on the given network
> > interface.
> >
> > -  @param[in]    This          EFI_REDFISH_DISCOVER_PROTOCOL
> > instance.
> > -  @param[in]    TargetNetworkInterface     Target NIC to do the
> > discovery.
> > +  @param[in]    This
> > EFI_REDFISH_DISCOVER_PROTOCOL instance.
> > +  @param[in]    TargetNetworkInterface  Target NIC to do the
> > discovery.
> >
> >    @retval EFI_SUCCESS             REST EX instance of discovered
> > Redfish services are returned.
> >    @retval Others                  Fail to abort Redfish service
> > discovery.
> > @@ -165,15 +159,15 @@ EFI_STATUS
> >  typedef
> >  EFI_STATUS
> >  (EFIAPI *EFI_REDFISH_DISCOVER_ABORT_ACQUIRE)(
> > -  IN EFI_REDFISH_DISCOVER_PROTOCOL      *This,
> > -  IN EFI_REDFISH_DISCOVER_NETWORK_INSTANCE
> > *TargetNetworkInterface OPTIONAL
> > +  IN EFI_REDFISH_DISCOVER_PROTOCOL          *This,
> > +  IN EFI_REDFISH_DISCOVER_NETWORK_INTERFACE
> > *TargetNetworkInterface OPTIONAL
> >  );
> >
> >  /**
> >    This function releases Redfish services found by
> RedfishServiceAcquire().
> >
> >    @param[in]    This         EFI_REDFISH_DISCOVER_PROTOCOL
> > instance.
> > -  @param[in]    InstanceList The Redfish service to release.
> > +  @param[in]    List         The Redfish service to release.
> >
> >    @retval EFI_SUCCESS        REST EX instances of discovered Redfish
> > are released.
> >    @retval Others             Fail to remove the entry
> > @@ -183,15 +177,15 @@ typedef
> >  EFI_STATUS
> >  (EFIAPI *EFI_REDFISH_DISCOVER_RELEASE_SERVICE)(
> >    IN EFI_REDFISH_DISCOVER_PROTOCOL   *This,
> > -  IN EFI_REDFISH_DISCOVERED_LIST *InstanceList
> > +  IN EFI_REDFISH_DISCOVERED_LIST     *List
> >  );
> >
> > -typedef struct _EFI_REDFISH_DISCOVER_PROTOCOL {
> > +struct _EFI_REDFISH_DISCOVER_PROTOCOL {
> >    EFI_REDFISH_DISCOVER_NETWORK_LIST    GetNetworkInterfaceList;
> >    EFI_REDFISH_DISCOVER_ACQUIRE_SERVICE AcquireRedfishService;
> >    EFI_REDFISH_DISCOVER_ABORT_ACQUIRE
> > AbortAcquireRedfishService;
> >    EFI_REDFISH_DISCOVER_RELEASE_SERVICE ReleaseRedfishService; -}
> > EFI_REDFISH_DISCOVER_PROTOCOL;
> > +};
> >
> >  extern EFI_GUID gEfiRestExProtocolGuid;  extern EFI_GUID
> > gEfiRestExServiceBindingProtocolGuid;
> > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index
> > 645f61b80e..839bcfe063 100644
> > --- a/MdePkg/MdePkg.dec
> > +++ b/MdePkg/MdePkg.dec
> > @@ -1858,6 +1858,9 @@
> >    ## Include/Protocol/RestJsonStructure.h
> >    gEfiRestJsonStructureProtocolGuid  = { 0xa9a048f6, 0x48a0, 0x4714,
> > {0xb7, 0xda, 0xa9, 0xad,0x87, 0xd4, 0xda, 0xc9 }}
> >
> > +  ## Include/Protocol/RedfishDiscover.h
> > +  gEfiRedfishDiscoverProtocolGuid      = { 0x5db12509, 0x4550, 0x4347,
> > { 0x96, 0xb3, 0x73, 0xc0, 0xff, 0x6e, 0x86, 0x9f }}
> > +
> >    #
> >    # Protocols defined in Shell2.0
> >    #
> > diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec
> > index f12f83526c..65e21f6bd6 100644
> > --- a/RedfishPkg/RedfishPkg.dec
> > +++ b/RedfishPkg/RedfishPkg.dec
> > @@ -21,10 +21,6 @@
> >    #   Platform implementation-specific Redfish Host Interface.
> >
> > RedfishPlatformHostInterfaceLib|Include/Library/RedfishHostInterfaceLi
> > RedfishPlatformHostInterfaceLib|b.h
> >
> > -[Protocols]
> > -  ## Include/Protocol/RedfishDiscover.h
> > -  gEfiRedfishDiscoverProtocolGuid      = { 0x5db12509, 0x4550, 0x4347,
> > { 0x96, 0xb3, 0x73, 0xc0, 0xff, 0x6e, 0x86, 0x9f }}
> > -
> >  [Guids]
> >    gEfiRedfishPkgTokenSpaceGuid      = { 0x4fdbccb7, 0xe829, 0x4b4c,
> > { 0x88, 0x87, 0xb2, 0x3f, 0xd7, 0x25, 0x4b, 0x85 }}
> >
> > --
> > 2.17.1
> 
> 


  reply	other threads:[~2020-11-09  4:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-06  7:47 [EFI Shell PATCH v2 0/2] Support EFI Redfish protocols Abner Chang
2020-11-06  7:47 ` [EFI Shell PATCH v2 1/2] MdePkg/Include: EFI Redfish Discover protocol Abner Chang
2020-11-09  1:40   ` 回复: " gaoliming
2020-11-09  4:08     ` Abner Chang [this message]
2020-11-06  7:47 ` [EFI Shell PATCH v2 2/2] ShellPkg/UefiHandleParsingLib: Support EFI Redfish protocols Abner Chang
2020-12-28  3:21   ` [edk2-devel] " Gao, Zhichao
2020-12-28  3:42     ` Abner Chang

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=CS1PR8401MB114407B73FDEF182835767C9FFEA0@CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.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