From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.73448.1673568732471639914 for ; Thu, 12 Jan 2023 16:12:12 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=We4l8XkT; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: isaac.w.oram@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1673568732; x=1705104732; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=SYYQiCbZ3NjD9592i/mgwHJRX7WWv2Zz24eENLho7lI=; b=We4l8XkToHuZmiyB0LtgalRV2NEe73YI78MLWr1MnXlfxckNCNT0YMSe 3gZYsj30pspb0Qf9xPE0Td8v4QmnhQwR6JkCV3Gyc7w3YaZc2WJ30X+hL v/rPBSZ+od9I1Sq3jOgob9KZZZweW4hu5Q/4mXiG9hEvTGWogntGk8SRe yomU/0j/yrCRQiHQduxG8QQEOSNV9+2IGm6sOSwXgk1WPqnMDhHDu+HGZ Eh24RlJjPwVbzMTmSAptxxuX5DXDHBSywbE+AqFo7gXfItz+y1uNwosiy i7gPQUjGXXfK7b7bK6WVRUewGkpkntmIab2B8gqTx2vPadkw3pCocqck0 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10588"; a="388362428" X-IronPort-AV: E=Sophos;i="5.97,212,1669104000"; d="scan'208";a="388362428" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2023 16:11:11 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10588"; a="831887745" X-IronPort-AV: E=Sophos;i="5.97,212,1669104000"; d="scan'208";a="831887745" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga005.jf.intel.com with ESMTP; 12 Jan 2023 16:11:11 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 12 Jan 2023 16:11:10 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Thu, 12 Jan 2023 16:11:10 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.172) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Thu, 12 Jan 2023 16:11:10 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PVNxR271Ev2BzfPw7VfUzyLlqjSPGf303wpjYlvRqMwVVWUxAsVPICpnZyIVYSWkl7fjITMb79OPtOn6y4Z/EvW9mdzrmYgAl1MmuzdM7YPDZ/6riUdG5aFbeOUfV2Tx/ps7yEmELy9Voy5mXy27wnjEWhiFhaklG19O46Xh09dJNa0On3qHdoOSxZhxf0+ItJr4236KXmFf0Yu8lY/JKaJXfAlhlNMSBh0VFfRKkzHAZrZntrxHaN8soneK0DEM1LxjqtxRbGKDLjD65q2gwq5UNICZ2Xvp027z2HUL4SSNP71bJ8+Ygz+p1iSLH2GPqjf00+Mz/LV6bxt1+yX/rA== 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=SJzQL3n5cDmFrTuU0OIdbD83x7sm6eeIWWhlbjPf2q0=; b=ErFTlUVSvIsCBY0GO4YDkSvzftkufh3WeB4ti8eBxSlyOe/iXn9JaIBu1uf8ZoeIUeFHfqk1WsYbi8N4xp/Z4lcS5LLhtk200zW8C8x6PtHozrYaYvM5D+Xc4vnS8zjwVk/spS0JmjlvN0SZyQJG6WaVsjMfwu7y8oy74zLXSKpeIHu8WtlXsA7rU81wcrZW4KysXj+q6MB4kW/fuMXATnpG0+n8A8ioh8oaRc5EGPIdZ0Dts6ichl8q2fHqEyB/ojPiM/WFb5H2quubjPyhBmZy7hLU5if7DTxZBDStDRzfcTTblbzNnhdl4p4K8YQUD3AS45JGCV4JrQ+ep8lFHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SA1PR11MB5801.namprd11.prod.outlook.com (2603:10b6:806:23d::13) by PH0PR11MB7563.namprd11.prod.outlook.com (2603:10b6:510:286::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Fri, 13 Jan 2023 00:11:07 +0000 Received: from SA1PR11MB5801.namprd11.prod.outlook.com ([fe80::7623:38f5:ab31:61a5]) by SA1PR11MB5801.namprd11.prod.outlook.com ([fe80::7623:38f5:ab31:61a5%5]) with mapi id 15.20.5986.019; Fri, 13 Jan 2023 00:11:07 +0000 From: "Isaac Oram" To: "devel@edk2.groups.io" , "abner.chang@amd.com" CC: "Wang, Jian J" , "Gao, Liming" , Nickle Wang , "Igor Kulchytskyy" , "Desimone, Nathaniel L" Subject: Re: [edk2-devel] [PATCH 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Thread-Topic: [edk2-devel] [PATCH 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Thread-Index: AQHZGnlc3FO9UMiSZ0uFGIyJOzhQJa6bj8+Q Date: Fri, 13 Jan 2023 00:11:07 +0000 Message-ID: References: <20221228045912.1677-1-abner.chang@amd.com> <20221228045912.1677-2-abner.chang@amd.com> In-Reply-To: <20221228045912.1677-2-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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR11MB5801:EE_|PH0PR11MB7563:EE_ x-ms-office365-filtering-correlation-id: 95bd8947-69d7-4a76-7292-08daf4faaae3 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2nmMqcSBXw1ah9YLZJq6ChkZaNfwFPLsp6BxBvzaJ39iZkg3X7O7FgcSgNoFgLa3+Uui7zrjhSUmctNSV+2IMV34ftgNI6/x5RqD4hBc53x9bFhIGAx6FQDHg/uRzQO+06JG0xcvrFwvxJ7UXMYMj8p9zvAC3kv0L51GAXckBnecMj5JjOEKkA7945ufA+idmSmD0SrxlbK4TMWmrc4VtnDDbR0L1SF+fnJJRDUdIuT5sFmR/bPro6NDQ8ttuKFZx4gTJ2mu1SIi4rx9wyHYQQ4Y+r9NoYQi6soFBAH5OdqV8gzpyxOTcQPF/wXdRZyIEbnSVw0y8Kl82xSTWIdCjPX9nEl/KPS51GiC3WPZXJEzs73oCJ2oLEOMZdoifTxqTw38+weomU5waFac0pq1m/vIfhBsu9/gkBWKDyAdTzsctGkFM+eTUecF7iCmVb1wuVRDhQDMgkx1W6lKLgjVJtuWILVYhHuMcTwDk0c5wGDci3ub2Zk4OoTqtyPbLmjDihGfmQy/JXPf5xTDaM3PK0z6puFp5xgSiPcZhrj2JatmLVL98s0IM7hkm7MbPBrNQnjc5sQgt+knv7p4p0h1B5eoHwosKsdVjr86IXpV2fPmq9H481sWU6UK5Fi7kq8wqdlIa5At8e5cHDW4w5AP8QqzpOhQ+4tJ9efwaUbTNIh58u2WpdmhdvurE5EVv15sZk40LIiCCR2f/g8YhaxMHC69QnJH+IgYtzC/sNsM3GoJzuAVRUUKTxbAF1+saE2XfBuSCVPQffLxIJsus2Q3JQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR11MB5801.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(346002)(39860400002)(136003)(366004)(376002)(451199015)(6506007)(38100700002)(122000001)(82960400001)(107886003)(53546011)(66899015)(2906002)(966005)(478600001)(33656002)(30864003)(19627235002)(86362001)(26005)(186003)(5660300002)(316002)(7696005)(71200400001)(9686003)(83380400001)(38070700005)(8936002)(52536014)(55016003)(8676002)(41300700001)(64756008)(110136005)(76116006)(66946007)(66446008)(66556008)(54906003)(66476007)(4326008)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?5xkNQOgSs4Ui9y0cDN6KiSndsrd2NePheGugjUTT6HLOxF1+662OrvBERhv/?= =?us-ascii?Q?SFpBJ7OQrPEBW38xhpIgFMo2r5G5mb7eq5jZ0u0g6++SOqyOWW7gHNW8hQPM?= =?us-ascii?Q?EtW9S6+kdpBcT/hfoVIYRge5e4ZkN2RSs1MJ0WLB9Vrcksqzjew9pfvB+YPy?= =?us-ascii?Q?nJv1wgILHSN7VYomyJOs7jgA7BXAcBRJkO61O/HnQvDglwGMnDBjEuRG5Uda?= =?us-ascii?Q?28uQ2aEhSMEKo8FvgEzDeDNWinD9DwklXIxSGWJ9N8uniCCocpuibgYxdeGk?= =?us-ascii?Q?2Bsjm7Gw4YcP+hP/LRTnNegb6MPkjl72fCBTgOFpv/ukqs676KRUeucqRJyW?= =?us-ascii?Q?a6v5PqDDRY4Tmo54om7QLBX5FvGiU+GRRpwZE5kerveZok6zuhlVx7gsQXIo?= =?us-ascii?Q?cMNvAhn3abeZrQwqHa8tovRwlAZAUgk7AsTg77JHRsHIz54Az3MU+MyFxgDo?= =?us-ascii?Q?ReRnW1hgWDbtVOj/YGXjT5dVWALODy+lKxNoAavHb7pUI16FXZsU+Tsal63e?= =?us-ascii?Q?Ub8X2uXat8MgNBb7MIQKAoO8lYPIQ4hrhenvabG4GXyeksB7RmpzYP/2tH22?= =?us-ascii?Q?fJwzcJnhXZFjo6I/UWZQEAwPsDUgnSgTzDpwztAsoqZ24qfxeiYQ/BGHYSjN?= =?us-ascii?Q?TGlVYUgD/QQtjKFBzjCY9vSvGi4pwtxnN7XXiMG3EPZBjH6JhTJiaoyQHWuk?= =?us-ascii?Q?hiEYkFQbn5eIS+qOmWiCJ99Tl+jPkeRm4/1y0QdYx17p9lKcXg/B6xU3DJka?= =?us-ascii?Q?JEOPi2eug0JNNSQnt0g7TpJ3L5rqQ4bomlky0TFBJFa/4prXexNw8YDNLJVN?= =?us-ascii?Q?lFMDTGi8ltdNA8RozDv1sjtHYA82aK4aVJg3gN4XPiQfisJaC0nCbGIhH8r9?= =?us-ascii?Q?KFT93NQM61cIbT5Hq423oHGpwC3WnZ/sWpllZ86MJs1GKHMOo30q+IwRKjlw?= =?us-ascii?Q?FajRidryRbIzCfFe2SN8lDa4D53mXpbTkmgzJWT/pcvVF/6JpiMP3n5MpxZz?= =?us-ascii?Q?pYc9C0x7/UBDgKUMqFEM83CQzSFbCF7GpUBcTLWqGHiXmdaJWBypsaWkVcbh?= =?us-ascii?Q?0BgVP/uAhE9s9EumURd+INPoGsymtD2n8n9hm5GdPxtUlSy8JjKY2BfOaVs5?= =?us-ascii?Q?YgbiWMYyqccINjCo+aiVvYEodVVg6Oc+3dDeclV2MQDXCV5rMEajIsfOYhZq?= =?us-ascii?Q?j+wPraT+S4zskqkBKksYrYTf0ZFBCwK7kW5Cb/JFqZMcLHpSpcnADQvo8vFy?= =?us-ascii?Q?sa/EKvdcQvBWsCw4MREFW1RmwgudT/0Ylm803t5Qyivs/T5DFhnlB6uc8pm+?= =?us-ascii?Q?ETsBisinpVaz5R0kamP1DdnN0+LqIriL9Rx4dI4D7NtmafeIhQFjcZdFA7Oq?= =?us-ascii?Q?LOCikS36saTOmByWrUWlWGu3LrbGHC5moTjfvjv9eQLCk2Rvp1++wjzeh+Aj?= =?us-ascii?Q?SoixDHiHS2R7l54GuqJgHlzQmymmyg9YsbDd6w97dU9JHFifUvr5uwLs4h3U?= =?us-ascii?Q?ZeWLRjoeKarUKUgW9Ce+71IzmM+t58F29/xsKzNUfGYiOhiGKN1qTH7xYZ88?= =?us-ascii?Q?eatXzzAkQphX1XdByPApWB+HufZFfu2cZraRxY4F?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR11MB5801.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95bd8947-69d7-4a76-7292-08daf4faaae3 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jan 2023 00:11:07.1755 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HiBbkI/5+4qn9wRcMppA+W00cFxjOjcz077AOXzTIfEZljkmSzs0DgKoQA6cu5L3Cv8byOoL0j56Xm7+KCu+og== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB7563 Return-Path: isaac.w.oram@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Isaac Oram Typos in SetPowerRestireRequest and SetPowerRestireResponse in function com= ment block and parameters. 35 instances of successly should perhaps be successfully. 344: NetFnChasis should perhaps be NetFnChassis. Regards, Isaac -----Original Message----- From: devel@edk2.groups.io On Behalf Of Chang, Abner= via groups.io Sent: Tuesday, December 27, 2022 8:59 PM To: devel@edk2.groups.io Cc: Wang, Jian J ; Gao, Liming ; Nickle Wang ; Igor Kulchytskyy ; = Oram, Isaac W ; Desimone, Nathaniel L Subject: [edk2-devel] [PATCH 1/3] MdeModulePkg/Include: Add IpmiCommandLib = header file From: Abner Chang Add IpmiCommandLib to MdeModulePkg. This header file is copied from edk2-pl= atforms/Features/Intel/OutOfBandManagement/ IpmiFeaturePkg\Include\Library. Having this header file in edk2 to avoid the dependence of edk2 module with edk2-platfrom. The NULL instance of IpmiCommandLib under MdeModulePkg has to be implemente= d for the same reason. IpmiCommandLib.h in edk2-platforms should be removed once this patch set is= merged. Expect no impacts on edk2-platforms because MdeModulePkg is referr= ed in INF file by all edk2 modules under edk2-platforms that use IpmiComman= dLib. Signed-off-by: Abner Chang Cc: Jian J Wang Cc: Liming Gao Cc: Nickle Wang Cc: Igor Kulchytskyy Cc: Isaac Oram Cc: Nate DeSimone --- MdeModulePkg/Include/Library/IpmiCommandLib.h | 683 ++++++++++++++++++ 1 file changed, 683 insertions(+) create mode 100644 MdeModulePkg/Include/Library/IpmiCommandLib.h diff --git a/MdeModulePkg/Include/Library/IpmiCommandLib.h b/MdeModulePkg/I= nclude/Library/IpmiCommandLib.h new file mode 100644 index 00000000000..cac8123411f --- /dev/null +++ b/MdeModulePkg/Include/Library/IpmiCommandLib.h @@ -0,0 +1,683 @@ +/** @file + This library abstract how to send/receive IPMI command. + +Copyright (c) 2018-2021, Intel Corporation. All rights reserved.
=20 +Copyright (C) 2022 Advanced Micro Devices, Inc. All rights=20 +reserved.
+ +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef IPMI_COMMAND_LIB_H_ +#define IPMI_COMMAND_LIB_H_ + +#include +#include + +// +// IPMI NetFnApp +// + +/** + This function gets the IPMI Device ID. + + @param[out] DeviceId Get device ID response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetDeviceId ( + OUT IPMI_GET_DEVICE_ID_RESPONSE *DeviceId + ); + +/** + This function gets the self-test result. + + @param[out] SelfTestResult Self test command response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSelfTestResult ( + OUT IPMI_SELF_TEST_RESULT_RESPONSE *SelfTestResult + ); + +/** + This function resets watchdog timer. + + @param[out] CompletionCode The command completion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiResetWatchdogTimer ( + OUT UINT8 *CompletionCode + ); + +/** + This function sets watchdog timer. + + @param[in] SetWatchdogTimer Set watchdog timer request. + @param[out] CompletionCode The command completion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + + +**/ +EFI_STATUS +EFIAPI +IpmiSetWatchdogTimer ( + IN IPMI_SET_WATCHDOG_TIMER_REQUEST *SetWatchdogTimer, + OUT UINT8 *CompletionCode + ); + +/** + This function gets watchdog timer. + + @param[out] GetWatchdogTimer Get watchdog timer response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetWatchdogTimer ( + OUT IPMI_GET_WATCHDOG_TIMER_RESPONSE *GetWatchdogTimer + ); + +/** + This function sets BMC global enables. + + @param[in] SetBmcGlobalEnables Set BMC global enables command reques= t. + @param[out] CompletionCode The command completion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiSetBmcGlobalEnables ( + IN IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST *SetBmcGlobalEnables, + OUT UINT8 *CompletionCode + ); + +/** + This function gets BMC global enables. + + @param[out] GetBmcGlobalEnables Get BMC global enables command respons= e. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetBmcGlobalEnables ( + OUT IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE *GetBmcGlobalEnables + ); + +/** + This function clears message flag. + + @param[in] ClearMessageFlagsRequest Clear message flags command requ= est. + @param[out] CompletionCode The command completion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiClearMessageFlags ( + IN IPMI_CLEAR_MESSAGE_FLAGS_REQUEST *ClearMessageFlagsRequest, + OUT UINT8 *CompletionCode + ); + +/** + This function gets message flag. + + @param[out] GetMessageFlagsResponse Get message flags response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetMessageFlags ( + OUT IPMI_GET_MESSAGE_FLAGS_RESPONSE *GetMessageFlagsResponse + ); + +/** + This function gets message. + + @param[out] GetMessageResponse Get message command response. + @param[in,out] GetMessageResponseSize The size of get message response= . + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetMessage ( + OUT IPMI_GET_MESSAGE_RESPONSE *GetMessageResponse, + IN OUT UINT32 *GetMessageResponseSize + ); + +/** + This function sends message. + + @param[in] SendMessageRequest The send message command reques= t. + @param[in] SendMessageRequestSize The size of the send message co= mmand request. + @param[out] SendMessageResponse The send message command respon= se. + @param[in,out] SendMessageResponseSize The size of the send message co= mmand response. + When input, the expected size o= f response. + When output, the actual size of= response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiSendMessage ( + IN IPMI_SEND_MESSAGE_REQUEST *SendMessageRequest, + IN UINT32 SendMessageRequestSize, + OUT IPMI_SEND_MESSAGE_RESPONSE *SendMessageResponse, + IN OUT UINT32 *SendMessageResponseSize + ); + +/** + This function gets the system UUID. + + @param[out] SystemGuid The pointer to retrieve system UUID. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Others Other errors. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSystemUuid ( + OUT EFI_GUID *SystemGuid + ); + +/** + This function gets the channel information. + + @param[in] GetChannelInfoRequest The get channel information r= equest. + @param[in] GetChannelInfoResponse The get channel information r= esponse. + @param[in,out] GetChannelInfoResponseSize When input, the expected size= of response. + When output, the exact size o= f the returned + response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetChannelInfo ( + IN IPMI_GET_CHANNEL_INFO_REQUEST *GetChannelInfoRequest, + OUT IPMI_GET_CHANNEL_INFO_RESPONSE *GetChannelInfoResponse, + OUT UINT32 *GetChannelInfoResponseSize + ); + +// +// IPMI NetFnTransport +// + +/** + This function activates SOL + + @param[in] SolActivatingRequest SOL activating request. + @param[out] CompletionCode The command completion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiSolActivating ( + IN IPMI_SOL_ACTIVATING_REQUEST *SolActivatingRequest, + OUT UINT8 *CompletionCode + ); + +/** + This function sets SOL configuration parameters. + + @param[in] SetConfigurationParametersRequest Set SOL configura= tion parameters + command request. + @param[in] SetConfigurationParametersRequestSize Size of the set S= OL configuration + parameters comman= d request. + @param[out] CompletionCode The command compl= etion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiSetSolConfigurationParameters ( + IN IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST *SetConfigurationPara= metersRequest, + IN UINT32 SetConfigurationParam= etersRequestSize, + OUT UINT8 *CompletionCode + ); + +/** + This function gets SOL configuration parameters. + + @param[in] GetConfigurationParametersRequest Get SOL configu= ration parameters + command request= . + @param[out] GetConfigurationParametersResponse Get SOL configu= ration parameters + response. + @param[in,out] GetConfigurationParametersResponseSize When input, the= size of the expected + response. + When output, th= e exact size of + expect response= . + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSolConfigurationParameters ( + IN IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST *GetConfigurationPar= ametersRequest, + OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationPar= ametersResponse, + IN OUT UINT32 *GetConfigurationPar= ametersResponseSize + ); + +/** + This function gets the LAN configuration parameter. + + @param[in] GetLanConfigurationParametersRequest Get LAN configurat= ion parameters command request. + @param[in] GetLanConfigurationParametersResponse The response of th= e get LAN configuration parameters. + @param[in,out] GetLanConfigurationParametersSize When input, the ex= pected size of response data. + When out, the exac= t size of response data. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ + +EFI_STATUS +EFIAPI +IpmiGetLanConfigurationParameters ( + IN IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST *GetLanConfiguratio= nParametersRequest, + OUT IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE *GetLanConfiguratio= nParametersResponse, + IN OUT UINT32 *GetLanConfiguratio= nParametersSize + ); + +// +// IPMI NetFnChasis +// + +/** + This function gets chassis capability. + + @param[out] GetChassisCapabilitiesResponse Gets chassis capability comm= and response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetChassisCapabilities ( + OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE =20 +*GetChassisCapabilitiesResponse + ); + +/** + This function gets chassis status. + + @param[out] GetChassisCapabilitiesResponse The get chassis status comma= nd response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetChassisStatus ( + OUT IPMI_GET_CHASSIS_STATUS_RESPONSE *GetChassisStatusResponse + ); + +/** + This function sends chassis control request. + + @param[in] ChassisControlRequest The chassis control request. + @param[out] CompletionCode The command completion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiChassisControl ( + IN IPMI_CHASSIS_CONTROL_REQUEST *ChassisControlRequest, + OUT UINT8 *CompletionCode + ); + +/** + This function sets power restore policy. + + @param[in] SetPowerRestireRequest The set power restore policy contr= ol + command request. + @param[out] SetPowerRestireResponse The response of power restore poli= cy. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiSetPowerRestorePolicy ( + IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST *SetPowerRestireRequest, + OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *SetPowerRestireResponse + ); + +// +// IPMI NetFnStorage +// + +/** + This function sets system boot option. + + @param[in] BootOptionsRequest Set system boot option request. + @param[out] BootOptionsResponse The response of set system boot + option request. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiSetSystemBootOptions ( + IN IPMI_SET_BOOT_OPTIONS_REQUEST *BootOptionsRequest, + OUT IPMI_SET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse + ); + +/** + This function gets system boot option. + + @param[in] BootOptionsRequest Get system boot option request. + @param[out] BootOptionsResponse The response of get system boot + option request. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSystemBootOptions ( + IN IPMI_GET_BOOT_OPTIONS_REQUEST *BootOptionsRequest, + OUT IPMI_GET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse + ); + +/** + This function gets FRU inventory area info. + + @param[in] GetFruInventoryAreaInfoRequest Get FRU inventory area com= mand request. + @param[out] GetFruInventoryAreaInfoResponse get FRU inventory area com= mand response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetFruInventoryAreaInfo ( + IN IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST *GetFruInventoryAreaInfoR= equest, + OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE =20 +*GetFruInventoryAreaInfoResponse + ); + +/** + This function reads FRU data. + + @param[in] ReadFruDataRequest Read FRU data command request. + @param[out] ReadFruDataResponse Read FRU data command response. + @param[in,out] ReadFruDataResponseSize Size of the read FRU data respo= nse. + When input, the expected size o= f response data. + When out, the exact size of re= sponse data. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiReadFruData ( + IN IPMI_READ_FRU_DATA_REQUEST *ReadFruDataRequest, + OUT IPMI_READ_FRU_DATA_RESPONSE *ReadFruDataResponse, + IN OUT UINT32 *ReadFruDataResponseSize + ); + +/** + This function gets chassis capability. + + @param[in] WriteFruDataRequest Write FRU data command request. + @param[in] WriteFruDataRequestSize Size of the write FRU data comman= d request. + @param[out] WriteFruDataResponse Write FRU data response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiWriteFruData ( + IN IPMI_WRITE_FRU_DATA_REQUEST *WriteFruDataRequest, + IN UINT32 WriteFruDataRequestSize, + OUT IPMI_WRITE_FRU_DATA_RESPONSE *WriteFruDataResponse + ); + +/** + This function gets SEL information. + + @param[out] GetSelInfoResponse Get SEL information command respons= e. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSelInfo ( + OUT IPMI_GET_SEL_INFO_RESPONSE *GetSelInfoResponse + ); + +/** + This function gets SEL entry. + + @param[in] GetSelEntryRequest Get SEL entry command request. + @param[out] GetSelEntryResponse Get SEL entry command response. + @param[in,out] GetSelEntryResponseSize Size of Get SEL entry request. + When input, the expected size o= f response data. + When out, the exact size of re= sponse data. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSelEntry ( + IN IPMI_GET_SEL_ENTRY_REQUEST *GetSelEntryRequest, + OUT IPMI_GET_SEL_ENTRY_RESPONSE *GetSelEntryResponse, + IN OUT UINT32 *GetSelEntryResponseSize + ); + +/** + This function adds SEL entry. + + @param[in] AddSelEntryRequest Add SEL entry command request. + @param[out] AddSelEntryResponse Add SEL entry command response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiAddSelEntry ( + IN IPMI_ADD_SEL_ENTRY_REQUEST *AddSelEntryRequest, + OUT IPMI_ADD_SEL_ENTRY_RESPONSE *AddSelEntryResponse + ); + +/** + This function partially adds SEL entry. + + @param[in] PartialAddSelEntryRequest Partial add SEL entry comma= nd request. + @param[in] PartialAddSelEntryRequestSize Size of partial add SEL ent= ry command request. + @param[out] PartialAddSelEntryResponse Partial add SEL entry comma= nd response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiPartialAddSelEntry ( + IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST *PartialAddSelEntryRequest, + IN UINT32 PartialAddSelEntryRequestSize, + OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE *PartialAddSelEntryResponse + ); + +/** + This function clears SEL entry. + + @param[in] ClearSelRequest Clear SEL command request. + @param[out] ClearSelResponse Clear SEL command response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiClearSel ( + IN IPMI_CLEAR_SEL_REQUEST *ClearSelRequest, + OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse + ); + +/** + This function gets SEL time. + + @param[out] GetSelTimeResponse Get SEL time command response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSelTime ( + OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse + ); + +/** + This function sets SEL time. + + @param[in] SetSelTimeRequest Set SEL time command request. + @param[out] CompletionCode Command completion code. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiSetSelTime ( + IN IPMI_SET_SEL_TIME_REQUEST *SetSelTimeRequest, + OUT UINT8 *CompletionCode + ); + +/** + This function gets SDR repository information. + + @param[out] GetSdrRepositoryInfoResp Get SDR repository response. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. +**/ +EFI_STATUS +EFIAPI +IpmiGetSdrRepositoryInfo ( + OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE *GetSdrRepositoryInfoResp + ); + +/** + This function gets SDR + + @param[in] GetSdrRequest Get SDR resquest. + @param[out] GetSdrResponse Get SDR response. + @param[in,out] GetSdrResponseSize The size of get SDR response. + When input, the expected size of r= esponse data. + When out, the exact size of respo= nse data. + + @retval EFI_SUCCESS Command is sent successly. + @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet. + @retval Other Failure. + +**/ +EFI_STATUS +EFIAPI +IpmiGetSdr ( + IN IPMI_GET_SDR_REQUEST *GetSdrRequest, + OUT IPMI_GET_SDR_RESPONSE *GetSdrResponse, + IN OUT UINT32 *GetSdrResponseSize + ); + +#endif -- 2.37.1.windows.1