From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web11.4495.1683676235948549102 for ; Tue, 09 May 2023 16:50:36 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=DuGJ15ip; spf=pass (domain: intel.com, ip: 134.134.136.31, 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=1683676235; x=1715212235; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=jomdD8QHTDdXToE3eX6VG5fwB2/3WSsz7wged4ngHQQ=; b=DuGJ15ip9lUo0x7iYbMqp5SZ/U9MWZY+RnTmJRHeYGsBIkbC1aUWgTyz ZOK0tzh2EDQoiD5hld93wwDJEWWXL5XQVTiFwM3MsQ0LW8C4cOLdv8YdV BbFiBaabjn0Ag40ZEGABCJLyu8o5+2K/IkHGooZDG8SWCmEhNw3FpkXrG OHmL9lbP52w7qrHpVE77eDyUb9YI9keXHifP39G2P7u4bg313GpDHQlDz 8NyGYfDPk24Ym6szVAmtWakTRweLU8RoiJZN/e49U+rYsapWljg0M+SIw z7es4N+G0bCiE2LImn/6QuzFAy9DNnMD6GF5FSur6aStvvK/KYCvSX8Qr Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10705"; a="413369466" X-IronPort-AV: E=Sophos;i="5.99,263,1677571200"; d="scan'208";a="413369466" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2023 16:50:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10705"; a="823331989" X-IronPort-AV: E=Sophos;i="5.99,263,1677571200"; d="scan'208";a="823331989" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga004.jf.intel.com with ESMTP; 09 May 2023 16:50:34 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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.23; Tue, 9 May 2023 16:50:34 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Tue, 9 May 2023 16:50:34 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Tue, 9 May 2023 16:50:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X3K7Gu0axod8emDTSOCnqxaJjHwEwWeBgGRXyFl1yUcDZlbsSMEmceDUD1b67zMdktW53RtzAoNWGYun5h4K0cAIidiKWSISUmEFvKNFomrtg5rDfOEfagc9SpRbp1DE9z9Ah1TSmbBhSHbCOyuXxQuv3s+Q3ZSP+XWqZ4NqELvrExiyieht1GXOHfPP2q86J+xEQ45XHHzlPj0gbk1OEoYBtv7cJil6yRkzmOQXAvbSCHo9V/4MLpe4DW12dsoeOFgTtrw+IlGhP+8FUwV3MW1BV1UiwUpij44RAMCXLEMPQ1ejFi94MTh/wyZtzc0A9cSUjGOOd/Y5++F7DiZpFQ== 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=wY6ZkwgpMauCPwt24nFom/kYdQK0uyF8RSWZGS8SM9M=; b=nMJ6iXGHHMJ5kzHl9eI1zLJx9NZqyjUHhxLlrIFWW/imXrbQxNuhMJ2a9/uBn/LBM2kp5Avd7RkvX1r+VpZYz11bmSVC/pndke7N3BuMOAgHzeiAvfTNXeab9NevfzVhjXL+51TQ5/KVXKGY6SKLW5KVy6yVFrZxqyLK5UcQLMrqQENlVj9QCRwlppZdGnvgxtCVC5vzlfNK/IXBWDBWogdjWgyH/dc0VYYUMn4VmGSItw6Dn+DxZNaRg3NpU0HPpCmXDyBgX4PWtAUbgMZorZ+bUsPJpjwA/5Rzw4anR3AkyG6DiuaKMwBhqIkQUhGP4FuX4ROCB+9W7Ws5VkqPuA== 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 CO6PR11MB5667.namprd11.prod.outlook.com (2603:10b6:5:35b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33; Tue, 9 May 2023 23:50:32 +0000 Received: from SA1PR11MB5801.namprd11.prod.outlook.com ([fe80::6979:a90f:e224:41c5]) by SA1PR11MB5801.namprd11.prod.outlook.com ([fe80::6979:a90f:e224:41c5%4]) with mapi id 15.20.6363.032; Tue, 9 May 2023 23:50:31 +0000 From: "Isaac Oram" To: "abner.chang@amd.com" , "devel@edk2.groups.io" CC: Abdul Lateef Attar , Nickle Wang , Tinh Nguyen Subject: Re: [edk2-platforms][PATCH 1/2] ManageabilityPkg: Add Manageability IPMI helper Library Thread-Topic: [edk2-platforms][PATCH 1/2] ManageabilityPkg: Add Manageability IPMI helper Library Thread-Index: AQHZgkvoClYPogg74k+vItpfysxA9K9SnFrg Date: Tue, 9 May 2023 23:50:31 +0000 Message-ID: References: <20230509075602.342-1-abner.chang@amd.com> In-Reply-To: <20230509075602.342-1-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_|CO6PR11MB5667:EE_ x-ms-office365-filtering-correlation-id: ee411761-4961-4d56-0fd9-08db50e82c9b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eO2WruBbaz4siryJdCt5ktik9mjwBeMQM6pawCnMLfjjj0HEuNmL9TrdkSRdqo9Ma8hnPp7AmaVC/B817n4WY87k6Z0SDeYgLcgshY4UPVnXx1MxymgNeDPaBpuH8GmBDi2pMcqJYihgnbzhHKYodr2/K0IxWPBZmxDm3aWEwkTiM20BOjhU/G/HyGTNZrUyOeSMGTrY+vsZNdOmA+pUebuBFSOjPIZWVqoP2v8jkjF4y/iIgUP6jpMBWTTEajj9ZegPqkIPmxirIvpOR7j9Q2Y1D+uY4wV1CTWIc4X5s0NtihUobUuI7WWcCifZYdPqKoU6l4KQZDEKX+LBWQ6gdC5WxLtQzUTYuvzxTbHAUuFgVroRk7GsFw/C2chXENZrcm+B6FOzeRXhqiBXl70WiwakrP9YXQZLxsy0Vw73ZiWfKwh73EBpY56ZZT2AXAg2fMtyYF1mwFFRIygdAaeoppgkOLGDVD7AY+NeG3qU40xhibgIXDoac2W37tBnm+wHFeic1o1Vf5zrt3sPBnCY/BaOSF0osFM2+9GlZOHLVZXtST9+fEdbJf71tfgNnDZv0VUk5FP2woqBqoMhTPrjS74jJP6XCmWiMUDaLKtKdgl/G4xTbBNzYtR498E3vEVX 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:(13230028)(39860400002)(366004)(376002)(396003)(346002)(136003)(451199021)(33656002)(82960400001)(41300700001)(86362001)(2906002)(55016003)(38100700002)(5660300002)(8676002)(8936002)(122000001)(38070700005)(52536014)(66476007)(4326008)(66446008)(64756008)(76116006)(66946007)(478600001)(83380400001)(316002)(53546011)(186003)(26005)(6506007)(54906003)(66556008)(9686003)(110136005)(71200400001)(7696005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?5GC7TgNet1oaY1AK4k0UCXRvoyxsaSPOQhZUD3Ix2WrbXrPmKGw2DYDZoc4M?= =?us-ascii?Q?lMvlKtSDPt1ViYw7exd9plIjx5cWozplIaMfM4fgKs5Yxk0FerbMXNI+rK6C?= =?us-ascii?Q?fRnqFy8/s822nZgw3xeY4L2SS1jhBL8yoKLDBoLoMVJUS94Po1njDijSLHbr?= =?us-ascii?Q?BTS3IlDSFBq6kLW2ITky/7ZpD4rJBihiMWEQ7r+R+74Lq6l02Lty0l7bKjZl?= =?us-ascii?Q?MUAA41UK4ig2i9/eW/uAMBOm82aTsHqoVtAiPAXWxtX97C/Zm1K/tPe8g2N4?= =?us-ascii?Q?5pB9/vq0H8t/3cK9SMLtRWRljb7qyYkiPfcxbSchLuVur5ajZKEgsZSXx+FS?= =?us-ascii?Q?xaNgtAWnYC+86RO/YqayvXOnwaavwP58Trr1XDKtmcd5PLneiE571asvUoag?= =?us-ascii?Q?eqOcV/Cxxgh/+H+85Pymv/ZQ24ZldvP0WIrCfxEuiSrMugKRqsSnV4j6haRJ?= =?us-ascii?Q?GZvNyHwshNrHGzCjtGrPEx1edUUEZc/0Nm25nacIT7b+Df8mSiITcoaf/Lwg?= =?us-ascii?Q?oCJX28kdKLSYHTgTbUluSPMI4zdfJVvMQ7x17LdaA4QVjjP25uQ+nS/B64hY?= =?us-ascii?Q?rgD3kU4DM22TGdQxjSME9NjeMfAPKURWXq7GiDeEVc6JmX5hKke4AzQdFeoZ?= =?us-ascii?Q?sQjFLtZyKH8cK7QFpZpQhTmo/z8V08ZbqSgOrqhye+1nLNbWZ5P36mQwfh+z?= =?us-ascii?Q?56IOVm8y8Bo25MbIyAbpsi8pwHXe8yj2/3kEzYnx8EUcVMyp9G1qd1XeI9C4?= =?us-ascii?Q?6IMedF9ZCK+u37hy77GZdR6ICmEwh9V8w8mft5j8GIDaxaEnnpD8H9C+qWLk?= =?us-ascii?Q?MMUmZWWhYZWCHmSdGRUYoxsxNCTZv1ehAVIJ9tvQVuMaAgfdqb158PARTpjO?= =?us-ascii?Q?kOxL9goZRymB+0YAf4Auj/MgF9ic+MB/pZwnTMQN/N3G3OOU1Tfs7TwqHz8D?= =?us-ascii?Q?dd62hV2GPoFuUrNHr7ucATvo6NaDWL4Zs/eFzHsCeX19zrDh66EF4KjSdjSE?= =?us-ascii?Q?0QpRqYf8L7umvs74mZ4DD1HWBX1LHtwkT/Q/w4OZpVwtvMWg3vI1RfORV1pt?= =?us-ascii?Q?ufq17UogNeiXU4YU8aUmPQjCdQeJ+rFtH0HWiwhIFc1INDiiZWnIGSQ8Mibl?= =?us-ascii?Q?L/bf2LuNdFWOuCSP9gHlei455Uo10sb2orKSm1pAhUkXEjg23ouaeKC6Uaf4?= =?us-ascii?Q?GObR/6iO41Ch2Zb9vJXvEbqGR2uCpiVh8U/cDjC6j9KJZtg4H/LCsJpAc9Zo?= =?us-ascii?Q?DLGzgLqZ0cxuvjzfYhc0c81Xp3opD9v3P5zgadYV0KlNpapg8SCZV6PRZ5dR?= =?us-ascii?Q?YPepwTldvMS6AkuZiZN3z7o+RoC5hfgKWJ9TND1szFrzZ2gwlncJWpd7dkdS?= =?us-ascii?Q?5EjnNHJmrknBmWp6dYxgR/8TEVWcbXGQz0srpkS7mF2Ag5A2hFKExtPOFA+5?= =?us-ascii?Q?fmIqIehkHkrq5sfIPuMtv/X3LcS1297yKMs3rWPv5QnnAaDV2rzDfJypnBFs?= =?us-ascii?Q?7BA57/qtMr+g+eWP9FvlbAvjZYlhNh5RchBXO4/k0KoDMWgynavnDxO7jdtI?= =?us-ascii?Q?tR3IZ4o1Hn4x1bByfLaF37Ok77CAMjlFxm4M3NuG?= 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: ee411761-4961-4d56-0fd9-08db50e82c9b X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2023 23:50:31.3505 (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: oMYLh6DckW4mrxjbT4f/iKdMUDrBCrwew62hMRlqdwwOjd1ZkGpX4gyD6AcUM4rxR91o7kH52spMDpj/doPUZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR11MB5667 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 I noted that the BaseManageabilityTransportIpmiHelper.c file header comment= indicates that this is a NULL library implementation which seems incorrect= /misleading. I think that this can be fixed before pushing. -----Original Message----- From: abner.chang@amd.com =20 Sent: Tuesday, May 9, 2023 12:56 AM To: devel@edk2.groups.io Cc: Oram, Isaac W ; Abdul Lateef Attar ; Nickle Wang ; Tinh Nguyen Subject: [edk2-platforms][PATCH 1/2] ManageabilityPkg: Add Manageability IP= MI helper Library From: Abner Chang Add IPMI helper library to print debug message of IPMI Completion Code in h= uman readable string and return the transport interface additional status. Signed-off-by: Abner Chang Cc: Isaac Oram Cc: Abdul Lateef Attar Cc: Nickle Wang Cc: Tinh Nguyen --- .../BaseManageabilityTransportHelper.inf | 1 + .../Library/ManageabilityTransportHelperLib.h | 24 +++++++ .../Library/ManageabilityTransportIpmiLib.h | 13 +++- .../Library/ManageabilityTransportLib.h | 11 +-- .../BaseManageabilityTransportIpmiHelper.c | 70 +++++++++++++++++++ 5 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 Fea= tures/ManageabilityPkg/Library/BaseManageabilityTransportHelperLib/BaseMana= geabilityTransportIpmiHelper.c diff --git a/Features/ManageabilityPkg/Library/BaseManageabilityTransportHe= lperLib/BaseManageabilityTransportHelper.inf b/Features/ManageabilityPkg/Li= brary/BaseManageabilityTransportHelperLib/BaseManageabilityTransportHelper.= inf index c9e5eaef60..0936449fda 100644 --- a/Features/ManageabilityPkg/Library/BaseManageabilityTransportHelperLib= /BaseManageabilityTransportHelper.inf +++ b/Features/ManageabilityPkg/Library/BaseManageabilityTransportHelper +++ Lib/BaseManageabilityTransportHelper.inf @@ -21,6 +21,7 @@ =20 [Sources] BaseManageabilityTransportHelper.c + BaseManageabilityTransportIpmiHelper.c =20 [LibraryClasses] BaseMemoryLib diff --git a/Features/ManageabilityPkg/Include/Library/ManageabilityTranspo= rtHelperLib.h b/Features/ManageabilityPkg/Include/Library/ManageabilityTran= sportHelperLib.h index c2c98d6c2d..11a1bd0521 100644 --- a/Features/ManageabilityPkg/Include/Library/ManageabilityTransportHelpe= rLib.h +++ b/Features/ManageabilityPkg/Include/Library/ManageabilityTransportHe +++ lperLib.h @@ -187,4 +187,28 @@ HelperManageabilityDebugPrint ( ... ); =20 +/// +/// IPMI Helper Functions. +/// + +/** + This function returns a human readable string of IPMI KCS Completion=20 +Code + and returns the corresponding additional status of transport interface. + + @param [in] CompletionCode The Completion Code returned from KCS. + @param [out] CompletionCodeStr Human readable string of IPMI Completion= Code. + @param [out] AdditionalStatus Return the addtional status. + + @retval EFI_SUCCESS The information of Completion Code is re= turned. + @retval EFI_NOT_FOUND No information of Completion Code is ret= urned. + @retval EFI_INVALID_PARAMETER The given parameter is incorrect. + +**/ +EFI_STATUS +IpmiHelperCheckCompletionCode ( + IN UINT8 CompletionCode, + OUT CHAR16 **CompletionCodeStr, + OUT MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS *AdditionalStatus + ); + #endif diff --git a/Features/ManageabilityPkg/Include/Library/ManageabilityTranspo= rtIpmiLib.h b/Features/ManageabilityPkg/Include/Library/ManageabilityTransp= ortIpmiLib.h index 1628255a6a..6d136e460f 100644 --- a/Features/ManageabilityPkg/Include/Library/ManageabilityTransportIpmiL= ib.h +++ b/Features/ManageabilityPkg/Include/Library/ManageabilityTransportIp +++ miLib.h @@ -16,9 +16,18 @@ /// the payload. /// typedef struct { - UINT8 Lun:2; - UINT8 NetFn:6; + UINT8 Lun : 2; + UINT8 NetFn : 6; UINT8 Command; } MANAGEABILITY_IPMI_TRANSPORT_HEADER; =20 +/// +/// The IPMI Completion Code mapping. +/// +typedef struct { + UINT8 CompletionCode; + CHAR16 *CompletionCodeString; + MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS AdditionalStatus; +} MANAGEABILITY_IPMI_COMPLETTION_CODE_MAPPING; + #endif diff --git a/Features/ManageabilityPkg/Include/Library/ManageabilityTranspo= rtLib.h b/Features/ManageabilityPkg/Include/Library/ManageabilityTransportL= ib.h index 04072aee89..f423a1ed44 100644 --- a/Features/ManageabilityPkg/Include/Library/ManageabilityTransportLib.h +++ b/Features/ManageabilityPkg/Include/Library/ManageabilityTransportLi +++ b.h @@ -61,11 +61,12 @@ typedef union { /// Additional transport interface status. /// typedef UINT32 MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS; -#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_NO_ERRORS 0x0000000= 0 -#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_ERROR 0x0000000= 1 -#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_BUSY_IN_READ 0x0000000= 2 -#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_BUSY_IN_WRITE 0x0000000= 4 -#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_NOT_AVAILABLE 0xfffff= fff +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_NO_ERRORS 0x00000= 000 +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_ERROR 0x00000= 001 +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_BUSY_IN_READ 0x00000= 002 +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_BUSY_IN_WRITE 0x00000= 004 +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_INVALID_COMMAND 0x00000= 008 +#define MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_NOT_AVAILABLE 0xfffff= fff =20 /// /// Additional transport interface features. diff --git a/Features/ManageabilityPkg/Library/BaseManageabilityTransportHe= lperLib/BaseManageabilityTransportIpmiHelper.c b/Features/ManageabilityPkg/= Library/BaseManageabilityTransportHelperLib/BaseManageabilityTransportIpmiH= elper.c new file mode 100644 index 0000000000..8710cafc99 --- /dev/null +++ b/Features/ManageabilityPkg/Library/BaseManageabilityTransportHelper +++ Lib/BaseManageabilityTransportIpmiHelper.c @@ -0,0 +1,70 @@ +/** @file + Null instance of Manageability IPMI Helper Library + + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights=20 +reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ + +#include +#include +#include + +#include + +// +// BaseManageabilityTransportHelper is used by PEI, DXE and SMM. +// Make sure the global variables added here should be unchangeable. +// +MANAGEABILITY_IPMI_COMPLETTION_CODE_MAPPING IpmiCompletionCodeMapping[] = =3D { + { IPMI_COMP_CODE_NORMAL, L"IPMI Completion Code - Normal", = MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_NO_ERRORS }, + { IPMI_COMP_CODE_NODE_BUSY, L"IPMI Completion Code - Busy", = MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_BUSY_IN_READ }, + { IPMI_COMP_CODE_INVALID_COMMAND, L"IPMI Completion Code - Invalid=20 +command", MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS_INVALID_COMMAND }=20 +}; + +UINT8 IpmiCompletionCodeMappingEntries =3D sizeof=20 +(IpmiCompletionCodeMapping) / sizeof=20 +(MANAGEABILITY_IPMI_COMPLETTION_CODE_MAPPING); + +/// +/// IPMI Helper Functions. +/// + +/** + This function returns a human readable string of IPMI KCS Completion=20 +Code + and returns the corresponding additional status of transport interface. + + @param [in] CompletionCode The Completion Code returned from KCS. + @param [out] CompletionCodeStr Human readable string of IPMI Completion= Code. + @param [out] AdditionalStatus Return the addtional status. + + @retval EFI_SUCCESS The information of Completion Code is re= turned. + @retval EFI_NOT_FOUND No information of Completion Code is ret= urned. + @retval EFI_INVALID_PARAMETER The given parameter is incorrect. + +**/ +EFI_STATUS +IpmiHelperCheckCompletionCode ( + IN UINT8 CompletionCode, + OUT CHAR16 **CompletionCodeStr, + OUT MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS *AdditionalStatus + ) +{ + UINT8 Index; + MANAGEABILITY_IPMI_COMPLETTION_CODE_MAPPING *ThisCcMapping; + + if ((CompletionCodeStr =3D=3D NULL) || (AdditionalStatus =3D=3D NULL)) { + return EFI_INVALID_PARAMETER; + } + + *AdditionalStatus =3D 0; + ThisCcMapping =3D IpmiCompletionCodeMapping; + for (Index =3D 0; Index < IpmiCompletionCodeMappingEntries; Index++) { + if (ThisCcMapping->CompletionCode =3D=3D CompletionCode) { + *CompletionCodeStr =3D ThisCcMapping->CompletionCodeString; + *AdditionalStatus =3D ThisCcMapping->AdditionalStatus; + return EFI_SUCCESS; + } + + ThisCcMapping++; + } + + return EFI_NOT_FOUND; +} -- 2.37.1.windows.1