mpi3mr: mpi headers update to latest

Reviewed by:            imp
Approved by:            imp
Differential revision:  https://reviews.freebsd.org/D44428
This commit is contained in:
Chandrakanth patil 2024-03-19 12:53:07 +05:30 committed by Sumit Saxena
parent 3012fa8fae
commit baabb91934
14 changed files with 251 additions and 160 deletions

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -185,7 +185,7 @@ typedef struct _MPI3_CONFIG_PAGE_HEADER
* Common definitions used by Configuration Pages *
****************************************************************************/
/**** Defines for Negotiated Link Rates ****/
/**** Defines for NegotiatedLinkRates ****/
#define MPI3_SAS_NEG_LINK_RATE_LOGICAL_MASK (0xF0)
#define MPI3_SAS_NEG_LINK_RATE_LOGICAL_SHIFT (4)
#define MPI3_SAS_NEG_LINK_RATE_PHYSICAL_MASK (0x0F)
@ -486,6 +486,7 @@ typedef struct _MPI3_MAN6_GPIO_ENTRY
#define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_SOURCE_GENERIC (0x00)
#define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_SOURCE_CABLE_MGMT (0x10)
#define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_SOURCE_ACTIVE_CABLE_OVERCURRENT (0x20)
#define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_ACK_REQUIRED (0x02)
#define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_TRIGGER_MASK (0x01)
#define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_TRIGGER_EDGE (0x00)
@ -1073,7 +1074,7 @@ typedef struct _MPI3_MAN_PAGE12
#define MPI3_MAN12_FLAGS_SDATAOUT_TYPE_PUSH_PULL (0x0000)
#define MPI3_MAN12_FLAGS_SDATAOUT_TYPE_OPEN_DRAIN (0x0001)
/**** Defines for the SioClkFreq field ****/
/**** Defines for the SClockFreq field ****/
#define MPI3_MAN12_SIO_CLK_FREQ_MIN (32) /* 32 Hz min SIO Clk Freq */
#define MPI3_MAN12_SIO_CLK_FREQ_MAX (100000) /* 100 KHz max SIO Clk Freq */
@ -1306,7 +1307,7 @@ typedef struct _MPI3_MAN_PAGE20
#define MPI3_MAN20_ALLOWEDPERSON_EHBA_ALLOWED (0x01)
#define MPI3_MAN20_ALLOWEDPERSON_EHBA_NOT_ALLOWED (0x00)
/**** Defines for the NonpremuimFeatures field ****/
/**** Defines for the NonpremiumFeatures field ****/
#define MPI3_MAN20_NONPREMUIM_DISABLE_PD_DEGRADED_MASK (0x01)
#define MPI3_MAN20_NONPREMUIM_DISABLE_PD_DEGRADED_ENABLED (0x00)
#define MPI3_MAN20_NONPREMUIM_DISABLE_PD_DEGRADED_DISABLED (0x01)
@ -1338,6 +1339,23 @@ typedef struct _MPI3_MAN_PAGE21
#define MPI3_MAN21_FLAGS_SES_VPD_ASSOC_DEFAULT (0x00000000)
#define MPI3_MAN21_FLAGS_SES_VPD_ASSOC_OEM_SPECIFIC (0x00000001)
/*****************************************************************************
* Manufacturing Page 22 *
****************************************************************************/
typedef struct _MPI3_MAN_PAGE22
{
MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */
U32 Reserved08; /* 0x08 */
U16 NumEUI64; /* 0x0C */
U16 Reserved0E; /* 0x0E */
U64 BaseEUI64; /* 0x10 */
} MPI3_MAN_PAGE22, MPI3_POINTER PTR_MPI3_MAN_PAGE22,
Mpi3ManPage22_t, MPI3_POINTER pMpi3ManPage22_t;
/**** Defines for the PageVersion field ****/
#define MPI3_MAN22_PAGEVERSION (0x00)
/*****************************************************************************
* Manufacturing Pages 32-63 (ProductSpecific) *
****************************************************************************/
@ -1434,13 +1452,21 @@ typedef struct _MPI3_IO_UNIT_PAGE2
* IO Unit Page 3 *
****************************************************************************/
typedef enum _MPI3_IOUNIT3_THRESHOLD
{
MPI3_IOUNIT3_THRESHOLD_WARNING = 0,
MPI3_IOUNIT3_THRESHOLD_CRITICAL = 1,
MPI3_IOUNIT3_THRESHOLD_FATAL = 2,
MPI3_IOUNIT3_THRESHOLD_LOW = 3,
MPI3_IOUNIT3_NUM_THRESHOLDS
} MPI3_IOUNIT3_THRESHOLD;
typedef struct _MPI3_IO_UNIT3_SENSOR
{
U16 Flags; /* 0x00 */
U8 ThresholdMargin; /* 0x02 */
U8 Reserved03; /* 0x03 */
U16 Threshold[3]; /* 0x04 */
U16 Reserved0A; /* 0x0A */
U16 Threshold[MPI3_IOUNIT3_NUM_THRESHOLDS]; /* 0x04 */
U32 Reserved0C; /* 0x0C */
U32 Reserved10; /* 0x10 */
U32 Reserved14; /* 0x14 */
@ -1448,6 +1474,7 @@ typedef struct _MPI3_IO_UNIT3_SENSOR
Mpi3IOUnit3Sensor_t, MPI3_POINTER pMpi3IOUnit3Sensor_t;
/**** Defines for the Flags field ****/
#define MPI3_IOUNIT3_SENSOR_FLAGS_LOW_THRESHOLD_VALID (0x0020)
#define MPI3_IOUNIT3_SENSOR_FLAGS_FATAL_EVENT_ENABLED (0x0010)
#define MPI3_IOUNIT3_SENSOR_FLAGS_FATAL_ACTION_ENABLED (0x0008)
#define MPI3_IOUNIT3_SENSOR_FLAGS_CRITICAL_EVENT_ENABLED (0x0004)
@ -1591,7 +1618,7 @@ typedef struct _MPI3_IO_UNIT_PAGE5
#define MPI3_IOUNIT5_FLAGS_POWER_CAPABLE_SPINUP (0x02)
#define MPI3_IOUNIT5_FLAGS_AUTO_PORT_ENABLE (0x01)
/**** Defines for the PHY field ****/
/**** Defines for the Phy field ****/
#define MPI3_IOUNIT5_PHY_SPINUP_GROUP_MASK (0x03)
/*****************************************************************************
@ -1621,11 +1648,33 @@ typedef struct _MPI3_IO_UNIT_PAGE6
#define MPI3_IOUNIT8_DIGEST_MAX (1)
#endif /* MPI3_IOUNIT8_DIGEST_MAX */
typedef union _MPI3_IOUNIT8_DIGEST
typedef union _MPI3_IOUNIT8_RAW_DIGEST
{
U32 Dword[16];
U16 Word[32];
U8 Byte[64];
} MPI3_IOUNIT8_RAW_DIGEST, MPI3_POINTER PTR_MPI3_IOUNIT8_RAW_DIGEST,
Mpi3IOUnit8RawDigest_t, MPI3_POINTER pMpi3IOUnit8RawDigest_t;
typedef struct _MPI3_IOUNIT8_METADATA_DIGEST
{
U8 SlotStatus; /* 0x00 */
U8 Reserved01[3]; /* 0x01 */
U32 Reserved04[3]; /* 0x04 */
MPI3_IOUNIT8_RAW_DIGEST DigestData; /* 0x10 */
} MPI3_IOUNIT8_METADATA_DIGEST, MPI3_POINTER PTR_MPI3_IOUNIT8_METADATA_DIGEST,
Mpi3IOUnit8MetadataDigest_t, MPI3_POINTER pMpi3IOUnit8MetadataDigest_t;
/**** Defines for the SlotStatus field ****/
#define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_UNUSED (0x00)
#define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_UPDATE_PENDING (0x01)
#define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_VALID (0x03)
#define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_INVALID (0x07)
typedef union _MPI3_IOUNIT8_DIGEST
{
MPI3_IOUNIT8_RAW_DIGEST RawDigest[MPI3_IOUNIT8_DIGEST_MAX];
MPI3_IOUNIT8_METADATA_DIGEST MetadataDigest[MPI3_IOUNIT8_DIGEST_MAX];
} MPI3_IOUNIT8_DIGEST, MPI3_POINTER PTR_MPI3_IOUNIT8_DIGEST,
Mpi3IOUnit8Digest_t, MPI3_POINTER pMpi3IOUnit8Digest_t;
@ -1633,8 +1682,9 @@ typedef struct _MPI3_IO_UNIT_PAGE8
{
MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */
U8 SBMode; /* 0x08 */
U8 SbState; /* 0x09 */
U16 Reserved0A; /* 0x0A */
U8 SBState; /* 0x09 */
U8 Flags; /* 0x0A */
U8 Reserved0A; /* 0x0B */
U8 NumSlots; /* 0x0C */
U8 SlotsAvailable; /* 0x0D */
U8 CurrentKeyEncryptionAlgo; /* 0x0E */
@ -1642,22 +1692,27 @@ typedef struct _MPI3_IO_UNIT_PAGE8
MPI3_VERSION_UNION CurrentSvn; /* 0x10 */
U32 Reserved14; /* 0x14 */
U32 CurrentKey[128]; /* 0x18 */
MPI3_IOUNIT8_DIGEST Digest[MPI3_IOUNIT8_DIGEST_MAX]; /* 0x218 */ /* variable length */
MPI3_IOUNIT8_DIGEST Digest; /* 0x218 */ /* variable length */
} MPI3_IO_UNIT_PAGE8, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE8,
Mpi3IOUnitPage8_t, MPI3_POINTER pMpi3IOUnitPage8_t;
/**** Defines for the PageVersion field ****/
#define MPI3_IOUNIT8_PAGEVERSION (0x00)
#define MPI3_IOUNIT8_PAGEVERSION (0x00)
/**** Defines for the SBMode field ****/
#define MPI3_IOUNIT8_SBMODE_SECURE_DEBUG (0x04)
#define MPI3_IOUNIT8_SBMODE_HARD_SECURE (0x02)
#define MPI3_IOUNIT8_SBMODE_CONFIG_SECURE (0x01)
#define MPI3_IOUNIT8_SBMODE_SECURE_DEBUG (0x04)
#define MPI3_IOUNIT8_SBMODE_HARD_SECURE (0x02)
#define MPI3_IOUNIT8_SBMODE_CONFIG_SECURE (0x01)
/**** Defines for the SBState field ****/
#define MPI3_IOUNIT8_SBSTATE_SVN_UPDATE_PENDING (0x04)
#define MPI3_IOUNIT8_SBSTATE_KEY_UPDATE_PENDING (0x02)
#define MPI3_IOUNIT8_SBSTATE_SECURE_BOOT_ENABLED (0x01)
#define MPI3_IOUNIT8_SBSTATE_SVN_UPDATE_PENDING (0x04)
#define MPI3_IOUNIT8_SBSTATE_KEY_UPDATE_PENDING (0x02)
#define MPI3_IOUNIT8_SBSTATE_SECURE_BOOT_ENABLED (0x01)
/**** Defines for the Flags field ****/
#define MPI3_IOUNIT8_FLAGS_DIGESTFORM_MASK (0x07)
#define MPI3_IOUNIT8_FLAGS_DIGESTFORM_RAW (0x00)
#define MPI3_IOUNIT8_FLAGS_DIGESTFORM_DIGEST_WITH_METADATA (0x01)
/*****************************************************************************
* IO Unit Page 9 *
@ -1908,6 +1963,38 @@ typedef struct _MPI3_IO_UNIT_PAGE15
/**** Defines for the NumPowerBudgetData field ****/
#define MPI3_IOUNIT15_NUMPOWERBUDGETDATA_POWER_BUDGETING_DISABLED (0x00)
/*****************************************************************************
* IO Unit Page 16 *
****************************************************************************/
#ifndef MPI3_IOUNIT16_ERROR_MAX
#define MPI3_IOUNIT16_ERROR_MAX (1)
#endif /* MPI3_IOUNIT16_ERROR_MAX */
typedef struct _MPI3_IOUNIT16_ERROR
{
U32 Offset; /* 0x00 */
U32 Reserved04; /* 0x04 */
U64 Count; /* 0x08 */
U64 Timestamp; /* 0x10 */
} MPI3_IOUNIT16_ERROR, MPI3_POINTER PTR_MPI3_IOUNIT16_ERROR,
Mpi3IOUnit16Error_t, MPI3_POINTER pMpi3IOUnit16Error_t;
typedef struct _MPI3_IO_UNIT_PAGE16
{
MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */
U64 TotalErrorCount; /* 0x08 */
U32 Reserved10[3]; /* 0x10 */
U8 NumErrors; /* 0x1C */
U8 MaxErrorsTracked; /* 0x1D */
U16 Reserved1E; /* 0x1E */
MPI3_IOUNIT16_ERROR Error[MPI3_IOUNIT16_ERROR_MAX]; /* 0x20 */ /* variable length */
} MPI3_IO_UNIT_PAGE16, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE16,
Mpi3IOUnitPage16_t, MPI3_POINTER pMpi3IOUnitPage16_t;
/**** Defines for the PageVersion field ****/
#define MPI3_IOUNIT16_PAGEVERSION (0x00)
/*****************************************************************************
* IOC Configuration Pages *
****************************************************************************/
@ -1973,7 +2060,8 @@ typedef struct _MPI3_IOC_PAGE2
* Driver Configuration Pages *
****************************************************************************/
/**** Defines for the Flags field ****/
/**** Defines for the Flags field in Driver Pages 10, 20, and 30 ****/
/**** NOT used in Driver Page 1 Flags field ****/
#define MPI3_DRIVER_FLAGS_ADMINRAIDPD_BLOCKED (0x0010)
#define MPI3_DRIVER_FLAGS_OOBRAIDPD_BLOCKED (0x0008)
#define MPI3_DRIVER_FLAGS_OOBRAIDVD_BLOCKED (0x0004)
@ -2006,7 +2094,7 @@ typedef struct _MPI3_ALLOWED_CMD_NVME
} MPI3_ALLOWED_CMD_NVME, MPI3_POINTER PTR_MPI3_ALLOWED_CMD_NVME,
Mpi3AllowedCmdNvme_t, MPI3_POINTER pMpi3AllowedCmdNvme_t;
/**** Defines for the CommandFlags field ****/
/**** Defines for the NVMeCmdFlags field ****/
#define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_SUBQ_TYPE_MASK (0x80)
#define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_SUBQ_TYPE_IO (0x00)
#define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_SUBQ_TYPE_ADMIN (0x80)
@ -2057,6 +2145,8 @@ typedef struct _MPI3_DRIVER_PAGE0
#define MPI3_DRIVER0_PAGEVERSION (0x00)
/**** Defines for the BSDOptions field ****/
#define MPI3_DRIVER0_BSDOPTS_DEVICEEXPOSURE_DISABLE (0x00000020)
#define MPI3_DRIVER0_BSDOPTS_WRITECACHE_DISABLE (0x00000010)
#define MPI3_DRIVER0_BSDOPTS_HEADLESS_MODE_ENABLE (0x00000008)
#define MPI3_DRIVER0_BSDOPTS_DIS_HII_CONFIG_UTIL (0x00000004)
#define MPI3_DRIVER0_BSDOPTS_REGISTRATION_MASK (0x00000003)
@ -2263,14 +2353,6 @@ typedef union _MPI3_SECURITY_NONCE
} MPI3_SECURITY_NONCE, MPI3_POINTER PTR_MPI3_SECURITY_NONCE,
Mpi3SecurityNonce_t, MPI3_POINTER pMpi3SecurityNonce_t;
typedef union _MPI3_SECURITY_ROOT_DIGEST
{
U32 Dword[16];
U16 Word[32];
U8 Byte[64];
} MPI3_SECURITY_ROOT_DIGEST, MPI3_POINTER PTR_MPI3_SECURITY_ROOT_DIGEST,
Mpi3SecurityRootDigest_t, MPI3_POINTER pMpi3SecurityRootDigest_t;
/*****************************************************************************
* Security Page 0 *
****************************************************************************/
@ -2382,17 +2464,25 @@ typedef struct _MPI3_SECURITY_PAGE1
#define MPI3_SECURITY2_TRUSTED_ROOT_MAX 1
#endif /* MPI3_SECURITY2_TRUSTED_ROOT_MAX */
#ifndef MPI3_SECURITY2_ROOT_LEN
#define MPI3_SECURITY2_ROOT_LEN 4
#endif /* MPI3_SECURITY2_ROOT_LEN */
typedef struct _MPI3_SECURITY2_TRUSTED_ROOT
{
U8 Level; /* 0x00 */
U8 HashAlgorithm; /* 0x01 */
U16 TrustedRootFlags; /* 0x02 */
U32 Reserved04[3]; /* 0x04 */
MPI3_SECURITY_ROOT_DIGEST RootDigest; /* 0x10 */
U8 Root[MPI3_SECURITY2_ROOT_LEN]; /* 0x10 */ /* variable length */
} MPI3_SECURITY2_TRUSTED_ROOT, MPI3_POINTER PTR_MPI3_SECURITY2_TRUSTED_ROOT,
Mpi3Security2TrustedRoot_t, MPI3_POINTER pMpi3Security2TrustedRoot_t;
/**** Defines for the TrustedRootFlags field ****/
#define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_MASK (0xF000)
#define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_SHIFT (12)
#define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_DIGEST (0x0000)
#define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_DERCERT (0x1000)
#define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_HASHALGOSOURCE_MASK (0x0006)
#define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_HASHALGOSOURCE_SHIFT (1)
#define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_HASHALGOSOURCE_HA_FIELD (0x0000)
@ -2407,7 +2497,8 @@ typedef struct _MPI3_SECURITY_PAGE2
MPI3_SECURITY_NONCE Nonce; /* 0x50 */
U32 Reserved90[3]; /* 0x90 */
U8 NumRoots; /* 0x9C */
U8 Reserved9D[3]; /* 0x9D */
U8 Reserved9D; /* 0x9D */
U16 RootElementSize; /* 0x9E */
MPI3_SECURITY2_TRUSTED_ROOT TrustedRoot[MPI3_SECURITY2_TRUSTED_ROOT_MAX]; /* 0xA0 */ /* variable length */
} MPI3_SECURITY_PAGE2, MPI3_POINTER PTR_MPI3_SECURITY_PAGE2,
Mpi3SecurityPage2_t, MPI3_POINTER pMpi3SecurityPage2_t;
@ -3052,7 +3143,7 @@ typedef struct _MPI3_SAS_PHY_PAGE4
* Common definitions used by PCIe Configuration Pages *
****************************************************************************/
/**** Defines for Negotiated Link Rates ****/
/**** Defines for NegotiatedLinkRates ****/
#define MPI3_PCIE_LINK_RETIMERS_MASK (0x30)
#define MPI3_PCIE_LINK_RETIMERS_SHIFT (4)
#define MPI3_PCIE_NEG_LINK_RATE_MASK (0x0F)
@ -3219,8 +3310,8 @@ typedef struct _MPI3_PCIE_IO_UNIT_PAGE1
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PERST_OVERRIDE_BACKPLANE_ERROR (0x60000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_MASK (0x1C000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_NONE (0x00000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_DEASSERT (0x04000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_ASSERT (0x08000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_ENABLE (0x04000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_DISABLE (0x08000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_BACKPLANE_ERROR (0x0C000000)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PARTIAL_CAPACITY_ENABLE (0x00000100)
#define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_OVERRIDE_DISABLE (0x00000080)
@ -3362,12 +3453,14 @@ typedef struct _MPI3_PCIE_SWITCH_PAGE1
/**** Defines for the PageVersion field ****/
#define MPI3_PCIESWITCH1_PAGEVERSION (0x00)
/**** Defines for the FLAGS field ****/
/**** Defines for the Flags field ****/
#define MPI3_PCIESWITCH1_FLAGS_ASPMSTATE_MASK (0x0C)
#define MPI3_PCIESWITCH1_FLAGS_ASPMSTATE_SHIFT (2)
/*** use MPI3_PCIE_ASPM_ENABLE_ defines for ASPMState field values ***/
#define MPI3_PCIESWITCH1_FLAGS_ASPMSUPPORT_MASK (0x03)
#define MPI3_PCIESWITCH1_FLAGS_ASPMSUPPORT_SHIFT (0)
/*** use MPI3_PCIE_ASPM_SUPPORT_ defines for ASPMSupport field values ***/
/**** Defines for the NegotiatedLinkRate field - use MPI3_PCIE_NEG_LINK_RATE_ defines ****/
@ -3454,6 +3547,8 @@ typedef struct _MPI3_ENCLOSURE_PAGE0
U16 SEPDevHandle; /* 0x1A */
U8 ChassisSlot; /* 0x1C */
U8 Reserved1D[3]; /* 0x1D */
U32 ReceptacleIDs; /* 0x20 */
U32 Reserved24; /* 0x24 */
} MPI3_ENCLOSURE_PAGE0, MPI3_POINTER PTR_MPI3_ENCLOSURE_PAGE0,
Mpi3EnclosurePage0_t, MPI3_POINTER pMpi3EnclosurePage0_t;
@ -3474,7 +3569,8 @@ typedef struct _MPI3_ENCLOSURE_PAGE0
#define MPI3_ENCLS0_FLAGS_MNG_IOC_SES (0x0001)
#define MPI3_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0002)
/**** Defines for the PhysicalPort field - use MPI3_DEVICE0_PHYPORT_ defines ****/
/**** Defines for the ReceptacleIDs field ****/
#define MPI3_ENCLS0_RECEPTACLEIDS_NOT_REPORTED (0x00000000)
/*****************************************************************************
* Device Configuration Pages *
@ -3577,7 +3673,7 @@ typedef struct _MPI3_DEVICE0_PCIE_FORMAT
#define MPI3_DEVICE0_PCIE_CAP_ASPM_SHIFT (6)
/*** use MPI3_PCIE_ASPM_SUPPORT_ defines for ASPM field values ***/
/**** Defines for the RecoverMethod field ****/
/**** Defines for the RecoveryInfo field ****/
#define MPI3_DEVICE0_PCIE_RECOVER_METHOD_MASK (0xE0)
#define MPI3_DEVICE0_PCIE_RECOVER_METHOD_NS_MGMT (0x00)
#define MPI3_DEVICE0_PCIE_RECOVER_METHOD_FORMAT (0x20)

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_IMAGE_H
#define MPI30_IMAGE_H 1
@ -119,12 +118,19 @@ typedef struct _MPI3_COMPONENT_IMAGE_HEADER
#define MPI3_IMAGE_HEADER_SIGNATURE1_RMC (0x20434D52) /* string "RMC " */
#define MPI3_IMAGE_HEADER_SIGNATURE1_SMM (0x204D4D53) /* string "SMM " */
#define MPI3_IMAGE_HEADER_SIGNATURE1_PSW (0x20575350) /* string "PSW " */
#define MPI3_IMAGE_HEADER_SIGNATURE1_CSW (0x20575343) /* string "CSW " */
/**** Definitions for Signature2 field ****/
#define MPI3_IMAGE_HEADER_SIGNATURE2_VALUE (0x50584546)
/**** Definitions for Flags field ****/
#define MPI3_IMAGE_HEADER_FLAGS_SIGNED_UEFI_MASK (0x00000300)
#define MPI3_IMAGE_HEADER_FLAGS_SIGNED_UEFI_UNSPECIFIED (0x00000000)
#define MPI3_IMAGE_HEADER_FLAGS_SIGNED_UEFI_NOT_SIGNED (0x00000100)
#define MPI3_IMAGE_HEADER_FLAGS_SIGNED_UEFI_MICROSOFT_SIGNED (0x00000200)
#define MPI3_IMAGE_HEADER_FLAGS_CERT_CHAIN_FORMAT_MASK (0x000000C0)
#define MPI3_IMAGE_HEADER_FLAGS_CERT_CHAIN_FORMAT_DEVICE_CERT (0x00000000)
#define MPI3_IMAGE_HEADER_FLAGS_CERT_CHAIN_FORMAT_ALIAS_CERT (0x00000040)
#define MPI3_IMAGE_HEADER_FLAGS_DEVICE_KEY_BASIS_MASK (0x00000030)
#define MPI3_IMAGE_HEADER_FLAGS_DEVICE_KEY_BASIS_CDI (0x00000000)
#define MPI3_IMAGE_HEADER_FLAGS_DEVICE_KEY_BASIS_DI (0x00000010)
@ -216,12 +222,14 @@ typedef struct _MPI3_CI_MANIFEST_MPI
/* defines for the ReleaseLevel field */
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_DEV (0x00)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_PRE_PRODUCTION (0x08)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_PREALPHA (0x10)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_ALPHA (0x20)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_BETA (0x30)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_RC (0x40)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_GCA (0x50)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_POINT (0x60)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_DIAG (0xF0)
/* defines for the Flags field */
#define MPI3_CI_MANIFEST_MPI_FLAGS_DIAG_AUTHORIZATION (0x01)
@ -314,9 +322,9 @@ typedef struct _MPI3_SUPPORTED_DEVICES_DATA
} MPI3_SUPPORTED_DEVICES_DATA, MPI3_POINTER PTR_MPI3_SUPPORTED_DEVICES_DATA,
Mpi3SupportedDevicesData_t, MPI3_POINTER pMpi3SupportedDevicesData_t;
#ifndef MPI3_ENCRYPTED_HASH_MAX
#define MPI3_ENCRYPTED_HASH_MAX (1)
#endif /* MPI3_ENCRYPTED_HASH_MAX */
#ifndef MPI3_PUBLIC_KEY_MAX
#define MPI3_PUBLIC_KEY_MAX (1)
#endif /* MPI3_PUBLIC_KEY_MAX */
/* Encrypted Hash Entry Format */
typedef struct _MPI3_ENCRYPTED_HASH_ENTRY
@ -325,8 +333,10 @@ typedef struct _MPI3_ENCRYPTED_HASH_ENTRY
U8 HashAlgorithm; /* 0x01 */
U8 EncryptionAlgorithm; /* 0x02 */
U8 Reserved03; /* 0x03 */
U32 Reserved04; /* 0x04 */
U32 EncryptedHash[MPI3_ENCRYPTED_HASH_MAX]; /* 0x08 */ /* variable length */
U16 PublicKeySize; /* 0x04 */
U16 SignatureSize; /* 0x06 */
U32 PublicKey[MPI3_PUBLIC_KEY_MAX]; /* 0x08 */ /* variable length */
/* Signature - offset of this field must be calculated */ /* variable length */
} MPI3_ENCRYPTED_HASH_ENTRY, MPI3_POINTER PTR_MPI3_ENCRYPTED_HASH_ENTRY,
Mpi3EncryptedHashEntry_t, MPI3_POINTER pMpi3EncryptedHashEntry_t;
@ -358,24 +368,9 @@ typedef struct _MPI3_ENCRYPTED_HASH_ENTRY
#define MPI3_ENCRYPTION_ALGORITHM_ECDSA_P256 (0x07) /* NIST secp256r1 curve */
#define MPI3_ENCRYPTION_ALGORITHM_ECDSA_P384 (0x08) /* NIST secp384r1 curve */
#define MPI3_ENCRYPTION_ALGORITHM_ECDSA_P521 (0x09) /* NIST secp521r1 curve */
#ifndef MPI3_PUBLIC_KEY_MAX
#define MPI3_PUBLIC_KEY_MAX (1)
#endif /* MPI3_PUBLIC_KEY_MAX */
/* Encrypted Key with Hash Entry Format */
typedef struct _MPI3_ENCRYPTED_KEY_WITH_HASH_ENTRY
{
U8 HashImageType; /* 0x00 */
U8 HashAlgorithm; /* 0x01 */
U8 EncryptionAlgorithm; /* 0x02 */
U8 Reserved03; /* 0x03 */
U32 Reserved04; /* 0x04 */
U32 PublicKey[MPI3_PUBLIC_KEY_MAX]; /* 0x08 */ /* variable length */
/* EncryptedHash - offset of this field must be calculated */ /* variable length */
} MPI3_ENCRYPTED_KEY_WITH_HASH_ENTRY, MPI3_POINTER PTR_MPI3_ENCRYPTED_KEY_WITH_HASH_ENTRY,
Mpi3EncryptedKeyWithHashEntry_t, MPI3_POINTER pMpi3EncryptedKeyWithHashEntry_t;
#define MPI3_ENCRYPTION_ALGORITHM_LMS_HSS (0x0A) /* Leighton-Micali Signature (LMS) -
* Hierarchical Signature System (HSS)
*/
#ifndef MPI3_ENCRYPTED_HASH_ENTRY_MAX
#define MPI3_ENCRYPTED_HASH_ENTRY_MAX (1)

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_INIT_H
#define MPI30_INIT_H 1
@ -78,7 +77,7 @@ typedef struct _MPI3_SCSI_IO_REQUEST
U16 ChangeCount; /* 0x08 */
U16 DevHandle; /* 0x0A */
U32 Flags; /* 0x0C */
U32 SkipCount; /* 0x10 */
U32 IOCUseOnly10; /* 0x10 */
U32 DataLength; /* 0x14 */
U8 LUN[8]; /* 0x18 */
MPI3_SCSI_IO_CDB_UNION CDB; /* 0x20 */
@ -91,10 +90,12 @@ typedef struct _MPI3_SCSI_IO_REQUEST
#define MPI3_SCSIIO_MSGFLAGS_DIVERT_TO_FIRMWARE (0x40)
/**** Defines for the Flags field ****/
#define MPI3_SCSIIO_FLAGS_LARGE_CDB (0x60000000)
#define MPI3_SCSIIO_FLAGS_LARGE_CDB_MASK (0x60000000)
#define MPI3_SCSIIO_FLAGS_CDB_16_OR_LESS (0x00000000)
#define MPI3_SCSIIO_FLAGS_CDB_GREATER_THAN_16 (0x20000000)
#define MPI3_SCSIIO_FLAGS_CDB_IN_SEPARATE_BUFFER (0x40000000)
#define MPI3_SCSIIO_FLAGS_CDB_PRODUCT_SPECIFIC (0x60000000)
#define MPI3_SCSIIO_FLAGS_IOC_USE_ONLY_27_MASK (0x18000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_MASK (0x07000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_SIMPLEQ (0x00000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_HEADOFQ (0x01000000)

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_IOC_H
#define MPI30_IOC_H 1
@ -76,17 +75,19 @@ typedef struct _MPI3_IOC_INIT_REQUEST
Mpi3IOCInitRequest_t, MPI3_POINTER pMpi3IOCInitRequest_t;
/**** Defines for the MsgFlags field ****/
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_MASK (0x03)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_NOT_USED (0x00)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_SEPARATED (0x01)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_INLINE (0x02)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_BOTH (0x03)
#define MPI3_IOCINIT_MSGFLAGS_WRITESAMEDIVERT_SUPPORTED (0x08)
#define MPI3_IOCINIT_MSGFLAGS_SCSIIOSTATUSREPLY_SUPPORTED (0x04)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_MASK (0x03)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_NOT_USED (0x00)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_SEPARATED (0x01)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_INLINE (0x02)
#define MPI3_IOCINIT_MSGFLAGS_HOSTMETADATA_BOTH (0x03)
/**** Defines for the WhoInit field ****/
#define MPI3_WHOINIT_NOT_INITIALIZED (0x00)
#define MPI3_WHOINIT_ROM_BIOS (0x02)
#define MPI3_WHOINIT_HOST_DRIVER (0x03)
#define MPI3_WHOINIT_MANUFACTURER (0x04)
#define MPI3_WHOINIT_NOT_INITIALIZED (0x00)
#define MPI3_WHOINIT_ROM_BIOS (0x02)
#define MPI3_WHOINIT_HOST_DRIVER (0x03)
#define MPI3_WHOINIT_MANUFACTURER (0x04)
/**** Defines for the DriverInformationAddress field */
typedef struct _MPI3_DRIVER_INFO_LAYOUT
@ -173,6 +174,8 @@ typedef struct _MPI3_IOC_FACTS_DATA
U16 MaxIOThrottleGroup; /* 0x62 */
U16 IOThrottleLow; /* 0x64 */
U16 IOThrottleHigh; /* 0x66 */
U32 DiagFdlSize; /* 0x68 */
U32 DiagTtySize; /* 0x6C */
} MPI3_IOC_FACTS_DATA, MPI3_POINTER PTR_MPI3_IOC_FACTS_DATA,
Mpi3IOCFactsData_t, MPI3_POINTER pMpi3IOCFactsData_t;
@ -183,13 +186,13 @@ typedef struct _MPI3_IOC_FACTS_DATA
#define MPI3_IOCFACTS_CAPABILITY_INT_COALESCE_MASK (0x00000600)
#define MPI3_IOCFACTS_CAPABILITY_INT_COALESCE_FIXED_THRESHOLD (0x00000000)
#define MPI3_IOCFACTS_CAPABILITY_INT_COALESCE_OUTSTANDING_IO (0x00000200)
#define MPI3_IOCFACTS_CAPABILITY_COMPLETE_RESET_CAPABLE (0x00000100)
#define MPI3_IOCFACTS_CAPABILITY_SEG_DIAG_TRACE_ENABLED (0x00000080)
#define MPI3_IOCFACTS_CAPABILITY_SEG_DIAG_FW_ENABLED (0x00000040)
#define MPI3_IOCFACTS_CAPABILITY_SEG_DIAG_DRIVER_ENABLED (0x00000020)
#define MPI3_IOCFACTS_CAPABILITY_ADVANCED_HOST_PD_ENABLED (0x00000010)
#define MPI3_IOCFACTS_CAPABILITY_RAID_CAPABLE (0x00000008)
#define MPI3_IOCFACTS_CAPABILITY_MULTIPATH_ENABLED (0x00000002)
#define MPI3_IOCFACTS_CAPABILITY_COMPLETE_RESET_SUPPORTED (0x00000100)
#define MPI3_IOCFACTS_CAPABILITY_SEG_DIAG_TRACE_SUPPORTED (0x00000080)
#define MPI3_IOCFACTS_CAPABILITY_SEG_DIAG_FW_SUPPORTED (0x00000040)
#define MPI3_IOCFACTS_CAPABILITY_SEG_DIAG_DRIVER_SUPPORTED (0x00000020)
#define MPI3_IOCFACTS_CAPABILITY_ADVANCED_HOST_PD_SUPPORTED (0x00000010)
#define MPI3_IOCFACTS_CAPABILITY_RAID_SUPPORTED (0x00000008)
#define MPI3_IOCFACTS_CAPABILITY_MULTIPATH_SUPPORTED (0x00000002)
#define MPI3_IOCFACTS_CAPABILITY_COALESCE_CTRL_SUPPORTED (0x00000001)
/**** WhoInit values are defined under IOCInit Request Message definition ****/
@ -234,22 +237,29 @@ typedef struct _MPI3_IOC_FACTS_DATA
#define MPI3_IOCFACTS_MAX_DATA_LENGTH_NOT_REPORTED (0x0000)
/**** Defines for the Flags field ****/
#define MPI3_IOCFACTS_FLAGS_SIGNED_NVDATA_REQUIRED (0x00010000)
#define MPI3_IOCFACTS_FLAGS_DMA_ADDRESS_WIDTH_MASK (0x0000FF00)
#define MPI3_IOCFACTS_FLAGS_DMA_ADDRESS_WIDTH_SHIFT (8)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_MASK (0x00000030)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_NOT_STARTED (0x00000000)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_IN_PROGRESS (0x00000010)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_COMPLETE (0x00000020)
#define MPI3_IOCFACTS_FLAGS_PERSONALITY_MASK (0x0000000F)
#define MPI3_IOCFACTS_FLAGS_PERSONALITY_EHBA (0x00000000)
#define MPI3_IOCFACTS_FLAGS_PERSONALITY_RAID_DDR (0x00000002)
#define MPI3_IOCFACTS_FLAGS_SIGNED_NVDATA_REQUIRED (0x00010000)
#define MPI3_IOCFACTS_FLAGS_DMA_ADDRESS_WIDTH_MASK (0x0000FF00)
#define MPI3_IOCFACTS_FLAGS_DMA_ADDRESS_WIDTH_SHIFT (8)
#define MPI3_IOCFACTS_FLAGS_MAX_REQ_PER_REPLY_QUEUE_LIMIT (0x00000040)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_MASK (0x00000030)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_NOT_STARTED (0x00000000)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_IN_PROGRESS (0x00000010)
#define MPI3_IOCFACTS_FLAGS_INITIAL_PORT_ENABLE_COMPLETE (0x00000020)
#define MPI3_IOCFACTS_FLAGS_PERSONALITY_MASK (0x0000000F)
#define MPI3_IOCFACTS_FLAGS_PERSONALITY_EHBA (0x00000000)
#define MPI3_IOCFACTS_FLAGS_PERSONALITY_RAID_DDR (0x00000002)
/**** Defines for the IOThrottleDataLength field ****/
#define MPI3_IOCFACTS_IO_THROTTLE_DATA_LENGTH_NOT_REQUIRED (0x0000)
#define MPI3_IOCFACTS_IO_THROTTLE_DATA_LENGTH_NOT_REQUIRED (0x0000)
/**** Defines for the IOThrottleDataLength field ****/
#define MPI3_IOCFACTS_MAX_IO_THROTTLE_GROUP_NOT_REQUIRED (0x0000)
/**** Defines for the MaxIOThrottleGroup field ****/
#define MPI3_IOCFACTS_MAX_IO_THROTTLE_GROUP_NOT_REQUIRED (0x0000)
/**** Defines for the DiagFdlSize field ****/
#define MPI3_IOCFACTS_DIAGFDLSIZE_NOT_SUPPORTED (0x00000000)
/**** Defines for the DiagTtySize field ****/
#define MPI3_IOCFACTS_DIAGTTYSIZE_NOT_SUPPORTED (0x00000000)
/*****************************************************************************
* Management Passthrough Request Message *
@ -440,9 +450,9 @@ typedef struct _MPI3_EVENT_NOTIFICATION_REQUEST
} MPI3_EVENT_NOTIFICATION_REQUEST, MPI3_POINTER PTR_MPI3_EVENT_NOTIFICATION_REQUEST,
Mpi3EventNotificationRequest_t, MPI3_POINTER pMpi3EventNotificationRequest_t;
/**** Defines for the SASBroadcastPrimitiveMasks field - use MPI3_EVENT_PRIMITIVE_ values ****/
/**** Defines for the SASBroadcastPrimitiveMasks field - use MPI3_EVENT_BROADCAST_PRIMITIVE_ values ****/
/**** Defines for the SASNotifyPrimitiveMasks field - use MPI3_EVENT_NOTIFY_ values ****/
/**** Defines for the SASNotifyPrimitiveMasks field - use MPI3_EVENT_NOTIFY_PRIMITIVE_ values ****/
/**** Defines for the EventMasks field - use MPI3_EVENT_ values ****/
@ -716,7 +726,7 @@ typedef struct _MPI3_EVENT_SAS_TOPO_PHY_ENTRY
{
U16 AttachedDevHandle; /* 0x00 */
U8 LinkRate; /* 0x02 */
U8 Status; /* 0x03 */
U8 PhyStatus; /* 0x03 */
} MPI3_EVENT_SAS_TOPO_PHY_ENTRY, MPI3_POINTER PTR_MPI3_EVENT_SAS_TOPO_PHY_ENTRY,
Mpi3EventSasTopoPhyEntry_t, MPI3_POINTER pMpi3EventSasTopoPhyEntry_t;

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_PCI_H
#define MPI30_PCI_H 1

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_RAID_H
#define MPI30_RAID_H 1

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_SAS_H
#define MPI30_SAS_H 1

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_TARG_H
#define MPI30_TARG_H 1
@ -191,7 +190,7 @@ typedef struct _MPI3_TARGET_ASSIST_REQUEST
U16 QueueTag; /* 0x12 */
U16 IoIndex; /* 0x14 */
U16 InitiatorConnectionTag; /* 0x16 */
U32 SkipCount; /* 0x18 */
U32 IOCUseOnly18; /* 0x18 */
U32 DataLength; /* 0x1C */
U32 PortTransferLength; /* 0x20 */
U32 PrimaryReferenceTag; /* 0x24 */
@ -206,6 +205,8 @@ typedef struct _MPI3_TARGET_ASSIST_REQUEST
#define MPI3_TARGET_ASSIST_MSGFLAGS_METASGL_VALID (0x80)
/**** Defines for the Flags field ****/
#define MPI3_TARGET_ASSIST_FLAGS_IOC_USE_ONLY_23_MASK (0x00800000)
#define MPI3_TARGET_ASSIST_FLAGS_IOC_USE_ONLY_22_MASK (0x00400000)
#define MPI3_TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER (0x00200000)
#define MPI3_TARGET_ASSIST_FLAGS_AUTO_STATUS (0x00100000)
#define MPI3_TARGET_ASSIST_FLAGS_DATADIRECTION_MASK (0x000C0000)
@ -243,6 +244,7 @@ typedef struct _MPI3_TARGET_STATUS_SEND_REQUEST
Mpi3TargetStatusSendRequest_t, MPI3_POINTER pMpi3TargetStatusSendRequest_t;
/**** Defines for the Flags field ****/
#define MPI3_TSS_FLAGS_IOC_USE_ONLY_6_MASK (0x0040)
#define MPI3_TSS_FLAGS_REPOST_CMD_BUFFER (0x0020)
#define MPI3_TSS_FLAGS_AUTO_SEND_GOOD_STATUS (0x0010)

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_TOOL_H
#define MPI30_TOOL_H 1
@ -366,6 +365,7 @@ typedef struct _MPI3_DIAG_BUFFER_POST_REQUEST
#define MPI3_DIAG_BUFFER_TYPE_FW (0x02)
#define MPI3_DIAG_BUFFER_TYPE_DRIVER (0x10)
#define MPI3_DIAG_BUFFER_TYPE_FDL (0x20)
#define MPI3_DIAG_BUFFER_TYPE_TTY (0x30)
#define MPI3_DIAG_BUFFER_MIN_PRODUCT_SPECIFIC (0xF0)
#define MPI3_DIAG_BUFFER_MAX_PRODUCT_SPECIFIC (0xFF)
@ -388,7 +388,7 @@ typedef struct _MPI3_DRIVER_BUFFER_HEADER
} MPI3_DRIVER_BUFFER_HEADER, MPI3_POINTER PTR_MPI3_DRIVER_BUFFER_HEADER,
Mpi3DriverBufferHeader_t, MPI3_POINTER pMpi3DriverBufferHeader_t;
/**** Defines for the Type field ****/
/**** Defines for the Signature field ****/
#define MPI3_DRIVER_DIAG_BUFFER_HEADER_SIGNATURE_CIRCULAR (0x43495243)
/**** Defines for the Flags field ****/

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -37,10 +37,8 @@
*
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
/*
* Version History
*
* Version History
* ---------------
*
* Date Version Description
@ -72,7 +70,11 @@
* 09-02-22 03.00.27.00 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 27.
* 10-20-22 03.00.27.01 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 27 - Interim Release 1.
* 12-02-22 03.00.28.00 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 28.
* 02-24-22 03.00.29.00 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 29.
* 02-24-23 03.00.29.00 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 29.
* 05-19-23 03.00.30.00 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 30.
* 08-18-23 03.00.30.01 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 30 - Interim Release 1.
* 11-17-23 03.00.31.00 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 31
* 02-16-24 03.00.32.00 Corresponds to Fusion-MPT MPI 3.0 Specification Rev 32
*/
#ifndef MPI30_TRANSPORT_H
#define MPI30_TRANSPORT_H 1
@ -101,7 +103,7 @@ typedef union _MPI3_VERSION_UNION
/****** Version constants for this revision ****/
#define MPI3_VERSION_MAJOR (3)
#define MPI3_VERSION_MINOR (0)
#define MPI3_VERSION_UNIT (29)
#define MPI3_VERSION_UNIT (32)
#define MPI3_VERSION_DEV (0)
/****** DevHandle definitions *****/
@ -425,15 +427,9 @@ typedef struct _MPI3_STATUS_REPLY_DESCRIPTOR
} MPI3_STATUS_REPLY_DESCRIPTOR, MPI3_POINTER PTR_MPI3_STATUS_REPLY_DESCRIPTOR,
Mpi3StatusReplyDescriptor_t, MPI3_POINTER pMpi3StatusReplyDescriptor_t;
/**** Defines for the IOCStatus field ****/
#define MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_LOGINFOAVAIL (0x8000)
#define MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_STATUS_MASK (0x7FFF)
/**** Use MPI3_IOCSTATUS_ defines for the IOCStatus field ****/
/**** Defines for the IOCLogInfo field ****/
#define MPI3_REPLY_DESCRIPT_STATUS_IOCLOGINFO_TYPE_MASK (0xF0000000)
#define MPI3_REPLY_DESCRIPT_STATUS_IOCLOGINFO_TYPE_NO_INFO (0x00000000)
#define MPI3_REPLY_DESCRIPT_STATUS_IOCLOGINFO_TYPE_SAS (0x30000000)
#define MPI3_REPLY_DESCRIPT_STATUS_IOCLOGINFO_DATA_MASK (0x0FFFFFFF)
/**** Use MPI3_IOCLOGINFO_ defines for the IOCLogInfo field ****/
/*****************************************************************************
* Union of Reply Descriptors *
@ -652,7 +648,6 @@ typedef struct _MPI3_DEFAULT_REPLY
#define MPI3_FUNCTION_MAX_PRODUCT_SPECIFIC (0xFF) /* End of the product-specific range of function codes */
/**** Defines for IOCStatus ****/
#define MPI3_IOCSTATUS_LOG_INFO_AVAIL_MASK (0x8000)
#define MPI3_IOCSTATUS_LOG_INFO_AVAILABLE (0x8000)
#define MPI3_IOCSTATUS_STATUS_MASK (0x7FFF)

View file

@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
* Copyright (c) 2016-2024, Broadcom Inc. All rights reserved.
* Support: <fbsd-storage-driver.pdl@broadcom.com>
*
* Redistribution and use in source and binary forms, with or without
@ -38,7 +38,6 @@
* Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
*
*/
#ifndef MPI30_TYPE_H
#define MPI30_TYPE_H 1

View file

@ -2268,7 +2268,7 @@ mpi3mr_display_ioc_info(struct mpi3mr_softc *sc)
printf("Capabilities=(");
if (sc->facts.ioc_capabilities &
MPI3_IOCFACTS_CAPABILITY_RAID_CAPABLE) {
MPI3_IOCFACTS_CAPABILITY_RAID_SUPPORTED) {
printf("RAID");
i++;
}
@ -3888,7 +3888,7 @@ static void mpi3mr_sastopochg_evt_th(struct mpi3mr_softc *sc,
handle = le16toh(topo_evt->PhyEntry[i].AttachedDevHandle);
if (!handle)
continue;
reason_code = topo_evt->PhyEntry[i].Status &
reason_code = topo_evt->PhyEntry[i].PhyStatus &
MPI3_EVENT_SAS_TOPO_PHY_RC_MASK;
tgtdev = mpi3mr_find_target_by_dev_handle(sc->cam_sc, handle);
switch (reason_code) {
@ -4279,10 +4279,9 @@ static void mpi3mr_process_admin_reply_desc(struct mpi3mr_softc *sc,
status_desc = (Mpi3StatusReplyDescriptor_t *)reply_desc;
host_tag = status_desc->HostTag;
ioc_status = status_desc->IOCStatus;
if (ioc_status &
MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_LOGINFOAVAIL)
if (ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
ioc_loginfo = status_desc->IOCLogInfo;
ioc_status &= MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_STATUS_MASK;
ioc_status &= MPI3_IOCSTATUS_STATUS_MASK;
break;
case MPI3_REPLY_DESCRIPT_FLAGS_TYPE_ADDRESS_REPLY:
addr_desc = (Mpi3AddressReplyDescriptor_t *)reply_desc;
@ -4292,10 +4291,9 @@ static void mpi3mr_process_admin_reply_desc(struct mpi3mr_softc *sc,
goto out;
host_tag = def_reply->HostTag;
ioc_status = def_reply->IOCStatus;
if (ioc_status &
MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_LOGINFOAVAIL)
if (ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
ioc_loginfo = def_reply->IOCLogInfo;
ioc_status &= MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_STATUS_MASK;
ioc_status &= MPI3_IOCSTATUS_STATUS_MASK;
if (def_reply->Function == MPI3_FUNCTION_SCSI_IO) {
scsi_reply = (Mpi3SCSIIOReply_t *)def_reply;
sense_buf = mpi3mr_get_sensebuf_virt_addr(sc,
@ -4496,10 +4494,9 @@ void mpi3mr_process_op_reply_desc(struct mpi3mr_softc *sc,
status_desc = (Mpi3StatusReplyDescriptor_t *)reply_desc;
host_tag = status_desc->HostTag;
ioc_status = status_desc->IOCStatus;
if (ioc_status &
MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_LOGINFOAVAIL)
if (ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
ioc_loginfo = status_desc->IOCLogInfo;
ioc_status &= MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_STATUS_MASK;
ioc_status &= MPI3_IOCSTATUS_STATUS_MASK;
break;
case MPI3_REPLY_DESCRIPT_FLAGS_TYPE_ADDRESS_REPLY:
addr_desc = (Mpi3AddressReplyDescriptor_t *)reply_desc;
@ -4523,10 +4520,9 @@ void mpi3mr_process_op_reply_desc(struct mpi3mr_softc *sc,
resp_data = scsi_reply->ResponseData;
sense_buf = mpi3mr_get_sensebuf_virt_addr(sc,
scsi_reply->SenseDataBufferAddress);
if (ioc_status &
MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_LOGINFOAVAIL)
if (ioc_status & MPI3_IOCSTATUS_STATUS_MASK)
ioc_loginfo = scsi_reply->IOCLogInfo;
ioc_status &= MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_STATUS_MASK;
ioc_status &= MPI3_IOCSTATUS_STATUS_MASK;
if (sense_state == MPI3_SCSI_STATE_SENSE_BUFF_Q_EMPTY)
mpi3mr_dprint(sc, MPI3MR_ERROR, "Ran out of sense buffers\n");
@ -4728,7 +4724,7 @@ void mpi3mr_process_op_reply_desc(struct mpi3mr_softc *sc,
csio->resid = cm->length - le32toh(xfer_count);
case MPI3_IOCSTATUS_SCSI_RECOVERED_ERROR:
case MPI3_IOCSTATUS_SUCCESS:
if ((scsi_reply->IOCStatus & MPI3_REPLY_DESCRIPT_STATUS_IOCSTATUS_STATUS_MASK) ==
if ((scsi_reply->IOCStatus & MPI3_IOCSTATUS_STATUS_MASK) ==
MPI3_IOCSTATUS_SCSI_RECOVERED_ERROR)
mpi3mr_dprint(sc, MPI3MR_XINFO, "func: %s line: %d recovered error\n", __func__, __LINE__);

View file

@ -1560,7 +1560,7 @@ mpi3mr_sastopochg_evt_debug(struct mpi3mr_softc *sc,
if (!handle)
continue;
phy_number = event_data->StartPhyNum + i;
reason_code = event_data->PhyEntry[i].Status &
reason_code = event_data->PhyEntry[i].PhyStatus &
MPI3_EVENT_SAS_TOPO_PHY_RC_MASK;
switch (reason_code) {
case MPI3_EVENT_SAS_TOPO_PHY_RC_TARG_NOT_RESPONDING:
@ -1613,7 +1613,7 @@ mpi3mr_process_sastopochg_evt(struct mpi3mr_softc *sc, struct mpi3mr_fw_event_wo
continue;
target->link_rate = link_rate;
reason_code = event_data->PhyEntry[i].Status &
reason_code = event_data->PhyEntry[i].PhyStatus &
MPI3_EVENT_SAS_TOPO_PHY_RC_MASK;
switch (reason_code) {