From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (NAM02-SN1-obe.outbound.protection.outlook.com [40.107.96.41]) by mx.groups.io with SMTP id smtpd.web11.96453.1679649504185508589 for ; Fri, 24 Mar 2023 02:18:24 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=dL6X8rMp; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.96.41, mailfrom: nicklew@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=inWvLF2J48qjR2fOjtwSbuE72Sb+3/WFDGhMgQRQsgaTJCTSkudC1PEUkmR0rk92N2Yj8lheXoBWQqg8pjq/m0XWLgmtNLuC97XxlsYr4tMTht9czNWX+6SKaeDNyn0L/POmmAD+XLMP5IZ79PNK/7z4vs1HXDRKYZYDyki39DRrHXXkqvI9NhUiO2/2l17bcoyUXhICyxZj7YHyZe6rZfkulMdq6/5OA6ThJi/8umfD/02pOl8qltsk5nm5dTGtJs+zxgjSsmj4vFw8ALewhg0hfO6RxS2wMWRhGXt2PdyuVvJb7s5/bA37HZzpYP7thDNYK3H0PSG62J1jsEFTbg== 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=/tPcn3R6l/EFMegId4U2+HX5zwCfQw9Qfhl3JNN9NjY=; b=lntHuEdHC5cvnAmSMjGO8TQumPNAUbG8OQANA2ZVQCQ4CVnQaOmjaInwpvb/Z9qAw1FfTBkzY+mGKmq9rYBTzYy8TtpmMbk9ruZbom315HhzoIJylEPT8dkAWdRTLDYTVv+OzbxZOsEqxDKVdUKMT6cIZvGK3hkzSJkhbTOQwAaN15SWY7uztG9GODZid4iNUqWZwpzmpqkr2wrkuY6ZX1zjvVKk+gq9jxZX/+YT8XwXMyf0BWlHW+LY13e5aYVtxm+t3fHmSMidWefUDvQnNXxMsL1PSdLu7x9Fjw2QUmDlv6da3MJacYpZtVw2MaE7JhATf86po0bHdeEOoqtDDQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/tPcn3R6l/EFMegId4U2+HX5zwCfQw9Qfhl3JNN9NjY=; b=dL6X8rMpeyOxn6hqGqbCEiYYZ3TxteBYeH6G8nc5Q/NVCH/dZiZx3x+YmkFgj+lrj/gGfDVN6xcg7FaqsOXi1RkybCzgvD02DfRhnQpBVDzoNosi+YXwFXnpQSp4KOvS1jDGMmJE3GTWd/bdj9YOPLw+MgxiGBUJD10KsMQXprHI57OTdu8SwZJUjK75IPKkEr8+7BL/mHbT7iCFRyap2xpoYOsCXfkvAi6dA47F4tGW5ZdBK72XfX09teqYmMqGdbdNsPitFYvQKpSv1sZHmHcZQIfF34GnYBSTlq0e0rL5cJT7/enNeNHwIiR/D2A+7FJ8pRvpdaoPIySLYLwbdw== Received: from MW4PR12MB7031.namprd12.prod.outlook.com (2603:10b6:303:1ef::6) by DM8PR12MB5461.namprd12.prod.outlook.com (2603:10b6:8:3a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.38; Fri, 24 Mar 2023 09:18:21 +0000 Received: from MW4PR12MB7031.namprd12.prod.outlook.com ([fe80::c27a:fa4b:66ea:d266]) by MW4PR12MB7031.namprd12.prod.outlook.com ([fe80::c27a:fa4b:66ea:d266%5]) with mapi id 15.20.6178.037; Fri, 24 Mar 2023 09:18:21 +0000 From: "Nickle Wang" To: "abner.chang@amd.com" , "devel@edk2.groups.io" CC: Liming Gao , Isaac Oram , Nate DeSimone , Igor Kulchytskyy , Abdul Lateef Attar Subject: Re: [PATCH v4 3/9] ManageabilityPkg: Add ManageabilityTransportLib header file Thread-Topic: [PATCH v4 3/9] ManageabilityPkg: Add ManageabilityTransportLib header file Thread-Index: AQHZXGjji/ajbJTBWUymaYUFRLX3Aa8JqgMg Date: Fri, 24 Mar 2023 09:18:21 +0000 Message-ID: References: <20230322024840.1629-1-abner.chang@amd.com> <20230322024840.1629-3-abner.chang@amd.com> In-Reply-To: <20230322024840.1629-3-abner.chang@amd.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR12MB7031:EE_|DM8PR12MB5461:EE_ x-ms-office365-filtering-correlation-id: 498c885d-37f8-42fa-d8c7-08db2c48b689 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IAjusIkxUKEozCGNq+bRtfYfhdg73GFbt7Tu0my6RXiMGTZtmUCFUk7vbAju9fWbCa+R8DoXOHFUSydPsjtLqxMHBa/DmOpAIBNaN0ftEM1efX38QvIpUzk3pWv8buMFkk3icMjHMlOO247wybFSL16TrzvwNkoIR3D9L9PfH1XslOAx5ZboRbHOCwnD5H5BTWK/mhWixzYZMQqTkZADhTk7YlC3Rk/D58aVJqvvRHiQPPdBnNT2AukFPtDnkZ12GKDTZZpIi3QOSmlRwytOSs4KemZ2miE2PWAkY7Sit3/OWGUdE/SAi/F/PdshnUlz25pBjXGQ7rxbRqhcfZgszP/sa96WQNsO59PyAMapj7DZTGcfpkNFf371qJAwZh437ZFFK0Y65YPlZ2Zf8IeNTl+dfI/Ox0Y6nkiHT5Z36F8pEUXBiDU5C5lWscV1Qs5N5IuCD3EavprJTruFNuLu4Xq/Qp7NkEDETaABDGUpIs/RywJyRPzrz1tuUJd230i0b4Jyy4wmE8eafy+oyhFYESgUSx+7bfDmZC1g5AunLyQADXo4sKqH49SkcwqksR5rrOmphWjFpgFranwEv0xVqr5BoASYVlWDc4PZ+e6USSqsIlVQBtsTMrNNwPAAjCXnAShtdT/UiMh2+XlfaMdNRxzJHWoZRQIvTpT3SrcUhTr+Y5NMw/J8kCmeDpy5tpDtN4YiorEnsqdlXTsV3zY2zQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR12MB7031.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(376002)(396003)(366004)(136003)(346002)(39860400002)(451199018)(38100700002)(55016003)(38070700005)(2906002)(83380400001)(71200400001)(186003)(9686003)(478600001)(86362001)(33656002)(7696005)(110136005)(30864003)(66556008)(66946007)(66446008)(66476007)(64756008)(8676002)(4326008)(76116006)(54906003)(53546011)(6506007)(8936002)(26005)(52536014)(316002)(41300700001)(5660300002)(122000001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?E2kMxYnrI4LB0KdFYmhZTTM/jg4EZOc8dtmWm/H7FEfVJig5LkiAyg+NT1wa?= =?us-ascii?Q?FNvHf+qJxz6P4LPFUBBmTaJy1buuXIhwVLZVZAibzADlM/vXeIXs9brI01RA?= =?us-ascii?Q?pgWmfbLTwTvL30Zt0UbaJkIMW0VdAxqNqiLWbEjyKr9lF0BO2tvhGBzjMDaF?= =?us-ascii?Q?70YoBpkrAvmplt9ha3VEBATVbvJcCRs81P7z0/dBKclcwom3IyOVb6tSHBTN?= =?us-ascii?Q?5w6P9TvKOLvmBQen4cDfjBpifw5CW7coXZKeaf3ofxWLuVH1/FDNJj+8GQ0y?= =?us-ascii?Q?zmK14ylRjmhdY387zgja4Bo4TdQ8+jgGK+TJWlIU+85KfAxgs+PKGKkFO/9O?= =?us-ascii?Q?6KuhbC+ozBBXH+KY2CZIcFgPUqfdBWs2pmSh6rM7nyUUs5A8dN2KN/mTf0Ue?= =?us-ascii?Q?u+95FBstAWsPzAF8hocP1Zm0sbYa1MllkRlmu0a47wCzv1EV7lOuRIbljdcu?= =?us-ascii?Q?wEQULpah541s/xysyqh+rIpC48/nhErHdwJryg3dE1+oov4Z37E9ZXx4J7Wn?= =?us-ascii?Q?qAh3+OZZZ0RfK5ThZQjBrNLEVevYKsU6w+GVKJTyR288hXlqcoxh+j4ES4Sp?= =?us-ascii?Q?hYU0N7nnBaaLkwrmTaZuc/EFDY+8PleFSIYzeAAsycn4v4dNeIY4oaJr8BCP?= =?us-ascii?Q?4O62ei/r6SRZt868kFhb2d8LUvWIN+wp45F4B9+z86n93e2TII11w2CCtoyg?= =?us-ascii?Q?4K/JD5qYIpzJjL1VuWGa/WIpaq/tYAKqU33BI1O7uxUsfyEYdht5HQNPFyZT?= =?us-ascii?Q?kienG+UErG/FnQeUGzZ0fOmbkjRRyjuPQPFn1IebKHO3Kbfym05GaP1Th2v8?= =?us-ascii?Q?nWq4BML51cpwBC8DaifnKMdIckWR1CohSKuhw73mmxaTCYHfnrux7svEVdfo?= =?us-ascii?Q?sq+jTwlDf+cWYXFsUrhfDfjnVHSAW2OrTr+WVkX7GyCqRq4HFq2DS623Lnh5?= =?us-ascii?Q?dTU27L0+5c6xC0B6lWHj1q/1btJBOZqQDQq+bYxrsfT6xZeYFzNe/G99mujY?= =?us-ascii?Q?jf4fiXePyAuYYUbVsg+94MDqH74Bf02BRJa5eHObHzjpImv/zraC4eqF8kst?= =?us-ascii?Q?aJFOsJeDQEF9YLNXWCot5eXbzIYNQI6gPNC73u1NIkYfBT+I5GE1Jz8pGWzJ?= =?us-ascii?Q?so77/UiDWAZhMsN/YWR+9ndFtVqWG3mDAeaBQvhq/OBjQA+O2tadl0zsTUU+?= =?us-ascii?Q?zOqDIzL0JQj6moWlnFBggXvGEZ3TaZcwrt6LCkeQnn3hXba4O38B3tofON1i?= =?us-ascii?Q?mHTFnlmGRw5qcGa3mrdp8utZ+EgZK+3E4Ewtf3+w8HiXPk1FOnf0ZNV7Mhew?= =?us-ascii?Q?Lc3kxB4soHWO7A9v96Z+o6RUKrmjyo/HkNhSGbWNBj/QvKlVzpvi+uM0CB5j?= =?us-ascii?Q?I2vlkM+fx66+uJK5vtBqAvyerbVakZWI8tsDyXL8qCJYEgTJfxeVLnhFBgXd?= =?us-ascii?Q?i4m40DYeP/c4EKFulzqwy7qW4t11ECbhCL2CUaTzU/WP/0ZOKJKn7nRS9e1x?= =?us-ascii?Q?jTJpp1cBmi6OgMtBZCNdiJN41vmN9UjeBN/FGdhe8hMmzYtEYAWhrR0RCuj2?= =?us-ascii?Q?YGfIyxVpUoBPekI4k5s=3D?= 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: 498c885d-37f8-42fa-d8c7-08db2c48b689 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2023 09:18:21.4499 (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: eC4lqD6sAh8HrIaIWrTprVKqFs0Nn6MPEsZ+DAMCYGJLBIghRqCg5vU/461nv1DUsVT5OxSUt4LvGwQhLH0rDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR12MB5461 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Nickle Wang Regards, Nickle > -----Original Message----- > From: abner.chang@amd.com > Sent: Wednesday, March 22, 2023 10:49 AM > To: devel@edk2.groups.io > Cc: Liming Gao ; Isaac Oram > ; Nate DeSimone ; > Nickle Wang ; Igor Kulchytskyy ; Abdul > Lateef Attar > Subject: [PATCH v4 3/9] ManageabilityPkg: Add ManageabilityTransportLib > header file >=20 > External email: Use caution opening links or attachments >=20 >=20 > From: Abner Chang >=20 > Add ManageabilityTransportLib header file to package. >=20 > Signed-off-by: Abner Chang > Cc: Liming Gao > Cc: Isaac Oram > Cc: Nate DeSimone > Cc: Nickle Wang > Cc: Igor Kulchytskyy > Cc: Abdul Lateef Attar > --- > .../ManageabilityPkg/ManageabilityPkg.dec | 5 + > .../Library/ManageabilityTransportLib.h | 336 ++++++++++++++++++ > 2 files changed, 341 insertions(+) > create mode 100644 > Features/ManageabilityPkg/Include/Library/ManageabilityTransportLib.h >=20 > diff --git a/Features/ManageabilityPkg/ManageabilityPkg.dec > b/Features/ManageabilityPkg/ManageabilityPkg.dec > index 71bd8a0c80..92ba4538c0 100644 > --- a/Features/ManageabilityPkg/ManageabilityPkg.dec > +++ b/Features/ManageabilityPkg/ManageabilityPkg.dec > @@ -17,5 +17,10 @@ > [Includes] > Include >=20 > +[LibraryClasses] > + ## @libraryclass Manageability Transport Library > + # Manageability Transport Library definitions > + ManageabilityTransportLib|Include/Library/ManageabilityTransportLib.h > + > [Guids] > gManageabilityPkgTokenSpaceGuid =3D { 0xBDEFFF48, 0x1C31, 0x49CD, { 0x= A7, > 0x6D, 0x92, 0x9E, 0x60, 0xDB, 0xB9, 0xF8 } } > diff --git > a/Features/ManageabilityPkg/Include/Library/ManageabilityTransportLib.h > b/Features/ManageabilityPkg/Include/Library/ManageabilityTransportLib.h > new file mode 100644 > index 0000000000..c022b4ac5c > --- /dev/null > +++ b/Features/ManageabilityPkg/Include/Library/ManageabilityTransportLib= .h > @@ -0,0 +1,336 @@ > +/** @file > + > + This file defines the manageability transport interface library and fu= nctions. > + > + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved. > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#ifndef MANAGEABILITY_TRANSPORT_LIB_H_ > +#define MANAGEABILITY_TRANSPORT_LIB_H_ > + > +#define MANAGEABILITY_TRANSPORT_TOKEN_VERSION_MAJOR 1 > +#define MANAGEABILITY_TRANSPORT_TOKEN_VERSION_MINOR 0 > +#define MANAGEABILITY_TRANSPORT_TOKEN_VERSION > ((MANAGEABILITY_TRANSPORT_TOKEN_VERSION_MAJOR << 8) |\ > + > MANAGEABILITY_TRANSPORT_TOKEN_VERSION_MINOR) > + > +typedef struct _MANAGEABILITY_TRANSPORT_FUNCTION_V1_0 > MANAGEABILITY_TRANSPORT_FUNCTION_V1_0; > +typedef struct _MANAGEABILITY_TRANSPORT > MANAGEABILITY_TRANSPORT; > +typedef struct _MANAGEABILITY_TRANSPORT_TOKEN > MANAGEABILITY_TRANSPORT_TOKEN; > +typedef struct _MANAGEABILITY_TRANSFER_TOKEN > MANAGEABILITY_TRANSFER_TOKEN; > + > +/// > +/// Optional transport header and trailer required > +/// for the transport interface. > +/// > +typedef VOID *MANAGEABILITY_TRANSPORT_HEADER; > +typedef VOID *MANAGEABILITY_TRANSPORT_TRAILER; > + > +/// > +/// The transport interface specific hardware information. > +/// > + > +typedef union { > + UINT16 IoAddress16; > + UINT32 IoAddress32; > +} MANAGEABILITY_TRANSPORT_HARDWARE_IO; > + > +/// > +/// Manageability KCS protocol interface hardware information. > +/// > +typedef struct { > + BOOLEAN MemoryMap; > + MANAGEABILITY_TRANSPORT_HARDWARE_IO IoBaseAddress; > + MANAGEABILITY_TRANSPORT_HARDWARE_IO IoDataInAddress; > + MANAGEABILITY_TRANSPORT_HARDWARE_IO IoDataOutAddress; > + MANAGEABILITY_TRANSPORT_HARDWARE_IO IoCommandAddress; > + MANAGEABILITY_TRANSPORT_HARDWARE_IO IoStatusAddress; > +} MANAGEABILITY_TRANSPORT_KCS_HARDWARE_INFO; > +#define MANAGEABILITY_TRANSPORT_KCS_IO_MAP_IO FALSE > +#define MANAGEABILITY_TRANSPORT_KCS_MEMORY_MAP_IO TRUE > + > +typedef union { > + VOID *Pointer; > + MANAGEABILITY_TRANSPORT_KCS_HARDWARE_INFO *Kcs; > +} MANAGEABILITY_TRANSPORT_HARDWARE_INFORMATION; > + > +/// > +/// Additional transport interface status. > +/// > +typedef UINT32 MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS; > +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_NO_ERRORS > 0x00000000 > +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_ERROR > 0x00000001 > +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_BUSY_IN_READ > 0x00000002 > +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_BUSY_IN_WRITE > 0x00000004 > +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_NOT_AVAILABLE > 0xffffffff > + > +/// > +/// Additional transport interface features. > +/// > +typedef UINT32 MANAGEABILITY_TRANSPORT_CAPABILITY; > +#define > MANAGEABILITY_TRANSPORT_CAPABILITY_MULTIPLE_TRANSFER_TOKENS > 0x00000001 > +#define > MANAGEABILITY_TRANSPORT_CAPABILITY_ASYNCHRONOUS_TRANSFER > 0x00000002 > + > +/// > +/// Definitions of Manageability transport interface functions. > +/// This is a union that can accommodate the new functions > +/// introduced to the Manageability transport library in the future. > +/// The new added function must has its own > MANAGEABILITY_TRANSPORT_FUNCTION > +/// structure with the incremental version number. > +/// e.g., MANAGEABILITY_TRANSPORT_FUNCTION_V1_1. > +/// > +/// The new function must be added base on the last version of > +/// MANAGEABILITY_TRANSPORT_FUNCTION to keep the backward > compatability. > +/// > +typedef union { > + MANAGEABILITY_TRANSPORT_FUNCTION_V1_0 *Version1_0; > +} MANAGEABILITY_TRANSPORT_FUNCTION; > + > +/// > +/// Manageability specification GUID/Name table structure > +/// > +typedef struct { > + EFI_GUID *SpecificationGuid; > + CHAR16 *SpecificationName; > +} MANAGEABILITY_SPECIFICATION_NAME; > + > +/// > +/// Definitions of Transmit/Receive package > +/// > +typedef struct { > + UINT8 *TransmitPayload; > + UINT32 TransmitSizeInByte; > + UINT32 TransmitTimeoutInMillisecond; > +} MANAGEABILITY_TRANSMIT_PACKAGE; > + > +typedef struct { > + UINT8 *ReceiveBuffer; > + UINT32 ReceiveSizeInByte; > + UINT32 TransmitTimeoutInMillisecond; > +} MANAGEABILITY_RECEIVE_PACKAGE; > + > +/// > +/// Definitions of Manageability transport interface. > +/// > +struct _MANAGEABILITY_TRANSPORT { > + EFI_GUID *ManageabilityTransportSpecificati= on; ///< The > Manageability Transport Interface spec. > + UINT16 TransportVersion; = ///< The version of > transport interface > + = ///< function that indicates which > version > + = ///< of > MANAGEABILITY_TRANSPORT_FUNCTION > + = ///< is unsupported by this library. > + CHAR16 *TransportName; = ///< Human readable > string of > + = ///< this transport interface. > + MANAGEABILITY_TRANSPORT_FUNCTION Function; = ///< > Transport functions > +}; > + > +/// > +/// Definitions of Manageability transport token. > +/// > +struct _MANAGEABILITY_TRANSPORT_TOKEN { > + EFI_GUID *ManageabilityProtocolSpecification; ///< T= he > Manageability Protocol spec. > + MANAGEABILITY_TRANSPORT *Transport; > +}; > + > +#define MANAGEABILITY_TRANSPORT_NO_TIMEOUT 0 > + > +/// > +/// The Manageability transport receive token used to receive > +/// the response from transport interface after transmitting the > +/// request. > +/// > +struct _MANAGEABILITY_TRANSFER_TOKEN { > + EFI_EVENT ReceiveEvent; = ///< The EFI event is > created to > + = ///< wait the signal for the readiness > + = ///< of response data. > + = ///< If NULL, transport library should > + = ///< just return the response data in > + = ///< ReceiveBuffer then the process > returns > + = ///< to caller. Otherwise the transport > + = ///< library can signal event when the > + = ///< response is ready for caller. That > + = ///< means the transport library can > + = ///< optionally implement the > asynchronous > + = ///< transfer mechanism or when the > multiple > + = ///< transport sessions are acquired. > + MANAGEABILITY_TRANSPORT_HEADER TransmitHeader; = ///< > This is the transport-specific header > + = ///< which is sent discretely of payload. > + = ///< This field can be NULL if the > transport > + = ///< doesn't require this. > + MANAGEABILITY_TRANSPORT_TRAILER TransmitTrailer; = ///< This > is the transport-specific trailer > + = ///< which is sent discretely of payload. > + = ///< This field can be NULL if the > transport > + = ///< doesn't require this. > + MANAGEABILITY_TRANSMIT_PACKAGE TransmitPackage; = ///< > The payload sent to transport interface. > + MANAGEABILITY_RECEIVE_PACKAGE ReceivePackage; = ///< The > buffer to receive the response. > + EFI_STATUS TransferStatus; = ///< The EFI Status of the > transfer. > + MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS > TransportAdditionalStatus; ///< The additional status of transport > + = ///< interface. > +}; > + > +/** > + This function acquires to create a transport session to transmit manag= eability > + packet. A transport token is returned to caller for the follow up oper= ations. > + > + @param [in] ManageabilityProtocolSpec The protocol spec the transpo= rt > interface is acquired for. > + @param [out] TransportToken The pointer to receive the tr= ansport > token created by > + the target transport interfac= e library. > + @retval EFI_SUCCESS Token is created successfully= . > + @retval EFI_OUT_OF_RESOURCES Out of resource to create a n= ew > transport session. > + @retval EFI_UNSUPPORTED Protocol is not supported on = this > transport interface. > + @retval Otherwise Other errors. > + > +**/ > +EFI_STATUS > +AcquireTransportSession ( > + IN EFI_GUID *ManageabilityProtocolSpec, > + OUT MANAGEABILITY_TRANSPORT_TOKEN **TransportToken > + ); > + > +/** > + This function returns the transport capabilities. > + > + @param [out] TransportFeature Pointer to receive transport cap= abilities. > + See the definitions of > + MANAGEABILITY_TRANSPORT_CAPABILI= TY. > + > +**/ > +VOID > +GetTransportCapability ( > + OUT MANAGEABILITY_TRANSPORT_CAPABILITY *TransportCapability > + ); > + > +/** > + This function releases the manageability transport session. > + > + @param [in] TransportToken The transport token acquired through > + AcquireTransportSession. > + @retval EFI_SUCCESS Token is released successfully. > + @retval EFI_INVALID_PARAMETER Invalid TransportToken. > + @retval Otherwise Other errors. > + > +**/ > +EFI_STATUS > +ReleaseTransportSession ( > + IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken > + ); > + > +/** > + This function initializes the transport interface. > + > + @param [in] TransportToken The transport token acquired thr= ough > + AcquireTransportSession function= . > + @param [in] HardwareInfo This is the optional hardware in= formation > + assigned to this transport inter= face. > + > + @retval EFI_SUCCESS Transport interface is initializ= ed > + successfully. > + @retval EFI_INVALID_PARAMETER The invalid transport token. > + @retval EFI_NOT_READY The transport interface works fi= ne but > + @retval is not ready. > + @retval EFI_DEVICE_ERROR The transport interface has prob= lems. > + @retval EFI_ALREADY_STARTED Teh protocol interface has alrea= dy > initialized. > + @retval Otherwise Other errors. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *MANAGEABILITY_TRANSPORT_INIT)( > + IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken, > + IN MANAGEABILITY_TRANSPORT_HARDWARE_INFORMATION HardwareInfo > OPTIONAL > + ); > + > +/** > + This function returns the transport interface status. > + The generic EFI_STATUS is returned to caller directly, The additional > + information of transport interface could be optionally returned in > + TransportAdditionalStatus to describes the status that can't be > + described obviously through EFI_STATUS. > + See the definition of MANAGEABILITY_TRANSPORT_STATUS. > + > + @param [in] TransportToken The transport token acquired = through > + AcquireTransportSession funct= ion. > + @param [out] TransportAdditionalStatus The additional status of tran= sport > + interface. > + NULL means no additional stat= us of this > + transport interface. > + > + @retval EFI_SUCCESS Transport interface status is re= turned. > + @retval EFI_INVALID_PARAMETER The invalid transport token. > + @retval EFI_DEVICE_ERROR The transport interface has prob= lems to > return > + @retval status. > + Otherwise Other errors. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *MANAGEABILITY_TRANSPORT_STATUS)( > + IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken, > + OUT MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS > *TransportAdditionalStatus OPTIONAL > + ); > + > +/** > + This function resets the transport interface. > + The generic EFI_STATUS is returned to caller directly after reseting t= ransport > + interface. The additional information of transport interface could be > optionally > + returned in TransportAdditionalStatus to describes the status that can= 't be > + described obviously through EFI_STATUS. > + See the definition of MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS. > + > + @param [in] TransportToken The transport token acquired = through > + AcquireTransportSession funct= ion. > + @param [out] TransportAdditionalStatus The additional status of spec= ific > transport > + interface after the reset. > + NULL means no additional stat= us of this > + transport interface. > + > + @retval EFI_SUCCESS Transport interface status is re= turned. > + @retval EFI_INVALID_PARAMETER The invalid transport token. > + @retval EFI_TIMEOUT The reset process is time out. > + @retval EFI_DEVICE_ERROR The transport interface has prob= lems to > return > + status. > + Otherwise Other errors. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *MANAGEABILITY_TRANSPORT_RESET)( > + IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken, > + OUT MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS > *TransportAdditionalStatus OPTIONAL > + ); > + > +/** > + This function transmit the request over target transport interface. > + The generic EFI_STATUS is returned to caller directly after reseting t= ransport > + interface. The additional information of transport interface could be > optionally > + returned in TransportAdditionalStatus to describes the status that can= 't be > + described obviously through EFI_STATUS. > + See the definition of MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS. > + > + @param [in] TransportToken The transport token acquired thr= ough > + AcquireTransportSession function= . > + @param [in] TransferToken The transfer token, see the defi= nition of > + MANAGEABILITY_TRANSFER_TOKEN. > + > + @retval The EFI status is returned in MANAGEABILITY_TRANSFER_TOKE= N. > + > +**/ > +typedef > +VOID > +(EFIAPI *MANAGEABILITY_TRANSPORT_TRANSMIT_RECEIVE)( > + IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken, > + IN MANAGEABILITY_TRANSFER_TOKEN *TransferToken > + ); > + > +/// > +/// The first version of Manageability transport interface function. > +/// > +struct _MANAGEABILITY_TRANSPORT_FUNCTION_V1_0 { > + MANAGEABILITY_TRANSPORT_INIT TransportInit; = ///< Initial > the transport. > + MANAGEABILITY_TRANSPORT_STATUS TransportStatus; = ///< Get > the transport status. > + MANAGEABILITY_TRANSPORT_RESET TransportReset; = ///< Reset > the transport. > + MANAGEABILITY_TRANSPORT_TRANSMIT_RECEIVE > TransportTransmitReceive; ///< Transmit the packet over > + = ///< transport and get the > + = ///< response back. > +}; > + > +#endif > -- > 2.37.1.windows.1