/*******************************************************************************
*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
*
*Redistribution and use in source and binary forms, with or without modification, are permitted provided
*that the following conditions are met:
*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
*following disclaimer.
*2. Redistributions in binary form must reproduce the above copyright notice,
*this list of conditions and the following disclaimer in the documentation and/or other materials provided
*with the distribution.
*
*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
*
* $FreeBSD$
*
********************************************************************************/
/*******************************************************************************/
/*! \file sa_err.h
* \brief The file defines the error code constants, defined by LL API
*
*
*/
/******************************************************************************/
#ifndef __SA_ERR_H__
#define __SA_ERR_H__
/************************************************************************************
* *
* Error Code Constants defined for LL Layer starts *
* *
************************************************************************************/
/***********************************************************************************
* SSP/SMP/SATA IO Completion Status values
***********************************************************************************/
#define OSSA_IO_SUCCESS 0x00 /**< IO completes successfully */
#define OSSA_IO_ABORTED 0x01 /**< IO aborted */
#define OSSA_IO_OVERFLOW 0x02 /**< IO overflowed (SSP) */
#define OSSA_IO_UNDERFLOW 0x03 /**< IO underflowed (SSP) */
#define OSSA_IO_FAILED 0x04 /**< IO failed */
#define OSSA_IO_ABORT_RESET 0x05 /**< IO abort because of reset */
#define OSSA_IO_NOT_VALID 0x06 /**< IO not valid */
#define OSSA_IO_NO_DEVICE 0x07 /**< IO is for non-existing device */
#define OSSA_IO_ILLEGAL_PARAMETER 0x08 /**< IO is not supported (SSP) */
/* The following two error codes 0x09 and 0x0A are not using */
#define OSSA_IO_LINK_FAILURE 0x09 /**< IO failed because of link failure (SMP) */
#define OSSA_IO_PROG_ERROR 0x0A /**< IO failed because of program error (SMP) */
#define OSSA_IO_DIF_IN_ERROR 0x0B /**< IO failed inbound DIF error (SSP) */
#define OSSA_IO_DIF_OUT_ERROR 0x0C /**< IO failed outbound DIF error (SSP) */
#define OSSA_IO_ERROR_HW_TIMEOUT 0x0D /**< SMP request/response failed due to HW timeout (SMP) */
#define OSSA_IO_XFER_ERROR_BREAK 0x0E /**< IO aborted due to BREAK during connection */
#define OSSA_IO_XFER_ERROR_PHY_NOT_READY 0x0F /**< IO aborted due to PHY NOT READY during connection*/
#define OSSA_IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED 0x10 /**< Open connection error */
#define OSSA_IO_OPEN_CNX_ERROR_ZONE_VIOLATION 0x11 /**< Open connection error */
#define OSSA_IO_OPEN_CNX_ERROR_BREAK 0x12 /**< Open connection error */
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS 0x13 /**< Open connection error */
#define OSSA_IO_OPEN_CNX_ERROR_BAD_DESTINATION 0x14 /**< Open connection error */
#define OSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED 0x15 /**< Open connection error */
#define OSSA_IO_OPEN_CNX_ERROR_STP_RESOURCES_BUSY 0x16 /**< Open connection error */
#define OSSA_IO_OPEN_CNX_ERROR_WRONG_DESTINATION 0x17 /**< Open connection error */
/* This error code 0x18 is not used on SPCv */
#define OSSA_IO_OPEN_CNX_ERROR_UNKNOWN_ERROR 0x18 /**< Open connection error */
#define OSSA_IO_XFER_ERROR_NAK_RECEIVED 0x19 /**< IO aborted due to transfer error with data NAK received*/
#define OSSA_IO_XFER_ERROR_ACK_NAK_TIMEOUT 0x1A /**< IO aborted due to transfer error with data ACK/NAK timeout*/
#define OSSA_IO_XFER_ERROR_PEER_ABORTED 0x1B
#define OSSA_IO_XFER_ERROR_RX_FRAME 0x1C
#define OSSA_IO_XFER_ERROR_DMA 0x1D
#define OSSA_IO_XFER_ERROR_CREDIT_TIMEOUT 0x1E /**< IO aborted due to CREDIT TIMEOUT during data transfer*/
#define OSSA_IO_XFER_ERROR_SATA_LINK_TIMEOUT 0x1F
#define OSSA_IO_XFER_ERROR_SATA 0x20
/* This error code 0x22 is not used on SPCv */
#define OSSA_IO_XFER_ERROR_ABORTED_DUE_TO_SRST 0x22
#define OSSA_IO_XFER_ERROR_REJECTED_NCQ_MODE 0x21
#define OSSA_IO_XFER_ERROR_ABORTED_NCQ_MODE 0x23
#define OSSA_IO_XFER_OPEN_RETRY_TIMEOUT 0x24 /**< IO OPEN_RETRY_TIMEOUT */
/* This error code 0x25 is not used on SPCv */
#define OSSA_IO_XFER_SMP_RESP_CONNECTION_ERROR 0x25
#define OSSA_IO_XFER_ERROR_UNEXPECTED_PHASE 0x26
#define OSSA_IO_XFER_ERROR_XFER_RDY_OVERRUN 0x27
#define OSSA_IO_XFER_ERROR_XFER_RDY_NOT_EXPECTED 0x28
#define OSSA_IO_XFER_ERROR_CMD_ISSUE_ACK_NAK_TIMEOUT 0x30
/* The following error code 0x31 and 0x32 are not using (obsolete) */
#define OSSA_IO_XFER_ERROR_CMD_ISSUE_BREAK_BEFORE_ACK_NAK 0x31
#define OSSA_IO_XFER_ERROR_CMD_ISSUE_PHY_DOWN_BEFORE_ACK_NAK 0x32
#define OSSA_IO_XFER_ERROR_OFFSET_MISMATCH 0x34
#define OSSA_IO_XFER_ERROR_XFER_ZERO_DATA_LEN 0x35
#define OSSA_IO_XFER_CMD_FRAME_ISSUED 0x36
#define OSSA_IO_ERROR_INTERNAL_SMP_RESOURCE 0x37
#define OSSA_IO_PORT_IN_RESET 0x38
#define OSSA_IO_DS_NON_OPERATIONAL 0x39
#define OSSA_IO_DS_IN_RECOVERY 0x3A
#define OSSA_IO_TM_TAG_NOT_FOUND 0x3B
#define OSSA_IO_XFER_PIO_SETUP_ERROR 0x3C
#define OSSA_IO_SSP_EXT_IU_ZERO_LEN_ERROR 0x3D
#define OSSA_IO_DS_IN_ERROR 0x3E
#define OSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY 0x3F
#define OSSA_IO_ABORT_IN_PROGRESS 0x40
#define OSSA_IO_ABORT_DELAYED 0x41
#define OSSA_IO_INVALID_LENGTH 0x42
#define OSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY_ALT 0x43
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_RETRY_BACKOFF_THRESHOLD_REACHED 0x44
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_TMO 0x45
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_NO_DEST 0x46
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_COLLIDE 0x47
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_PATHWAY_BLOCKED 0x48
#define OSSA_IO_DS_INVALID 0x49
#define OSSA_IO_XFER_READ_COMPL_ERR 0x0050
/* WARNING: the value is not contiguous from here */
#define OSSA_IO_XFER_ERR_LAST_PIO_DATAIN_CRC_ERR 0x0052
#define OSSA_IO_XFER_ERROR_DMA_ACTIVATE_TIMEOUT 0x0053
#define OSSA_IO_XFR_ERROR_INTERNAL_CRC_ERROR 0x0054
#define OSSA_MPI_IO_RQE_BUSY_FULL 0x0055
#define OSSA_IO_XFER_ERR_EOB_DATA_OVERRUN 0x0056 /* This status is only for Hitach FW */
#define OSSA_IO_XFR_ERROR_INVALID_SSP_RSP_FRAME 0x0057
#define OSSA_IO_OPEN_CNX_ERROR_OPEN_PREEMPTED 0x0058
#define OSSA_MPI_ERR_IO_RESOURCE_UNAVAILABLE 0x1004
/*encrypt saSetOperator() response status */
#define OSSA_MPI_ENC_ERR_CONTROLLER_NOT_IDLE 0x1005
#define OSSA_MPI_ENC_NVM_MEM_ACCESS_ERR 0x100B
#ifdef SA_TESTBASE_EXTRA
/* TestBase */
#define OSSA_IO_HOST_BST_INVALID 0x1005
#endif /* SA_TESTBASE_EXTRA */
#define OSSA_MPI_ERR_OFFLOAD_RESOURCE_UNAVAILABLE 0x1012
#define OSSA_MPI_ERR_OFFLOAD_DIF_OR_ENC_NOT_ENABLED 0x1013
#define OSSA_MPI_ERR_ATAPI_DEVICE_BUSY 0x1024
/* Specifies the status of the PHY_START command */
#define OSSA_MPI_IO_SUCCESS 0x00000000 /* PhyStart operation completed successfully */
/* Specifies the status of the PHY_STOP command */
#define OSSA_MPI_ERR_DEVICES_ATTACHED 0x00001046 /* All the devices in a port need to be deregistered if the PHY_STOP is for the last phy. */
#define OSSA_MPI_ERR_INVALID_PHY_ID 0x00001061 /* identifier specified in the PHY_START command is invalid i.e out of supported range for this product. */
#define OSSA_MPI_ERR_PHY_ALREADY_STARTED 0x00001063 /* An attempt to start a phy which is already started. */
#define OSSA_MPI_ERR_PHY_NOT_STARTED 0x00001064 /* An attempt to stop a phy which is not started */
#define OSSA_MPI_ERR_PHY_SUBOP_NOT_SUPPORTED 0x00001065 /* An attempt to use a sub operation that is not supported */
#define OSSA_MPI_ERR_INVALID_ANALOG_TBL_IDX 0x00001067 /* The Analog Setup Table Index used in the PHY_START command in invalid. */
#define OSSA_MPI_ERR_PHY_PROFILE_PAGE_NOT_SUPPORTED 0x00001068 /* Unsupported profile page code specified in the GET_PHY_PROFILE Command */
#define OSSA_MPI_ERR_PHY_PROFILE_PAGE_NOT_FOUND 0x00001069 /* Unsupported profile page code specified in the GET_PHY_PROFILE Command */
#define OSSA_IO_XFR_ERROR_DEK_KEY_CACHE_MISS 0x2040
/*
An encryption IO request failed due to DEK Key Tag mismatch.
The key tag supplied in the encryption IOMB does not match with the Key Tag in the referenced DEK Entry.
*/
#define OSSA_IO_XFR_ERROR_DEK_KEY_TAG_MISMATCH 0x2041
#define OSSA_IO_XFR_ERROR_CIPHER_MODE_INVALID 0x2042
/*
An encryption I/O request failed
because the initial value (IV) in the unwrapped DEK blob didn't match the IV used to unwrap it.
*/
#define OSSA_IO_XFR_ERROR_DEK_IV_MISMATCH 0x2043
/* An encryption I/O request failed due to an internal RAM ECC or interface error while unwrapping the DEK. */
#define OSSA_IO_XFR_ERROR_DEK_RAM_INTERFACE_ERROR 0x2044
/* An encryption I/O request failed due to an internal RAM ECC or interface error while unwrapping the DEK. */
#define OSSA_IO_XFR_ERROR_INTERNAL_RAM 0x2045
/*
An encryption I/O request failed
because the DEK index specified in the I/O was outside the bounds of thetotal number of entries in the host DEK table.
*/
#define OSSA_IO_XFR_ERROR_DEK_INDEX_OUT_OF_BOUNDS 0x2046
#define OSSA_IO_XFR_ERROR_DEK_ILLEGAL_TABLE 0x2047
#define OSSA_MPI_ENC_ERR_UNSUPPORTED_OPTION 0x2080
#define OSSA_MPI_ENC_ERR_ID_TRANSFER_FAILURE 0x2081
#define OSSA_MPI_ENC_OPERATOR_AUTH_FAILURE 0x2090
#define OSSA_MPI_ENC_OPERATOR_OPERATOR_ALREADY_LOGGED_IN 0x2091
#define OSSA_MPI_ENC_OPERATOR_ILLEGAL_PARAMETER 0x2092
/* define DIF IO response error status code */
#define OSSA_IO_XFR_ERROR_DIF_MISMATCH 0x3000
#define OSSA_IO_XFR_ERROR_DIF_APPLICATION_TAG_MISMATCH 0x3001
#define OSSA_IO_XFR_ERROR_DIF_REFERENCE_TAG_MISMATCH 0x3002
#define OSSA_IO_XFR_ERROR_DIF_CRC_MISMATCH 0x3003
#define OSSA_IO_XFER_ERROR_DIF_INTERNAL_ERROR 0x3004
#define OSSA_MPI_ERR_DIF_IS_NOT_ENABLED /* Indicates that saPCIeDiagExecute() is
* called with DIF but DIF is not enabled.
*/
/* define operator management response status and error qualifier code */
#define OPR_MGMT_OP_NOT_SUPPORTED 0x2060
#define OPR_MGMT_MPI_ENC_ERR_OPR_PARAM_ILLEGAL 0x2061
#define OPR_MGMT_MPI_ENC_ERR_OPR_ID_NOT_FOUND 0x2062
#define OPR_MGMT_MPI_ENC_ERR_OPR_ROLE_NOT_MATCH 0x2063
#define OPR_MGMT_MPI_ENC_ERR_OPR_MAX_NUM_EXCEEDED 0x2064
#define OPR_MGMT_MPI_ENC_ERR_KEK_UNWRAP_FAIL 0x2022
#define OPR_MGMT_MPI_ENC_ERR_NVRAM_OPERATION_FAILURE 0x2023
/* When Status is 0x2061 */
#define OPR_MGMT_ERR_QLFR_ILLEGAL_AUTHENTICATIONKEK_INDEX 0x1
#define OPR_MGMT_ERR_QLFR_ILLEGAL_OPERATOR 0x2
#define OPR_MGMT_ERR_QLFR_ILLEGAL_KEK_FORMAT 0x3
#define OPR_MGMT_ERR_QLFR_WRONG_ROLE 0x4
/* When status is 0x2090 */
/* invalid certificate: the certificate can not be unwrapped successfully by existing operators's KEKs */
#define OPR_SET_ERR_QLFR_INVALID_CERT 0x01
/* role mismatch: the role from the certificate doesn't match the one inside the controller. */
#define OPR_SET_ERR_QLFR_ROLE_MISMATCH 0x02
/* ID mismatch: the ID string from the certificate doesn't match the one inside the controller. */
#define OPR_SET_ERR_QLFR_ID_MISMATCH 0x03
/* When status is 0x2092 */
/* invalid OPRIDX */
#define OPR_SET_ERR_QLFR_INVALID_OPRIDX 0x04
/* invalid access type */
#define OPR_SET_ERR_QLFR_INVALID_ACCESS_TYPE 0x05
/* WARNING: This error code must always be the last number.
* If you add error code, modify this code also
* It is used as an index
*/
/* SAS Reconfiguration error */
#define OSSA_CONTROLLER_NOT_IDLE 0x1
#define OSSA_INVALID_CONFIG_PARAM 0x2
/************************************************************************************
* *
* Constants defined for OS Layer ends *
* *
************************************************************************************/
#endif /*__SA_ERR_H__ */