You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge ../scsi-misc-2.6
Conflicts: drivers/scsi/nsp32.c drivers/scsi/pcmcia/nsp_cs.c Removal of randomness flag conflicts with SA_ -> IRQF_ global replacement. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
@@ -1,4 +1,20 @@
|
|||||||
|
|
||||||
|
1 Release Date : Sun May 14 22:49:52 PDT 2006 - Sumant Patro <Sumant.Patro@lsil.com>
|
||||||
|
2 Current Version : 00.00.03.01
|
||||||
|
3 Older Version : 00.00.02.04
|
||||||
|
|
||||||
|
i. Added support for ZCR controller.
|
||||||
|
|
||||||
|
New device id 0x413 added.
|
||||||
|
|
||||||
|
ii. Bug fix : Disable controller interrupt before firing INIT cmd to FW.
|
||||||
|
|
||||||
|
Interrupt is enabled after required initialization is over.
|
||||||
|
This is done to ensure that driver is ready to handle interrupts when
|
||||||
|
it is generated by the controller.
|
||||||
|
|
||||||
|
-Sumant Patro <Sumant.Patro@lsil.com>
|
||||||
|
|
||||||
1 Release Date : Wed Feb 03 14:31:44 PST 2006 - Sumant Patro <Sumant.Patro@lsil.com>
|
1 Release Date : Wed Feb 03 14:31:44 PST 2006 - Sumant Patro <Sumant.Patro@lsil.com>
|
||||||
2 Current Version : 00.00.02.04
|
2 Current Version : 00.00.02.04
|
||||||
3 Older Version : 00.00.02.04
|
3 Older Version : 00.00.02.04
|
||||||
|
|||||||
@@ -437,159 +437,50 @@ iscsi_iser_session_create(struct iscsi_transport *iscsit,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
iscsi_iser_conn_set_param(struct iscsi_cls_conn *cls_conn,
|
iscsi_iser_set_param(struct iscsi_cls_conn *cls_conn,
|
||||||
enum iscsi_param param, uint32_t value)
|
enum iscsi_param param, char *buf, int buflen)
|
||||||
{
|
{
|
||||||
struct iscsi_conn *conn = cls_conn->dd_data;
|
int value;
|
||||||
struct iscsi_session *session = conn->session;
|
|
||||||
|
|
||||||
spin_lock_bh(&session->lock);
|
|
||||||
if (conn->c_stage != ISCSI_CONN_INITIAL_STAGE &&
|
|
||||||
conn->stop_stage != STOP_CONN_RECOVER) {
|
|
||||||
printk(KERN_ERR "iscsi_iser: can not change parameter [%d]\n",
|
|
||||||
param);
|
|
||||||
spin_unlock_bh(&session->lock);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
spin_unlock_bh(&session->lock);
|
|
||||||
|
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case ISCSI_PARAM_MAX_RECV_DLENGTH:
|
case ISCSI_PARAM_MAX_RECV_DLENGTH:
|
||||||
/* TBD */
|
/* TBD */
|
||||||
break;
|
break;
|
||||||
case ISCSI_PARAM_MAX_XMIT_DLENGTH:
|
|
||||||
conn->max_xmit_dlength = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_HDRDGST_EN:
|
case ISCSI_PARAM_HDRDGST_EN:
|
||||||
|
sscanf(buf, "%d", &value);
|
||||||
if (value) {
|
if (value) {
|
||||||
printk(KERN_ERR "DataDigest wasn't negotiated to None");
|
printk(KERN_ERR "DataDigest wasn't negotiated to None");
|
||||||
return -EPROTO;
|
return -EPROTO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ISCSI_PARAM_DATADGST_EN:
|
case ISCSI_PARAM_DATADGST_EN:
|
||||||
|
sscanf(buf, "%d", &value);
|
||||||
if (value) {
|
if (value) {
|
||||||
printk(KERN_ERR "DataDigest wasn't negotiated to None");
|
printk(KERN_ERR "DataDigest wasn't negotiated to None");
|
||||||
return -EPROTO;
|
return -EPROTO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ISCSI_PARAM_INITIAL_R2T_EN:
|
|
||||||
session->initial_r2t_en = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_IMM_DATA_EN:
|
|
||||||
session->imm_data_en = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_FIRST_BURST:
|
|
||||||
session->first_burst = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_MAX_BURST:
|
|
||||||
session->max_burst = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_PDU_INORDER_EN:
|
|
||||||
session->pdu_inorder_en = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_DATASEQ_INORDER_EN:
|
|
||||||
session->dataseq_inorder_en = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_ERL:
|
|
||||||
session->erl = value;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_IFMARKER_EN:
|
case ISCSI_PARAM_IFMARKER_EN:
|
||||||
|
sscanf(buf, "%d", &value);
|
||||||
if (value) {
|
if (value) {
|
||||||
printk(KERN_ERR "IFMarker wasn't negotiated to No");
|
printk(KERN_ERR "IFMarker wasn't negotiated to No");
|
||||||
return -EPROTO;
|
return -EPROTO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ISCSI_PARAM_OFMARKER_EN:
|
case ISCSI_PARAM_OFMARKER_EN:
|
||||||
|
sscanf(buf, "%d", &value);
|
||||||
if (value) {
|
if (value) {
|
||||||
printk(KERN_ERR "OFMarker wasn't negotiated to No");
|
printk(KERN_ERR "OFMarker wasn't negotiated to No");
|
||||||
return -EPROTO;
|
return -EPROTO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
return iscsi_set_param(cls_conn, param, buf, buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
iscsi_iser_session_get_param(struct iscsi_cls_session *cls_session,
|
|
||||||
enum iscsi_param param, uint32_t *value)
|
|
||||||
{
|
|
||||||
struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
|
|
||||||
struct iscsi_session *session = iscsi_hostdata(shost->hostdata);
|
|
||||||
|
|
||||||
switch (param) {
|
|
||||||
case ISCSI_PARAM_INITIAL_R2T_EN:
|
|
||||||
*value = session->initial_r2t_en;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_MAX_R2T:
|
|
||||||
*value = session->max_r2t;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_IMM_DATA_EN:
|
|
||||||
*value = session->imm_data_en;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_FIRST_BURST:
|
|
||||||
*value = session->first_burst;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_MAX_BURST:
|
|
||||||
*value = session->max_burst;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_PDU_INORDER_EN:
|
|
||||||
*value = session->pdu_inorder_en;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_DATASEQ_INORDER_EN:
|
|
||||||
*value = session->dataseq_inorder_en;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_ERL:
|
|
||||||
*value = session->erl;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_IFMARKER_EN:
|
|
||||||
*value = 0;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_OFMARKER_EN:
|
|
||||||
*value = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return ISCSI_ERR_PARAM_NOT_FOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
iscsi_iser_conn_get_param(struct iscsi_cls_conn *cls_conn,
|
|
||||||
enum iscsi_param param, uint32_t *value)
|
|
||||||
{
|
|
||||||
struct iscsi_conn *conn = cls_conn->dd_data;
|
|
||||||
|
|
||||||
switch(param) {
|
|
||||||
case ISCSI_PARAM_MAX_RECV_DLENGTH:
|
|
||||||
*value = conn->max_recv_dlength;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_MAX_XMIT_DLENGTH:
|
|
||||||
*value = conn->max_xmit_dlength;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_HDRDGST_EN:
|
|
||||||
*value = 0;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_DATADGST_EN:
|
|
||||||
*value = 0;
|
|
||||||
break;
|
|
||||||
/*case ISCSI_PARAM_TARGET_RECV_DLENGTH:
|
|
||||||
*value = conn->target_recv_dlength;
|
|
||||||
break;
|
|
||||||
case ISCSI_PARAM_INITIATOR_RECV_DLENGTH:
|
|
||||||
*value = conn->initiator_recv_dlength;
|
|
||||||
break;*/
|
|
||||||
default:
|
|
||||||
return ISCSI_ERR_PARAM_NOT_FOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iscsi_iser_conn_get_stats(struct iscsi_cls_conn *cls_conn, struct iscsi_stats *stats)
|
iscsi_iser_conn_get_stats(struct iscsi_cls_conn *cls_conn, struct iscsi_stats *stats)
|
||||||
{
|
{
|
||||||
@@ -701,7 +592,12 @@ static struct iscsi_transport iscsi_iser_transport = {
|
|||||||
ISCSI_FIRST_BURST |
|
ISCSI_FIRST_BURST |
|
||||||
ISCSI_MAX_BURST |
|
ISCSI_MAX_BURST |
|
||||||
ISCSI_PDU_INORDER_EN |
|
ISCSI_PDU_INORDER_EN |
|
||||||
ISCSI_DATASEQ_INORDER_EN,
|
ISCSI_DATASEQ_INORDER_EN |
|
||||||
|
ISCSI_EXP_STATSN |
|
||||||
|
ISCSI_PERSISTENT_PORT |
|
||||||
|
ISCSI_PERSISTENT_ADDRESS |
|
||||||
|
ISCSI_TARGET_NAME |
|
||||||
|
ISCSI_TPGT,
|
||||||
.host_template = &iscsi_iser_sht,
|
.host_template = &iscsi_iser_sht,
|
||||||
.conndata_size = sizeof(struct iscsi_conn),
|
.conndata_size = sizeof(struct iscsi_conn),
|
||||||
.max_lun = ISCSI_ISER_MAX_LUN,
|
.max_lun = ISCSI_ISER_MAX_LUN,
|
||||||
@@ -713,9 +609,9 @@ static struct iscsi_transport iscsi_iser_transport = {
|
|||||||
.create_conn = iscsi_iser_conn_create,
|
.create_conn = iscsi_iser_conn_create,
|
||||||
.bind_conn = iscsi_iser_conn_bind,
|
.bind_conn = iscsi_iser_conn_bind,
|
||||||
.destroy_conn = iscsi_iser_conn_destroy,
|
.destroy_conn = iscsi_iser_conn_destroy,
|
||||||
.set_param = iscsi_iser_conn_set_param,
|
.set_param = iscsi_iser_set_param,
|
||||||
.get_conn_param = iscsi_iser_conn_get_param,
|
.get_conn_param = iscsi_conn_get_param,
|
||||||
.get_session_param = iscsi_iser_session_get_param,
|
.get_session_param = iscsi_session_get_param,
|
||||||
.start_conn = iscsi_iser_conn_start,
|
.start_conn = iscsi_iser_conn_start,
|
||||||
.stop_conn = iscsi_conn_stop,
|
.stop_conn = iscsi_conn_stop,
|
||||||
/* these are called as part of conn recovery */
|
/* these are called as part of conn recovery */
|
||||||
|
|||||||
@@ -33,6 +33,11 @@
|
|||||||
# For mptfc:
|
# For mptfc:
|
||||||
#CFLAGS_mptfc.o += -DMPT_DEBUG_FC
|
#CFLAGS_mptfc.o += -DMPT_DEBUG_FC
|
||||||
|
|
||||||
|
# For mptsas:
|
||||||
|
#CFLAGS_mptsas.o += -DMPT_DEBUG_SAS
|
||||||
|
#CFLAGS_mptsas.o += -DMPT_DEBUG_SAS_WIDE
|
||||||
|
|
||||||
|
|
||||||
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} LSI_LOGIC
|
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} LSI_LOGIC
|
||||||
|
|
||||||
obj-$(CONFIG_FUSION_SPI) += mptbase.o mptscsih.o mptspi.o
|
obj-$(CONFIG_FUSION_SPI) += mptbase.o mptscsih.o mptspi.o
|
||||||
|
|||||||
@@ -1,89 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2000-2001 LSI Logic Corporation. All rights reserved.
|
|
||||||
*
|
|
||||||
* NAME: fc_log.h
|
|
||||||
* SUMMARY: MPI IocLogInfo definitions for the SYMFC9xx chips
|
|
||||||
* DESCRIPTION: Contains the enumerated list of values that may be returned
|
|
||||||
* in the IOCLogInfo field of a MPI Default Reply Message.
|
|
||||||
*
|
|
||||||
* CREATION DATE: 6/02/2000
|
|
||||||
* ID: $Id: fc_log.h,v 4.6 2001/07/26 14:41:33 sschremm Exp $
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MpiIocLogInfo_t enum
|
|
||||||
*
|
|
||||||
* These 32 bit values are used in the IOCLogInfo field of the MPI reply
|
|
||||||
* messages.
|
|
||||||
* The value is 0xabcccccc where
|
|
||||||
* a = The type of log info as per the MPI spec. Since these codes are
|
|
||||||
* all for Fibre Channel this value will always be 2.
|
|
||||||
* b = Specifies a subclass of the firmware where
|
|
||||||
* 0 = FCP Initiator
|
|
||||||
* 1 = FCP Target
|
|
||||||
* 2 = LAN
|
|
||||||
* 3 = MPI Message Layer
|
|
||||||
* 4 = FC Link
|
|
||||||
* 5 = Context Manager
|
|
||||||
* 6 = Invalid Field Offset
|
|
||||||
* 7 = State Change Info
|
|
||||||
* all others are reserved for future use
|
|
||||||
* c = A specific value within the subclass.
|
|
||||||
*
|
|
||||||
* NOTE: Any new values should be added to the end of each subclass so that the
|
|
||||||
* codes remain consistent across firmware releases.
|
|
||||||
*/
|
|
||||||
typedef enum _MpiIocLogInfoFc
|
|
||||||
{
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_BASE = 0x20000000,
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_OUT_OF_ORDER_FRAME = 0x20000001, /* received an out of order frame - unsupported */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_BAD_START_OF_FRAME = 0x20000002, /* Bad Rx Frame, bad start of frame primative */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_BAD_END_OF_FRAME = 0x20000003, /* Bad Rx Frame, bad end of frame primative */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_OVER_RUN = 0x20000004, /* Bad Rx Frame, overrun */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_RX_OTHER = 0x20000005, /* Other errors caught by IOC which require retries */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_SUBPROC_DEAD = 0x20000006, /* Main processor could not initialize sub-processor */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_RX_OVERRUN = 0x20000007, /* Scatter Gather overrun */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_RX_BAD_STATUS = 0x20000008, /* Receiver detected context mismatch via invalid header */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_RX_UNEXPECTED_FRAME= 0x20000009, /* CtxMgr detected unsupported frame type */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_LINK_FAILURE = 0x2000000A, /* Link failure occurred */
|
|
||||||
MPI_IOCLOGINFO_FC_INIT_ERROR_TX_TIMEOUT = 0x2000000B, /* Transmitter timeout error */
|
|
||||||
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_BASE = 0x21000000,
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_NO_PDISC = 0x21000001, /* not sent because we are waiting for a PDISC from the initiator */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_NO_LOGIN = 0x21000002, /* not sent because we are not logged in to the remote node */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_DOAR_KILLED_BY_LIP = 0x21000003, /* Data Out, Auto Response, not sent due to a LIP */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_DIAR_KILLED_BY_LIP = 0x21000004, /* Data In, Auto Response, not sent due to a LIP */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_DIAR_MISSING_DATA = 0x21000005, /* Data In, Auto Response, missing data frames */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_DONR_KILLED_BY_LIP = 0x21000006, /* Data Out, No Response, not sent due to a LIP */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_WRSP_KILLED_BY_LIP = 0x21000007, /* Auto-response after a write not sent due to a LIP */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_DINR_KILLED_BY_LIP = 0x21000008, /* Data In, No Response, not completed due to a LIP */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_DINR_MISSING_DATA = 0x21000009, /* Data In, No Response, missing data frames */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_MRSP_KILLED_BY_LIP = 0x2100000a, /* Manual Response not sent due to a LIP */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_NO_CLASS_3 = 0x2100000b, /* not sent because remote node does not support Class 3 */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_LOGIN_NOT_VALID = 0x2100000c, /* not sent because login to remote node not validated */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_FROM_OUTBOUND = 0x2100000e, /* cleared from the outbound queue after a logout */
|
|
||||||
MPI_IOCLOGINFO_FC_TARGET_WAITING_FOR_DATA_IN = 0x2100000f, /* cleared waiting for data after a logout */
|
|
||||||
|
|
||||||
MPI_IOCLOGINFO_FC_LAN_BASE = 0x22000000,
|
|
||||||
MPI_IOCLOGINFO_FC_LAN_TRANS_SGL_MISSING = 0x22000001, /* Transaction Context Sgl Missing */
|
|
||||||
MPI_IOCLOGINFO_FC_LAN_TRANS_WRONG_PLACE = 0x22000002, /* Transaction Context found before an EOB */
|
|
||||||
MPI_IOCLOGINFO_FC_LAN_TRANS_RES_BITS_SET = 0x22000003, /* Transaction Context value has reserved bits set */
|
|
||||||
MPI_IOCLOGINFO_FC_LAN_WRONG_SGL_FLAG = 0x22000004, /* Invalid SGL Flags */
|
|
||||||
|
|
||||||
MPI_IOCLOGINFO_FC_MSG_BASE = 0x23000000,
|
|
||||||
|
|
||||||
MPI_IOCLOGINFO_FC_LINK_BASE = 0x24000000,
|
|
||||||
MPI_IOCLOGINFO_FC_LINK_LOOP_INIT_TIMEOUT = 0x24000001, /* Loop initialization timed out */
|
|
||||||
MPI_IOCLOGINFO_FC_LINK_ALREADY_INITIALIZED = 0x24000002, /* Another system controller already initialized the loop */
|
|
||||||
MPI_IOCLOGINFO_FC_LINK_LINK_NOT_ESTABLISHED = 0x24000003, /* Not synchronized to signal or still negotiating (possible cable problem) */
|
|
||||||
MPI_IOCLOGINFO_FC_LINK_CRC_ERROR = 0x24000004, /* CRC check detected error on received frame */
|
|
||||||
|
|
||||||
MPI_IOCLOGINFO_FC_CTX_BASE = 0x25000000,
|
|
||||||
|
|
||||||
MPI_IOCLOGINFO_FC_INVALID_FIELD_BYTE_OFFSET = 0x26000000, /* The lower 24 bits give the byte offset of the field in the request message that is invalid */
|
|
||||||
MPI_IOCLOGINFO_FC_INVALID_FIELD_MAX_OFFSET = 0x26ffffff,
|
|
||||||
|
|
||||||
MPI_IOCLOGINFO_FC_STATE_CHANGE = 0x27000000 /* The lower 24 bits give additional information concerning state change */
|
|
||||||
|
|
||||||
} MpiIocLogInfoFc_t;
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
* Title: MPI Message independent structures and definitions
|
* Title: MPI Message independent structures and definitions
|
||||||
* Creation Date: July 27, 2000
|
* Creation Date: July 27, 2000
|
||||||
*
|
*
|
||||||
* mpi.h Version: 01.05.10
|
* mpi.h Version: 01.05.11
|
||||||
*
|
*
|
||||||
* Version History
|
* Version History
|
||||||
* ---------------
|
* ---------------
|
||||||
@@ -76,6 +76,7 @@
|
|||||||
* Added EEDP IOCStatus codes.
|
* Added EEDP IOCStatus codes.
|
||||||
* 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT.
|
* 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT.
|
||||||
* 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
|
* 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
|
||||||
|
* 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -106,7 +107,7 @@
|
|||||||
/* Note: The major versions of 0xe0 through 0xff are reserved */
|
/* Note: The major versions of 0xe0 through 0xff are reserved */
|
||||||
|
|
||||||
/* versioning for this MPI header set */
|
/* versioning for this MPI header set */
|
||||||
#define MPI_HEADER_VERSION_UNIT (0x0C)
|
#define MPI_HEADER_VERSION_UNIT (0x0D)
|
||||||
#define MPI_HEADER_VERSION_DEV (0x00)
|
#define MPI_HEADER_VERSION_DEV (0x00)
|
||||||
#define MPI_HEADER_VERSION_UNIT_MASK (0xFF00)
|
#define MPI_HEADER_VERSION_UNIT_MASK (0xFF00)
|
||||||
#define MPI_HEADER_VERSION_UNIT_SHIFT (8)
|
#define MPI_HEADER_VERSION_UNIT_SHIFT (8)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* Title: MPI Config message, structures, and Pages
|
* Title: MPI Config message, structures, and Pages
|
||||||
* Creation Date: July 27, 2000
|
* Creation Date: July 27, 2000
|
||||||
*
|
*
|
||||||
* mpi_cnfg.h Version: 01.05.11
|
* mpi_cnfg.h Version: 01.05.12
|
||||||
*
|
*
|
||||||
* Version History
|
* Version History
|
||||||
* ---------------
|
* ---------------
|
||||||
@@ -266,6 +266,16 @@
|
|||||||
* Added postpone SATA Init bit to SAS IO Unit Page 1
|
* Added postpone SATA Init bit to SAS IO Unit Page 1
|
||||||
* ControlFlags.
|
* ControlFlags.
|
||||||
* Changed LogEntry format for Log Page 0.
|
* Changed LogEntry format for Log Page 0.
|
||||||
|
* 03-27-06 01.05.12 Added two new Flags defines for Manufacturing Page 4.
|
||||||
|
* Added Manufacturing Page 7.
|
||||||
|
* Added MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING.
|
||||||
|
* Added IOC Page 6.
|
||||||
|
* Added PrevBootDeviceForm field to CONFIG_PAGE_BIOS_2.
|
||||||
|
* Added MaxLBAHigh field to RAID Volume Page 0.
|
||||||
|
* Added Nvdata version fields to SAS IO Unit Page 0.
|
||||||
|
* Added AdditionalControlFlags, MaxTargetPortConnectTime,
|
||||||
|
* ReportDeviceMissingDelay, and IODeviceMissingDelay
|
||||||
|
* fields to SAS IO Unit Page 1.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -631,9 +641,11 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_4
|
|||||||
} CONFIG_PAGE_MANUFACTURING_4, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_4,
|
} CONFIG_PAGE_MANUFACTURING_4, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_4,
|
||||||
ManufacturingPage4_t, MPI_POINTER pManufacturingPage4_t;
|
ManufacturingPage4_t, MPI_POINTER pManufacturingPage4_t;
|
||||||
|
|
||||||
#define MPI_MANUFACTURING4_PAGEVERSION (0x03)
|
#define MPI_MANUFACTURING4_PAGEVERSION (0x04)
|
||||||
|
|
||||||
/* defines for the Flags field */
|
/* defines for the Flags field */
|
||||||
|
#define MPI_MANPAGE4_FORCE_BAD_BLOCK_TABLE (0x80)
|
||||||
|
#define MPI_MANPAGE4_FORCE_OFFLINE_FAILOVER (0x40)
|
||||||
#define MPI_MANPAGE4_IME_DISABLE (0x20)
|
#define MPI_MANPAGE4_IME_DISABLE (0x20)
|
||||||
#define MPI_MANPAGE4_IM_DISABLE (0x10)
|
#define MPI_MANPAGE4_IM_DISABLE (0x10)
|
||||||
#define MPI_MANPAGE4_IS_DISABLE (0x08)
|
#define MPI_MANPAGE4_IS_DISABLE (0x08)
|
||||||
@@ -668,6 +680,66 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_6
|
|||||||
#define MPI_MANUFACTURING6_PAGEVERSION (0x00)
|
#define MPI_MANUFACTURING6_PAGEVERSION (0x00)
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _MPI_MANPAGE7_CONNECTOR_INFO
|
||||||
|
{
|
||||||
|
U32 Pinout; /* 00h */
|
||||||
|
U8 Connector[16]; /* 04h */
|
||||||
|
U8 Location; /* 14h */
|
||||||
|
U8 Reserved1; /* 15h */
|
||||||
|
U16 Slot; /* 16h */
|
||||||
|
U32 Reserved2; /* 18h */
|
||||||
|
} MPI_MANPAGE7_CONNECTOR_INFO, MPI_POINTER PTR_MPI_MANPAGE7_CONNECTOR_INFO,
|
||||||
|
MpiManPage7ConnectorInfo_t, MPI_POINTER pMpiManPage7ConnectorInfo_t;
|
||||||
|
|
||||||
|
/* defines for the Pinout field */
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8484_L4 (0x00080000)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8484_L3 (0x00040000)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8484_L2 (0x00020000)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8484_L1 (0x00010000)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8470_L4 (0x00000800)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8470_L3 (0x00000400)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8470_L2 (0x00000200)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8470_L1 (0x00000100)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_SFF_8482 (0x00000002)
|
||||||
|
#define MPI_MANPAGE7_PINOUT_CONNECTION_UNKNOWN (0x00000001)
|
||||||
|
|
||||||
|
/* defines for the Location field */
|
||||||
|
#define MPI_MANPAGE7_LOCATION_UNKNOWN (0x01)
|
||||||
|
#define MPI_MANPAGE7_LOCATION_INTERNAL (0x02)
|
||||||
|
#define MPI_MANPAGE7_LOCATION_EXTERNAL (0x04)
|
||||||
|
#define MPI_MANPAGE7_LOCATION_SWITCHABLE (0x08)
|
||||||
|
#define MPI_MANPAGE7_LOCATION_AUTO (0x10)
|
||||||
|
#define MPI_MANPAGE7_LOCATION_NOT_PRESENT (0x20)
|
||||||
|
#define MPI_MANPAGE7_LOCATION_NOT_CONNECTED (0x80)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
|
||||||
|
* one and check NumPhys at runtime.
|
||||||
|
*/
|
||||||
|
#ifndef MPI_MANPAGE7_CONNECTOR_INFO_MAX
|
||||||
|
#define MPI_MANPAGE7_CONNECTOR_INFO_MAX (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct _CONFIG_PAGE_MANUFACTURING_7
|
||||||
|
{
|
||||||
|
CONFIG_PAGE_HEADER Header; /* 00h */
|
||||||
|
U32 Reserved1; /* 04h */
|
||||||
|
U32 Reserved2; /* 08h */
|
||||||
|
U32 Flags; /* 0Ch */
|
||||||
|
U8 EnclosureName[16]; /* 10h */
|
||||||
|
U8 NumPhys; /* 20h */
|
||||||
|
U8 Reserved3; /* 21h */
|
||||||
|
U16 Reserved4; /* 22h */
|
||||||
|
MPI_MANPAGE7_CONNECTOR_INFO ConnectorInfo[MPI_MANPAGE7_CONNECTOR_INFO_MAX]; /* 24h */
|
||||||
|
} CONFIG_PAGE_MANUFACTURING_7, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_7,
|
||||||
|
ManufacturingPage7_t, MPI_POINTER pManufacturingPage7_t;
|
||||||
|
|
||||||
|
#define MPI_MANUFACTURING7_PAGEVERSION (0x00)
|
||||||
|
|
||||||
|
/* defines for the Flags field */
|
||||||
|
#define MPI_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001)
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* IO Unit Config Pages
|
* IO Unit Config Pages
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -867,7 +939,7 @@ typedef struct _CONFIG_PAGE_IOC_2
|
|||||||
} CONFIG_PAGE_IOC_2, MPI_POINTER PTR_CONFIG_PAGE_IOC_2,
|
} CONFIG_PAGE_IOC_2, MPI_POINTER PTR_CONFIG_PAGE_IOC_2,
|
||||||
IOCPage2_t, MPI_POINTER pIOCPage2_t;
|
IOCPage2_t, MPI_POINTER pIOCPage2_t;
|
||||||
|
|
||||||
#define MPI_IOCPAGE2_PAGEVERSION (0x03)
|
#define MPI_IOCPAGE2_PAGEVERSION (0x04)
|
||||||
|
|
||||||
/* IOC Page 2 Capabilities flags */
|
/* IOC Page 2 Capabilities flags */
|
||||||
|
|
||||||
@@ -878,6 +950,7 @@ typedef struct _CONFIG_PAGE_IOC_2
|
|||||||
#define MPI_IOCPAGE2_CAP_FLAGS_RAID_6_SUPPORT (0x00000010)
|
#define MPI_IOCPAGE2_CAP_FLAGS_RAID_6_SUPPORT (0x00000010)
|
||||||
#define MPI_IOCPAGE2_CAP_FLAGS_RAID_10_SUPPORT (0x00000020)
|
#define MPI_IOCPAGE2_CAP_FLAGS_RAID_10_SUPPORT (0x00000020)
|
||||||
#define MPI_IOCPAGE2_CAP_FLAGS_RAID_50_SUPPORT (0x00000040)
|
#define MPI_IOCPAGE2_CAP_FLAGS_RAID_50_SUPPORT (0x00000040)
|
||||||
|
#define MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING (0x10000000)
|
||||||
#define MPI_IOCPAGE2_CAP_FLAGS_SES_SUPPORT (0x20000000)
|
#define MPI_IOCPAGE2_CAP_FLAGS_SES_SUPPORT (0x20000000)
|
||||||
#define MPI_IOCPAGE2_CAP_FLAGS_SAFTE_SUPPORT (0x40000000)
|
#define MPI_IOCPAGE2_CAP_FLAGS_SAFTE_SUPPORT (0x40000000)
|
||||||
#define MPI_IOCPAGE2_CAP_FLAGS_CROSS_CHANNEL_SUPPORT (0x80000000)
|
#define MPI_IOCPAGE2_CAP_FLAGS_CROSS_CHANNEL_SUPPORT (0x80000000)
|
||||||
@@ -975,6 +1048,44 @@ typedef struct _CONFIG_PAGE_IOC_5
|
|||||||
|
|
||||||
#define MPI_IOCPAGE5_PAGEVERSION (0x00)
|
#define MPI_IOCPAGE5_PAGEVERSION (0x00)
|
||||||
|
|
||||||
|
typedef struct _CONFIG_PAGE_IOC_6
|
||||||
|
{
|
||||||
|
CONFIG_PAGE_HEADER Header; /* 00h */
|
||||||
|
U32 CapabilitiesFlags; /* 04h */
|
||||||
|
U8 MaxDrivesIS; /* 08h */
|
||||||
|
U8 MaxDrivesIM; /* 09h */
|
||||||
|
U8 MaxDrivesIME; /* 0Ah */
|
||||||
|
U8 Reserved1; /* 0Bh */
|
||||||
|
U8 MinDrivesIS; /* 0Ch */
|
||||||
|
U8 MinDrivesIM; /* 0Dh */
|
||||||
|
U8 MinDrivesIME; /* 0Eh */
|
||||||
|
U8 Reserved2; /* 0Fh */
|
||||||
|
U8 MaxGlobalHotSpares; /* 10h */
|
||||||
|
U8 Reserved3; /* 11h */
|
||||||
|
U16 Reserved4; /* 12h */
|
||||||
|
U32 Reserved5; /* 14h */
|
||||||
|
U32 SupportedStripeSizeMapIS; /* 18h */
|
||||||
|
U32 SupportedStripeSizeMapIME; /* 1Ch */
|
||||||
|
U32 Reserved6; /* 20h */
|
||||||
|
U8 MetadataSize; /* 24h */
|
||||||
|
U8 Reserved7; /* 25h */
|
||||||
|
U16 Reserved8; /* 26h */
|
||||||
|
U16 MaxBadBlockTableEntries; /* 28h */
|
||||||
|
U16 Reserved9; /* 2Ah */
|
||||||
|
U16 IRNvsramUsage; /* 2Ch */
|
||||||
|
U16 Reserved10; /* 2Eh */
|
||||||
|
U32 IRNvsramVersion; /* 30h */
|
||||||
|
U32 Reserved11; /* 34h */
|
||||||
|
U32 Reserved12; /* 38h */
|
||||||
|
} CONFIG_PAGE_IOC_6, MPI_POINTER PTR_CONFIG_PAGE_IOC_6,
|
||||||
|
IOCPage6_t, MPI_POINTER pIOCPage6_t;
|
||||||
|
|
||||||
|
#define MPI_IOCPAGE6_PAGEVERSION (0x00)
|
||||||
|
|
||||||
|
/* IOC Page 6 Capabilities Flags */
|
||||||
|
|
||||||
|
#define MPI_IOCPAGE6_CAP_FLAGS_GLOBAL_HOT_SPARE (0x00000001)
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* BIOS Config Pages
|
* BIOS Config Pages
|
||||||
@@ -1218,13 +1329,13 @@ typedef struct _CONFIG_PAGE_BIOS_2
|
|||||||
U32 Reserved5; /* 14h */
|
U32 Reserved5; /* 14h */
|
||||||
U32 Reserved6; /* 18h */
|
U32 Reserved6; /* 18h */
|
||||||
U8 BootDeviceForm; /* 1Ch */
|
U8 BootDeviceForm; /* 1Ch */
|
||||||
U8 Reserved7; /* 1Dh */
|
U8 PrevBootDeviceForm; /* 1Ch */
|
||||||
U16 Reserved8; /* 1Eh */
|
U16 Reserved8; /* 1Eh */
|
||||||
MPI_BIOSPAGE2_BOOT_DEVICE BootDevice; /* 20h */
|
MPI_BIOSPAGE2_BOOT_DEVICE BootDevice; /* 20h */
|
||||||
} CONFIG_PAGE_BIOS_2, MPI_POINTER PTR_CONFIG_PAGE_BIOS_2,
|
} CONFIG_PAGE_BIOS_2, MPI_POINTER PTR_CONFIG_PAGE_BIOS_2,
|
||||||
BIOSPage2_t, MPI_POINTER pBIOSPage2_t;
|
BIOSPage2_t, MPI_POINTER pBIOSPage2_t;
|
||||||
|
|
||||||
#define MPI_BIOSPAGE2_PAGEVERSION (0x01)
|
#define MPI_BIOSPAGE2_PAGEVERSION (0x02)
|
||||||
|
|
||||||
#define MPI_BIOSPAGE2_FORM_MASK (0x0F)
|
#define MPI_BIOSPAGE2_FORM_MASK (0x0F)
|
||||||
#define MPI_BIOSPAGE2_FORM_ADAPTER_ORDER (0x00)
|
#define MPI_BIOSPAGE2_FORM_ADAPTER_ORDER (0x00)
|
||||||
@@ -2080,7 +2191,7 @@ typedef struct _CONFIG_PAGE_RAID_VOL_0
|
|||||||
RAID_VOL0_STATUS VolumeStatus; /* 08h */
|
RAID_VOL0_STATUS VolumeStatus; /* 08h */
|
||||||
RAID_VOL0_SETTINGS VolumeSettings; /* 0Ch */
|
RAID_VOL0_SETTINGS VolumeSettings; /* 0Ch */
|
||||||
U32 MaxLBA; /* 10h */
|
U32 MaxLBA; /* 10h */
|
||||||
U32 Reserved1; /* 14h */
|
U32 MaxLBAHigh; /* 14h */
|
||||||
U32 StripeSize; /* 18h */
|
U32 StripeSize; /* 18h */
|
||||||
U32 Reserved2; /* 1Ch */
|
U32 Reserved2; /* 1Ch */
|
||||||
U32 Reserved3; /* 20h */
|
U32 Reserved3; /* 20h */
|
||||||
@@ -2092,7 +2203,7 @@ typedef struct _CONFIG_PAGE_RAID_VOL_0
|
|||||||
} CONFIG_PAGE_RAID_VOL_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_0,
|
} CONFIG_PAGE_RAID_VOL_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_0,
|
||||||
RaidVolumePage0_t, MPI_POINTER pRaidVolumePage0_t;
|
RaidVolumePage0_t, MPI_POINTER pRaidVolumePage0_t;
|
||||||
|
|
||||||
#define MPI_RAIDVOLPAGE0_PAGEVERSION (0x05)
|
#define MPI_RAIDVOLPAGE0_PAGEVERSION (0x06)
|
||||||
|
|
||||||
/* values for RAID Volume Page 0 InactiveStatus field */
|
/* values for RAID Volume Page 0 InactiveStatus field */
|
||||||
#define MPI_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00)
|
#define MPI_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00)
|
||||||
@@ -2324,7 +2435,8 @@ typedef struct _MPI_SAS_IO_UNIT0_PHY_DATA
|
|||||||
typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
|
typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
|
||||||
{
|
{
|
||||||
CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
|
CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
|
||||||
U32 Reserved1; /* 08h */
|
U16 NvdataVersionDefault; /* 08h */
|
||||||
|
U16 NvdataVersionPersistent; /* 0Ah */
|
||||||
U8 NumPhys; /* 0Ch */
|
U8 NumPhys; /* 0Ch */
|
||||||
U8 Reserved2; /* 0Dh */
|
U8 Reserved2; /* 0Dh */
|
||||||
U16 Reserved3; /* 0Eh */
|
U16 Reserved3; /* 0Eh */
|
||||||
@@ -2332,7 +2444,7 @@ typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
|
|||||||
} CONFIG_PAGE_SAS_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_0,
|
} CONFIG_PAGE_SAS_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_0,
|
||||||
SasIOUnitPage0_t, MPI_POINTER pSasIOUnitPage0_t;
|
SasIOUnitPage0_t, MPI_POINTER pSasIOUnitPage0_t;
|
||||||
|
|
||||||
#define MPI_SASIOUNITPAGE0_PAGEVERSION (0x03)
|
#define MPI_SASIOUNITPAGE0_PAGEVERSION (0x04)
|
||||||
|
|
||||||
/* values for SAS IO Unit Page 0 PortFlags */
|
/* values for SAS IO Unit Page 0 PortFlags */
|
||||||
#define MPI_SAS_IOUNIT0_PORT_FLAGS_DISCOVERY_IN_PROGRESS (0x08)
|
#define MPI_SAS_IOUNIT0_PORT_FLAGS_DISCOVERY_IN_PROGRESS (0x08)
|
||||||
@@ -2373,12 +2485,13 @@ typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
|
|||||||
|
|
||||||
typedef struct _MPI_SAS_IO_UNIT1_PHY_DATA
|
typedef struct _MPI_SAS_IO_UNIT1_PHY_DATA
|
||||||
{
|
{
|
||||||
U8 Port; /* 00h */
|
U8 Port; /* 00h */
|
||||||
U8 PortFlags; /* 01h */
|
U8 PortFlags; /* 01h */
|
||||||
U8 PhyFlags; /* 02h */
|
U8 PhyFlags; /* 02h */
|
||||||
U8 MaxMinLinkRate; /* 03h */
|
U8 MaxMinLinkRate; /* 03h */
|
||||||
U32 ControllerPhyDeviceInfo;/* 04h */
|
U32 ControllerPhyDeviceInfo; /* 04h */
|
||||||
U32 Reserved1; /* 08h */
|
U16 MaxTargetPortConnectTime; /* 08h */
|
||||||
|
U16 Reserved1; /* 0Ah */
|
||||||
} MPI_SAS_IO_UNIT1_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT1_PHY_DATA,
|
} MPI_SAS_IO_UNIT1_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT1_PHY_DATA,
|
||||||
SasIOUnit1PhyData, MPI_POINTER pSasIOUnit1PhyData;
|
SasIOUnit1PhyData, MPI_POINTER pSasIOUnit1PhyData;
|
||||||
|
|
||||||
@@ -2395,15 +2508,17 @@ typedef struct _CONFIG_PAGE_SAS_IO_UNIT_1
|
|||||||
CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
|
CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
|
||||||
U16 ControlFlags; /* 08h */
|
U16 ControlFlags; /* 08h */
|
||||||
U16 MaxNumSATATargets; /* 0Ah */
|
U16 MaxNumSATATargets; /* 0Ah */
|
||||||
U32 Reserved1; /* 0Ch */
|
U16 AdditionalControlFlags; /* 0Ch */
|
||||||
|
U16 Reserved1; /* 0Eh */
|
||||||
U8 NumPhys; /* 10h */
|
U8 NumPhys; /* 10h */
|
||||||
U8 SATAMaxQDepth; /* 11h */
|
U8 SATAMaxQDepth; /* 11h */
|
||||||
U16 Reserved2; /* 12h */
|
U8 ReportDeviceMissingDelay; /* 12h */
|
||||||
|
U8 IODeviceMissingDelay; /* 13h */
|
||||||
MPI_SAS_IO_UNIT1_PHY_DATA PhyData[MPI_SAS_IOUNIT1_PHY_MAX]; /* 14h */
|
MPI_SAS_IO_UNIT1_PHY_DATA PhyData[MPI_SAS_IOUNIT1_PHY_MAX]; /* 14h */
|
||||||
} CONFIG_PAGE_SAS_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_1,
|
} CONFIG_PAGE_SAS_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_1,
|
||||||
SasIOUnitPage1_t, MPI_POINTER pSasIOUnitPage1_t;
|
SasIOUnitPage1_t, MPI_POINTER pSasIOUnitPage1_t;
|
||||||
|
|
||||||
#define MPI_SASIOUNITPAGE1_PAGEVERSION (0x05)
|
#define MPI_SASIOUNITPAGE1_PAGEVERSION (0x06)
|
||||||
|
|
||||||
/* values for SAS IO Unit Page 1 ControlFlags */
|
/* values for SAS IO Unit Page 1 ControlFlags */
|
||||||
#define MPI_SAS_IOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000)
|
#define MPI_SAS_IOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000)
|
||||||
@@ -2428,6 +2543,13 @@ typedef struct _CONFIG_PAGE_SAS_IO_UNIT_1
|
|||||||
#define MPI_SAS_IOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002)
|
#define MPI_SAS_IOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002)
|
||||||
#define MPI_SAS_IOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
|
#define MPI_SAS_IOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
|
||||||
|
|
||||||
|
/* values for SAS IO Unit Page 1 AdditionalControlFlags */
|
||||||
|
#define MPI_SAS_IOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001)
|
||||||
|
|
||||||
|
/* defines for SAS IO Unit Page 1 ReportDeviceMissingDelay */
|
||||||
|
#define MPI_SAS_IOUNIT1_REPORT_MISSING_TIMEOUT_MASK (0x7F)
|
||||||
|
#define MPI_SAS_IOUNIT1_REPORT_MISSING_UNIT_16 (0x80)
|
||||||
|
|
||||||
/* values for SAS IO Unit Page 1 PortFlags */
|
/* values for SAS IO Unit Page 1 PortFlags */
|
||||||
#define MPI_SAS_IOUNIT1_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
|
#define MPI_SAS_IOUNIT1_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
|
||||||
#define MPI_SAS_IOUNIT1_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
|
#define MPI_SAS_IOUNIT1_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
|
||||||
|
|||||||
@@ -6,25 +6,25 @@
|
|||||||
Copyright (c) 2000-2005 LSI Logic Corporation.
|
Copyright (c) 2000-2005 LSI Logic Corporation.
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
Header Set Release Version: 01.05.12
|
Header Set Release Version: 01.05.13
|
||||||
Header Set Release Date: 08-30-05
|
Header Set Release Date: 03-27-06
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
Filename Current version Prior version
|
Filename Current version Prior version
|
||||||
---------- --------------- -------------
|
---------- --------------- -------------
|
||||||
mpi.h 01.05.10 01.05.09
|
mpi.h 01.05.11 01.05.10
|
||||||
mpi_ioc.h 01.05.10 01.05.09
|
mpi_ioc.h 01.05.11 01.05.10
|
||||||
mpi_cnfg.h 01.05.11 01.05.10
|
mpi_cnfg.h 01.05.12 01.05.11
|
||||||
mpi_init.h 01.05.06 01.05.06
|
mpi_init.h 01.05.07 01.05.06
|
||||||
mpi_targ.h 01.05.05 01.05.05
|
mpi_targ.h 01.05.06 01.05.05
|
||||||
mpi_fc.h 01.05.01 01.05.01
|
mpi_fc.h 01.05.01 01.05.01
|
||||||
mpi_lan.h 01.05.01 01.05.01
|
mpi_lan.h 01.05.01 01.05.01
|
||||||
mpi_raid.h 01.05.02 01.05.02
|
mpi_raid.h 01.05.02 01.05.02
|
||||||
mpi_tool.h 01.05.03 01.05.03
|
mpi_tool.h 01.05.03 01.05.03
|
||||||
mpi_inb.h 01.05.01 01.05.01
|
mpi_inb.h 01.05.01 01.05.01
|
||||||
mpi_sas.h 01.05.02 01.05.01
|
mpi_sas.h 01.05.03 01.05.02
|
||||||
mpi_type.h 01.05.02 01.05.01
|
mpi_type.h 01.05.02 01.05.02
|
||||||
mpi_history.txt 01.05.12 01.05.11
|
mpi_history.txt 01.05.13 01.05.12
|
||||||
|
|
||||||
|
|
||||||
* Date Version Description
|
* Date Version Description
|
||||||
@@ -93,6 +93,7 @@ mpi.h
|
|||||||
* Added EEDP IOCStatus codes.
|
* Added EEDP IOCStatus codes.
|
||||||
* 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT.
|
* 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT.
|
||||||
* 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
|
* 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
|
||||||
|
* 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
|
||||||
mpi_ioc.h
|
mpi_ioc.h
|
||||||
@@ -170,6 +171,17 @@ mpi_ioc.h
|
|||||||
* Added new ReasonCode value for SAS Device Status Change
|
* Added new ReasonCode value for SAS Device Status Change
|
||||||
* event.
|
* event.
|
||||||
* Added new family code for FC949E.
|
* Added new family code for FC949E.
|
||||||
|
* 03-27-06 01.05.11 Added MPI_IOCFACTS_CAPABILITY_TLR.
|
||||||
|
* Added additional Reason Codes and more event data fields
|
||||||
|
* to EVENT_DATA_SAS_DEVICE_STATUS_CHANGE.
|
||||||
|
* Added EVENT_DATA_SAS_BROADCAST_PRIMITIVE structure and
|
||||||
|
* new event.
|
||||||
|
* Added MPI_EVENT_SAS_SMP_ERROR and event data structure.
|
||||||
|
* Added MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE and event
|
||||||
|
* data structure.
|
||||||
|
* Added MPI_EVENT_SAS_INIT_TABLE_OVERFLOW and event
|
||||||
|
* data structure.
|
||||||
|
* Added MPI_EXT_IMAGE_TYPE_INITIALIZATION.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
|
||||||
mpi_cnfg.h
|
mpi_cnfg.h
|
||||||
@@ -425,6 +437,16 @@ mpi_cnfg.h
|
|||||||
* Added postpone SATA Init bit to SAS IO Unit Page 1
|
* Added postpone SATA Init bit to SAS IO Unit Page 1
|
||||||
* ControlFlags.
|
* ControlFlags.
|
||||||
* Changed LogEntry format for Log Page 0.
|
* Changed LogEntry format for Log Page 0.
|
||||||
|
* 03-27-06 01.05.12 Added two new Flags defines for Manufacturing Page 4.
|
||||||
|
* Added Manufacturing Page 7.
|
||||||
|
* Added MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING.
|
||||||
|
* Added IOC Page 6.
|
||||||
|
* Added PrevBootDeviceForm field to CONFIG_PAGE_BIOS_2.
|
||||||
|
* Added MaxLBAHigh field to RAID Volume Page 0.
|
||||||
|
* Added Nvdata version fields to SAS IO Unit Page 0.
|
||||||
|
* Added AdditionalControlFlags, MaxTargetPortConnectTime,
|
||||||
|
* ReportDeviceMissingDelay, and IODeviceMissingDelay
|
||||||
|
* fields to SAS IO Unit Page 1.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
|
||||||
mpi_init.h
|
mpi_init.h
|
||||||
@@ -467,6 +489,7 @@ mpi_init.h
|
|||||||
* Added four new defines for SEP SlotStatus.
|
* Added four new defines for SEP SlotStatus.
|
||||||
* 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them
|
* 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them
|
||||||
* unique in the first 32 characters.
|
* unique in the first 32 characters.
|
||||||
|
* 03-27-06 01.05.07 Added Task Management type of Clear ACA.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
|
||||||
mpi_targ.h
|
mpi_targ.h
|
||||||
@@ -511,6 +534,7 @@ mpi_targ.h
|
|||||||
* 02-22-05 01.05.03 Changed a comment.
|
* 02-22-05 01.05.03 Changed a comment.
|
||||||
* 03-11-05 01.05.04 Removed TargetAssistExtended Request.
|
* 03-11-05 01.05.04 Removed TargetAssistExtended Request.
|
||||||
* 06-24-05 01.05.05 Added TargetAssistExtended structures and defines.
|
* 06-24-05 01.05.05 Added TargetAssistExtended structures and defines.
|
||||||
|
* 03-27-06 01.05.06 Added a comment.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
|
||||||
mpi_fc.h
|
mpi_fc.h
|
||||||
@@ -610,6 +634,10 @@ mpi_sas.h
|
|||||||
* 08-30-05 01.05.02 Added DeviceInfo bit for SEP.
|
* 08-30-05 01.05.02 Added DeviceInfo bit for SEP.
|
||||||
* Added PrimFlags and Primitive field to SAS IO Unit
|
* Added PrimFlags and Primitive field to SAS IO Unit
|
||||||
* Control request, and added a new operation code.
|
* Control request, and added a new operation code.
|
||||||
|
* 03-27-06 01.05.03 Added Force Full Discovery, Transmit Port Select Signal,
|
||||||
|
* and Remove Device operations to SAS IO Unit Control.
|
||||||
|
* Added DevHandle field to SAS IO Unit Control request and
|
||||||
|
* reply.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
|
||||||
mpi_type.h
|
mpi_type.h
|
||||||
@@ -625,20 +653,20 @@ mpi_type.h
|
|||||||
|
|
||||||
mpi_history.txt Parts list history
|
mpi_history.txt Parts list history
|
||||||
|
|
||||||
Filename 01.05.12 01.05.11 01.05.10 01.05.09
|
Filename 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09
|
||||||
---------- -------- -------- -------- --------
|
---------- -------- -------- -------- -------- --------
|
||||||
mpi.h 01.05.10 01.05.09 01.05.08 01.05.07
|
mpi.h 01.05.11 01.05.10 01.05.09 01.05.08 01.05.07
|
||||||
mpi_ioc.h 01.05.10 01.05.09 01.05.09 01.05.08
|
mpi_ioc.h 01.05.11 01.05.10 01.05.09 01.05.09 01.05.08
|
||||||
mpi_cnfg.h 01.05.11 01.05.10 01.05.09 01.05.08
|
mpi_cnfg.h 01.05.12 01.05.11 01.05.10 01.05.09 01.05.08
|
||||||
mpi_init.h 01.05.06 01.05.06 01.05.05 01.05.04
|
mpi_init.h 01.05.07 01.05.06 01.05.06 01.05.05 01.05.04
|
||||||
mpi_targ.h 01.05.05 01.05.05 01.05.05 01.05.04
|
mpi_targ.h 01.05.06 01.05.05 01.05.05 01.05.05 01.05.04
|
||||||
mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01
|
mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||||
mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01
|
mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||||
mpi_raid.h 01.05.02 01.05.02 01.05.02 01.05.02
|
mpi_raid.h 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02
|
||||||
mpi_tool.h 01.05.03 01.05.03 01.05.03 01.05.03
|
mpi_tool.h 01.05.03 01.05.03 01.05.03 01.05.03 01.05.03
|
||||||
mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01
|
mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||||
mpi_sas.h 01.05.02 01.05.01 01.05.01 01.05.01
|
mpi_sas.h 01.05.03 01.05.02 01.05.01 01.05.01 01.05.01
|
||||||
mpi_type.h 01.05.02 01.05.01 01.05.01 01.05.01
|
mpi_type.h 01.05.02 01.05.02 01.05.01 01.05.01 01.05.01
|
||||||
|
|
||||||
Filename 01.05.08 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03
|
Filename 01.05.08 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03
|
||||||
---------- -------- -------- -------- -------- -------- --------
|
---------- -------- -------- -------- -------- -------- --------
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* Title: MPI initiator mode messages and structures
|
* Title: MPI initiator mode messages and structures
|
||||||
* Creation Date: June 8, 2000
|
* Creation Date: June 8, 2000
|
||||||
*
|
*
|
||||||
* mpi_init.h Version: 01.05.06
|
* mpi_init.h Version: 01.05.07
|
||||||
*
|
*
|
||||||
* Version History
|
* Version History
|
||||||
* ---------------
|
* ---------------
|
||||||
@@ -52,6 +52,7 @@
|
|||||||
* Added four new defines for SEP SlotStatus.
|
* Added four new defines for SEP SlotStatus.
|
||||||
* 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them
|
* 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them
|
||||||
* unique in the first 32 characters.
|
* unique in the first 32 characters.
|
||||||
|
* 03-27-06 01.05.07 Added Task Management type of Clear ACA.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -427,6 +428,7 @@ typedef struct _MSG_SCSI_TASK_MGMT
|
|||||||
#define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
|
#define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
|
||||||
#define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
|
#define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
|
||||||
#define MPI_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
|
#define MPI_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
|
||||||
|
#define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08)
|
||||||
|
|
||||||
/* MsgFlags bits */
|
/* MsgFlags bits */
|
||||||
#define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00)
|
#define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
|
* Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
|
||||||
* Creation Date: August 11, 2000
|
* Creation Date: August 11, 2000
|
||||||
*
|
*
|
||||||
* mpi_ioc.h Version: 01.05.10
|
* mpi_ioc.h Version: 01.05.11
|
||||||
*
|
*
|
||||||
* Version History
|
* Version History
|
||||||
* ---------------
|
* ---------------
|
||||||
@@ -87,6 +87,17 @@
|
|||||||
* Added new ReasonCode value for SAS Device Status Change
|
* Added new ReasonCode value for SAS Device Status Change
|
||||||
* event.
|
* event.
|
||||||
* Added new family code for FC949E.
|
* Added new family code for FC949E.
|
||||||
|
* 03-27-06 01.05.11 Added MPI_IOCFACTS_CAPABILITY_TLR.
|
||||||
|
* Added additional Reason Codes and more event data fields
|
||||||
|
* to EVENT_DATA_SAS_DEVICE_STATUS_CHANGE.
|
||||||
|
* Added EVENT_DATA_SAS_BROADCAST_PRIMITIVE structure and
|
||||||
|
* new event.
|
||||||
|
* Added MPI_EVENT_SAS_SMP_ERROR and event data structure.
|
||||||
|
* Added MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE and event
|
||||||
|
* data structure.
|
||||||
|
* Added MPI_EVENT_SAS_INIT_TABLE_OVERFLOW and event
|
||||||
|
* data structure.
|
||||||
|
* Added MPI_EXT_IMAGE_TYPE_INITIALIZATION.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -272,6 +283,7 @@ typedef struct _MSG_IOC_FACTS_REPLY
|
|||||||
#define MPI_IOCFACTS_CAPABILITY_MULTICAST (0x00000100)
|
#define MPI_IOCFACTS_CAPABILITY_MULTICAST (0x00000100)
|
||||||
#define MPI_IOCFACTS_CAPABILITY_SCSIIO32 (0x00000200)
|
#define MPI_IOCFACTS_CAPABILITY_SCSIIO32 (0x00000200)
|
||||||
#define MPI_IOCFACTS_CAPABILITY_NO_SCSIIO16 (0x00000400)
|
#define MPI_IOCFACTS_CAPABILITY_NO_SCSIIO16 (0x00000400)
|
||||||
|
#define MPI_IOCFACTS_CAPABILITY_TLR (0x00000800)
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@@ -448,30 +460,34 @@ typedef struct _MSG_EVENT_ACK_REPLY
|
|||||||
|
|
||||||
/* Event */
|
/* Event */
|
||||||
|
|
||||||
#define MPI_EVENT_NONE (0x00000000)
|
#define MPI_EVENT_NONE (0x00000000)
|
||||||
#define MPI_EVENT_LOG_DATA (0x00000001)
|
#define MPI_EVENT_LOG_DATA (0x00000001)
|
||||||
#define MPI_EVENT_STATE_CHANGE (0x00000002)
|
#define MPI_EVENT_STATE_CHANGE (0x00000002)
|
||||||
#define MPI_EVENT_UNIT_ATTENTION (0x00000003)
|
#define MPI_EVENT_UNIT_ATTENTION (0x00000003)
|
||||||
#define MPI_EVENT_IOC_BUS_RESET (0x00000004)
|
#define MPI_EVENT_IOC_BUS_RESET (0x00000004)
|
||||||
#define MPI_EVENT_EXT_BUS_RESET (0x00000005)
|
#define MPI_EVENT_EXT_BUS_RESET (0x00000005)
|
||||||
#define MPI_EVENT_RESCAN (0x00000006)
|
#define MPI_EVENT_RESCAN (0x00000006)
|
||||||
#define MPI_EVENT_LINK_STATUS_CHANGE (0x00000007)
|
#define MPI_EVENT_LINK_STATUS_CHANGE (0x00000007)
|
||||||
#define MPI_EVENT_LOOP_STATE_CHANGE (0x00000008)
|
#define MPI_EVENT_LOOP_STATE_CHANGE (0x00000008)
|
||||||
#define MPI_EVENT_LOGOUT (0x00000009)
|
#define MPI_EVENT_LOGOUT (0x00000009)
|
||||||
#define MPI_EVENT_EVENT_CHANGE (0x0000000A)
|
#define MPI_EVENT_EVENT_CHANGE (0x0000000A)
|
||||||
#define MPI_EVENT_INTEGRATED_RAID (0x0000000B)
|
#define MPI_EVENT_INTEGRATED_RAID (0x0000000B)
|
||||||
#define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C)
|
#define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C)
|
||||||
#define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D)
|
#define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D)
|
||||||
#define MPI_EVENT_QUEUE_FULL (0x0000000E)
|
#define MPI_EVENT_QUEUE_FULL (0x0000000E)
|
||||||
#define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F)
|
#define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F)
|
||||||
#define MPI_EVENT_SAS_SES (0x00000010)
|
#define MPI_EVENT_SAS_SES (0x00000010)
|
||||||
#define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011)
|
#define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011)
|
||||||
#define MPI_EVENT_SAS_PHY_LINK_STATUS (0x00000012)
|
#define MPI_EVENT_SAS_PHY_LINK_STATUS (0x00000012)
|
||||||
#define MPI_EVENT_SAS_DISCOVERY_ERROR (0x00000013)
|
#define MPI_EVENT_SAS_DISCOVERY_ERROR (0x00000013)
|
||||||
#define MPI_EVENT_IR_RESYNC_UPDATE (0x00000014)
|
#define MPI_EVENT_IR_RESYNC_UPDATE (0x00000014)
|
||||||
#define MPI_EVENT_IR2 (0x00000015)
|
#define MPI_EVENT_IR2 (0x00000015)
|
||||||
#define MPI_EVENT_SAS_DISCOVERY (0x00000016)
|
#define MPI_EVENT_SAS_DISCOVERY (0x00000016)
|
||||||
#define MPI_EVENT_LOG_ENTRY_ADDED (0x00000021)
|
#define MPI_EVENT_SAS_BROADCAST_PRIMITIVE (0x00000017)
|
||||||
|
#define MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE (0x00000018)
|
||||||
|
#define MPI_EVENT_SAS_INIT_TABLE_OVERFLOW (0x00000019)
|
||||||
|
#define MPI_EVENT_SAS_SMP_ERROR (0x0000001A)
|
||||||
|
#define MPI_EVENT_LOG_ENTRY_ADDED (0x00000021)
|
||||||
|
|
||||||
/* AckRequired field values */
|
/* AckRequired field values */
|
||||||
|
|
||||||
@@ -558,18 +574,25 @@ typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
|
|||||||
U8 PhyNum; /* 0Eh */
|
U8 PhyNum; /* 0Eh */
|
||||||
U8 Reserved1; /* 0Fh */
|
U8 Reserved1; /* 0Fh */
|
||||||
U64 SASAddress; /* 10h */
|
U64 SASAddress; /* 10h */
|
||||||
|
U8 LUN[8]; /* 18h */
|
||||||
|
U16 TaskTag; /* 20h */
|
||||||
|
U16 Reserved2; /* 22h */
|
||||||
} EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
|
} EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
|
||||||
MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
|
MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
|
||||||
MpiEventDataSasDeviceStatusChange_t,
|
MpiEventDataSasDeviceStatusChange_t,
|
||||||
MPI_POINTER pMpiEventDataSasDeviceStatusChange_t;
|
MPI_POINTER pMpiEventDataSasDeviceStatusChange_t;
|
||||||
|
|
||||||
/* MPI SAS Device Status Change Event data ReasonCode values */
|
/* MPI SAS Device Status Change Event data ReasonCode values */
|
||||||
#define MPI_EVENT_SAS_DEV_STAT_RC_ADDED (0x03)
|
#define MPI_EVENT_SAS_DEV_STAT_RC_ADDED (0x03)
|
||||||
#define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04)
|
#define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04)
|
||||||
#define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
|
#define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
|
||||||
#define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06)
|
#define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06)
|
||||||
#define MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07)
|
#define MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07)
|
||||||
#define MPI_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08)
|
#define MPI_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08)
|
||||||
|
#define MPI_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL (0x09)
|
||||||
|
#define MPI_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL (0x0A)
|
||||||
|
#define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B)
|
||||||
|
#define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C)
|
||||||
|
|
||||||
|
|
||||||
/* SCSI Event data for Queue Full event */
|
/* SCSI Event data for Queue Full event */
|
||||||
@@ -742,6 +765,27 @@ typedef struct _EVENT_DATA_SAS_SES
|
|||||||
} EVENT_DATA_SAS_SES, MPI_POINTER PTR_EVENT_DATA_SAS_SES,
|
} EVENT_DATA_SAS_SES, MPI_POINTER PTR_EVENT_DATA_SAS_SES,
|
||||||
MpiEventDataSasSes_t, MPI_POINTER pMpiEventDataSasSes_t;
|
MpiEventDataSasSes_t, MPI_POINTER pMpiEventDataSasSes_t;
|
||||||
|
|
||||||
|
/* SAS Broadcast Primitive Event data */
|
||||||
|
|
||||||
|
typedef struct _EVENT_DATA_SAS_BROADCAST_PRIMITIVE
|
||||||
|
{
|
||||||
|
U8 PhyNum; /* 00h */
|
||||||
|
U8 Port; /* 01h */
|
||||||
|
U8 PortWidth; /* 02h */
|
||||||
|
U8 Primitive; /* 04h */
|
||||||
|
} EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
|
||||||
|
MPI_POINTER PTR_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
|
||||||
|
MpiEventDataSasBroadcastPrimitive_t,
|
||||||
|
MPI_POINTER pMpiEventDataSasBroadcastPrimitive_t;
|
||||||
|
|
||||||
|
#define MPI_EVENT_PRIMITIVE_CHANGE (0x01)
|
||||||
|
#define MPI_EVENT_PRIMITIVE_EXPANDER (0x03)
|
||||||
|
#define MPI_EVENT_PRIMITIVE_RESERVED2 (0x04)
|
||||||
|
#define MPI_EVENT_PRIMITIVE_RESERVED3 (0x05)
|
||||||
|
#define MPI_EVENT_PRIMITIVE_RESERVED4 (0x06)
|
||||||
|
#define MPI_EVENT_PRIMITIVE_CHANGE0_RESERVED (0x07)
|
||||||
|
#define MPI_EVENT_PRIMITIVE_CHANGE1_RESERVED (0x08)
|
||||||
|
|
||||||
/* SAS Phy Link Status Event data */
|
/* SAS Phy Link Status Event data */
|
||||||
|
|
||||||
typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS
|
typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS
|
||||||
@@ -804,6 +848,53 @@ typedef struct _EVENT_DATA_DISCOVERY_ERROR
|
|||||||
#define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_PATHS (0x00000800)
|
#define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_PATHS (0x00000800)
|
||||||
#define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000)
|
#define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000)
|
||||||
|
|
||||||
|
/* SAS SMP Error Event data */
|
||||||
|
|
||||||
|
typedef struct _EVENT_DATA_SAS_SMP_ERROR
|
||||||
|
{
|
||||||
|
U8 Status; /* 00h */
|
||||||
|
U8 Port; /* 01h */
|
||||||
|
U8 SMPFunctionResult; /* 02h */
|
||||||
|
U8 Reserved1; /* 03h */
|
||||||
|
U64 SASAddress; /* 04h */
|
||||||
|
} EVENT_DATA_SAS_SMP_ERROR, MPI_POINTER PTR_EVENT_DATA_SAS_SMP_ERROR,
|
||||||
|
MpiEventDataSasSmpError_t, MPI_POINTER pMpiEventDataSasSmpError_t;
|
||||||
|
|
||||||
|
/* defines for the Status field of the SAS SMP Error event */
|
||||||
|
#define MPI_EVENT_SAS_SMP_FUNCTION_RESULT_VALID (0x00)
|
||||||
|
#define MPI_EVENT_SAS_SMP_CRC_ERROR (0x01)
|
||||||
|
#define MPI_EVENT_SAS_SMP_TIMEOUT (0x02)
|
||||||
|
#define MPI_EVENT_SAS_SMP_NO_DESTINATION (0x03)
|
||||||
|
#define MPI_EVENT_SAS_SMP_BAD_DESTINATION (0x04)
|
||||||
|
|
||||||
|
/* SAS Initiator Device Status Change Event data */
|
||||||
|
|
||||||
|
typedef struct _EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE
|
||||||
|
{
|
||||||
|
U8 ReasonCode; /* 00h */
|
||||||
|
U8 Port; /* 01h */
|
||||||
|
U16 DevHandle; /* 02h */
|
||||||
|
U64 SASAddress; /* 04h */
|
||||||
|
} EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
|
||||||
|
MPI_POINTER PTR_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
|
||||||
|
MpiEventDataSasInitDevStatusChange_t,
|
||||||
|
MPI_POINTER pMpiEventDataSasInitDevStatusChange_t;
|
||||||
|
|
||||||
|
/* defines for the ReasonCode field of the SAS Initiator Device Status Change event */
|
||||||
|
#define MPI_EVENT_SAS_INIT_RC_ADDED (0x01)
|
||||||
|
|
||||||
|
/* SAS Initiator Device Table Overflow Event data */
|
||||||
|
|
||||||
|
typedef struct _EVENT_DATA_SAS_INIT_TABLE_OVERFLOW
|
||||||
|
{
|
||||||
|
U8 MaxInit; /* 00h */
|
||||||
|
U8 CurrentInit; /* 01h */
|
||||||
|
U16 Reserved1; /* 02h */
|
||||||
|
} EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
|
||||||
|
MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
|
||||||
|
MpiEventDataSasInitTableOverflow_t,
|
||||||
|
MPI_POINTER pMpiEventDataSasInitTableOverflow_t;
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
@@ -1013,5 +1104,6 @@ typedef struct _MPI_EXT_IMAGE_HEADER
|
|||||||
#define MPI_EXT_IMAGE_TYPE_FW (0x01)
|
#define MPI_EXT_IMAGE_TYPE_FW (0x01)
|
||||||
#define MPI_EXT_IMAGE_TYPE_NVDATA (0x03)
|
#define MPI_EXT_IMAGE_TYPE_NVDATA (0x03)
|
||||||
#define MPI_EXT_IMAGE_TYPE_BOOTLOADER (0x04)
|
#define MPI_EXT_IMAGE_TYPE_BOOTLOADER (0x04)
|
||||||
|
#define MPI_EXT_IMAGE_TYPE_INITIALIZATION (0x05)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#ifndef IOPI_IOCLOGINFO_H_INCLUDED
|
#ifndef IOPI_IOCLOGINFO_H_INCLUDED
|
||||||
#define IOPI_IOCLOGINFO_H_INCLUDED
|
#define IOPI_IOCLOGINFO_H_INCLUDED
|
||||||
|
|
||||||
|
#define SAS_LOGINFO_NEXUS_LOSS 0x31170000
|
||||||
|
#define SAS_LOGINFO_MASK 0xFFFF0000
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/* IOC LOGINFO defines, 0x00000000 - 0x0FFFFFFF */
|
/* IOC LOGINFO defines, 0x00000000 - 0x0FFFFFFF */
|
||||||
@@ -51,6 +53,9 @@
|
|||||||
#define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DNM (0x00030500) /* Device Not Mapped */
|
#define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DNM (0x00030500) /* Device Not Mapped */
|
||||||
#define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PERSIST (0x00030600) /* Persistent Page not found */
|
#define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PERSIST (0x00030600) /* Persistent Page not found */
|
||||||
#define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DEFAULT (0x00030700) /* Default Page not found */
|
#define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DEFAULT (0x00030700) /* Default Page not found */
|
||||||
|
|
||||||
|
#define IOP_LOGINFO_CODE_DIAG_MSG_ERROR (0x00040000) /* Error handling diag msg - or'd with diag status */
|
||||||
|
|
||||||
#define IOP_LOGINFO_CODE_TASK_TERMINATED (0x00050000)
|
#define IOP_LOGINFO_CODE_TASK_TERMINATED (0x00050000)
|
||||||
|
|
||||||
#define IOP_LOGINFO_CODE_ENCL_MGMT_READ_ACTION_ERR0R (0x00060001) /* Read Action not supported for SEP msg */
|
#define IOP_LOGINFO_CODE_ENCL_MGMT_READ_ACTION_ERR0R (0x00060001) /* Read Action not supported for SEP msg */
|
||||||
@@ -103,6 +108,7 @@
|
|||||||
#define PL_LOGINFO_CODE_IO_EXECUTED (0x00140000)
|
#define PL_LOGINFO_CODE_IO_EXECUTED (0x00140000)
|
||||||
#define PL_LOGINFO_CODE_PERS_RESV_OUT_NOT_AFFIL_OWNER (0x00150000)
|
#define PL_LOGINFO_CODE_PERS_RESV_OUT_NOT_AFFIL_OWNER (0x00150000)
|
||||||
#define PL_LOGINFO_CODE_OPEN_TXDMA_ABORT (0x00160000)
|
#define PL_LOGINFO_CODE_OPEN_TXDMA_ABORT (0x00160000)
|
||||||
|
#define PL_LOGINFO_CODE_IO_DEVICE_MISSING_DELAY_RETRY (0x00170000)
|
||||||
#define PL_LOGINFO_SUB_CODE_OPEN_FAILURE (0x00000100)
|
#define PL_LOGINFO_SUB_CODE_OPEN_FAILURE (0x00000100)
|
||||||
#define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_NO_DEST_TIMEOUT (0x00000101)
|
#define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_NO_DEST_TIMEOUT (0x00000101)
|
||||||
#define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ORR_TIMEOUT (0x0000011A) /* Open Reject (Retry) Timeout */
|
#define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ORR_TIMEOUT (0x0000011A) /* Open Reject (Retry) Timeout */
|
||||||
@@ -165,11 +171,81 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/* IR LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = IR */
|
/* IR LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = IR */
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
#define IR_LOGINFO_CODE_UNUSED1 (0x00010000)
|
#define IR_LOGINFO_RAID_ACTION_ERROR (0x00010000)
|
||||||
#define IR_LOGINFO_CODE_UNUSED2 (0x00020000)
|
#define IR_LOGINFO_CODE_UNUSED2 (0x00020000)
|
||||||
|
|
||||||
|
/* Amount of information passed down for Create Volume is too large */
|
||||||
|
#define IR_LOGINFO_VOLUME_CREATE_INVALID_LENGTH (0x00010001)
|
||||||
|
/* Creation of duplicate volume attempted (Bus/Target ID checked) */
|
||||||
|
#define IR_LOGINFO_VOLUME_CREATE_DUPLICATE (0x00010002)
|
||||||
|
/* Creation failed due to maximum number of supported volumes exceeded */
|
||||||
|
#define IR_LOGINFO_VOLUME_CREATE_NO_SLOTS (0x00010003)
|
||||||
|
/* Creation failed due to DMA error in trying to read from host */
|
||||||
|
#define IR_LOGINFO_VOLUME_CREATE_DMA_ERROR (0x00010004)
|
||||||
|
/* Creation failed due to invalid volume type passed down */
|
||||||
|
#define IR_LOGINFO_VOLUME_CREATE_INVALID_VOLUME_TYPE (0x00010005)
|
||||||
|
/* Creation failed due to error reading MFG Page 4 */
|
||||||
|
#define IR_LOGINFO_VOLUME_MFG_PAGE4_ERROR (0x00010006)
|
||||||
|
/* Creation failed when trying to create internal structures */
|
||||||
|
#define IR_LOGINFO_VOLUME_INTERNAL_CONFIG_STRUCTURE_ERROR (0x00010007)
|
||||||
|
|
||||||
|
/* Activation failed due to trying to activate an already active volume */
|
||||||
|
#define IR_LOGINFO_VOLUME_ACTIVATING_AN_ACTIVE_VOLUME (0x00010010)
|
||||||
|
/* Activation failed due to trying to active unsupported volume type */
|
||||||
|
#define IR_LOGINFO_VOLUME_ACTIVATING_INVALID_VOLUME_TYPE (0x00010011)
|
||||||
|
/* Activation failed due to trying to active too many volumes */
|
||||||
|
#define IR_LOGINFO_VOLUME_ACTIVATING_TOO_MANY_VOLUMES (0x00010012)
|
||||||
|
/* Activation failed due to Volume ID in use already */
|
||||||
|
#define IR_LOGINFO_VOLUME_ACTIVATING_VOLUME_ID_IN_USE (0x00010013)
|
||||||
|
/* Activation failed call to activateVolume returned failure */
|
||||||
|
#define IR_LOGINFO_VOLUME_ACTIVATE_VOLUME_FAILED (0x00010014)
|
||||||
|
/* Activation failed trying to import the volume */
|
||||||
|
#define IR_LOGINFO_VOLUME_ACTIVATING_IMPORT_VOLUME_FAILED (0x00010015)
|
||||||
|
|
||||||
|
/* Phys Disk failed, too many phys disks */
|
||||||
|
#define IR_LOGINFO_PHYSDISK_CREATE_TOO_MANY_DISKS (0x00010020)
|
||||||
|
/* Amount of information passed down for Create Pnysdisk is too large */
|
||||||
|
#define IR_LOGINFO_PHYSDISK_CREATE_INVALID_LENGTH (0x00010021)
|
||||||
|
/* Creation failed due to DMA error in trying to read from host */
|
||||||
|
#define IR_LOGINFO_PHYSDISK_CREATE_DMA_ERROR (0x00010022)
|
||||||
|
/* Creation failed due to invalid Bus TargetID passed down */
|
||||||
|
#define IR_LOGINFO_PHYSDISK_CREATE_BUS_TID_INVALID (0x00010023)
|
||||||
|
/* Creation failed due to error in creating RAID Phys Disk Config Page */
|
||||||
|
#define IR_LOGINFO_PHYSDISK_CREATE_CONFIG_PAGE_ERROR (0x00010024)
|
||||||
|
|
||||||
|
|
||||||
|
/* Compatibility Error : IR Disabled */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_RAID_DISABLED (0x00010030)
|
||||||
|
/* Compatibility Error : Inquiry Comand failed */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_INQUIRY_FAILED (0x00010031)
|
||||||
|
/* Compatibility Error : Device not direct access device */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_NOT_DIRECT_ACCESS (0x00010032)
|
||||||
|
/* Compatibility Error : Removable device found */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_REMOVABLE_FOUND (0x00010033)
|
||||||
|
/* Compatibility Error : Device SCSI Version not 2 or higher */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_NEED_SCSI_2_OR_HIGHER (0x00010034)
|
||||||
|
/* Compatibility Error : SATA device, 48 BIT LBA not supported */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_SATA_48BIT_LBA_NOT_SUPPORTED (0x00010035)
|
||||||
|
/* Compatibility Error : Device does not have 512 byte block sizes */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_DEVICE_NOT_512_BYTE_BLOCK (0x00010036)
|
||||||
|
/* Compatibility Error : Volume Type check failed */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_VOLUME_TYPE_CHECK_FAILED (0x00010037)
|
||||||
|
/* Compatibility Error : Volume Type is unsupported by FW */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_UNSUPPORTED_VOLUME_TYPE (0x00010038)
|
||||||
|
/* Compatibility Error : Disk drive too small for use in volume */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_DISK_TOO_SMALL (0x00010039)
|
||||||
|
/* Compatibility Error : Phys disk for Create Volume not found */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_PHYS_DISK_NOT_FOUND (0x0001003A)
|
||||||
|
/* Compatibility Error : membership count error, too many or too few disks for volume type */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_MEMBERSHIP_COUNT (0x0001003B)
|
||||||
|
/* Compatibility Error : Disk stripe sizes must be 64KB */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_NON_64K_STRIPE_SIZE (0x0001003C)
|
||||||
|
/* Compatibility Error : IME size limited to < 2TB */
|
||||||
|
#define IR_LOGINFO_COMPAT_ERROR_IME_VOL_NOT_CURRENTLY_SUPPORTED (0x0001003D)
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/* Defines for convienence */
|
/* Defines for convenience */
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
#define IOC_LOGINFO_PREFIX_IOP ((MPI_IOCLOGINFO_TYPE_SAS << MPI_IOCLOGINFO_TYPE_SHIFT) | IOC_LOGINFO_ORIGINATOR_IOP)
|
#define IOC_LOGINFO_PREFIX_IOP ((MPI_IOCLOGINFO_TYPE_SAS << MPI_IOCLOGINFO_TYPE_SHIFT) | IOC_LOGINFO_ORIGINATOR_IOP)
|
||||||
#define IOC_LOGINFO_PREFIX_PL ((MPI_IOCLOGINFO_TYPE_SAS << MPI_IOCLOGINFO_TYPE_SHIFT) | IOC_LOGINFO_ORIGINATOR_PL)
|
#define IOC_LOGINFO_PREFIX_PL ((MPI_IOCLOGINFO_TYPE_SAS << MPI_IOCLOGINFO_TYPE_SHIFT) | IOC_LOGINFO_ORIGINATOR_PL)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* Title: MPI Serial Attached SCSI structures and definitions
|
* Title: MPI Serial Attached SCSI structures and definitions
|
||||||
* Creation Date: August 19, 2004
|
* Creation Date: August 19, 2004
|
||||||
*
|
*
|
||||||
* mpi_sas.h Version: 01.05.02
|
* mpi_sas.h Version: 01.05.03
|
||||||
*
|
*
|
||||||
* Version History
|
* Version History
|
||||||
* ---------------
|
* ---------------
|
||||||
@@ -17,6 +17,10 @@
|
|||||||
* 08-30-05 01.05.02 Added DeviceInfo bit for SEP.
|
* 08-30-05 01.05.02 Added DeviceInfo bit for SEP.
|
||||||
* Added PrimFlags and Primitive field to SAS IO Unit
|
* Added PrimFlags and Primitive field to SAS IO Unit
|
||||||
* Control request, and added a new operation code.
|
* Control request, and added a new operation code.
|
||||||
|
* 03-27-06 01.05.03 Added Force Full Discovery, Transmit Port Select Signal,
|
||||||
|
* and Remove Device operations to SAS IO Unit Control.
|
||||||
|
* Added DevHandle field to SAS IO Unit Control request and
|
||||||
|
* reply.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -209,7 +213,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
|
|||||||
U8 Reserved1; /* 01h */
|
U8 Reserved1; /* 01h */
|
||||||
U8 ChainOffset; /* 02h */
|
U8 ChainOffset; /* 02h */
|
||||||
U8 Function; /* 03h */
|
U8 Function; /* 03h */
|
||||||
U16 Reserved2; /* 04h */
|
U16 DevHandle; /* 04h */
|
||||||
U8 Reserved3; /* 06h */
|
U8 Reserved3; /* 06h */
|
||||||
U8 MsgFlags; /* 07h */
|
U8 MsgFlags; /* 07h */
|
||||||
U32 MsgContext; /* 08h */
|
U32 MsgContext; /* 08h */
|
||||||
@@ -231,6 +235,9 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
|
|||||||
#define MPI_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08)
|
#define MPI_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08)
|
||||||
#define MPI_SAS_OP_MAP_CURRENT (0x09)
|
#define MPI_SAS_OP_MAP_CURRENT (0x09)
|
||||||
#define MPI_SAS_OP_SEND_PRIMITIVE (0x0A)
|
#define MPI_SAS_OP_SEND_PRIMITIVE (0x0A)
|
||||||
|
#define MPI_SAS_OP_FORCE_FULL_DISCOVERY (0x0B)
|
||||||
|
#define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C)
|
||||||
|
#define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE (0x0D)
|
||||||
|
|
||||||
/* values for the PrimFlags field */
|
/* values for the PrimFlags field */
|
||||||
#define MPI_SAS_PRIMFLAGS_SINGLE (0x08)
|
#define MPI_SAS_PRIMFLAGS_SINGLE (0x08)
|
||||||
@@ -245,7 +252,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REPLY
|
|||||||
U8 Reserved1; /* 01h */
|
U8 Reserved1; /* 01h */
|
||||||
U8 MsgLength; /* 02h */
|
U8 MsgLength; /* 02h */
|
||||||
U8 Function; /* 03h */
|
U8 Function; /* 03h */
|
||||||
U16 Reserved2; /* 04h */
|
U16 DevHandle; /* 04h */
|
||||||
U8 Reserved3; /* 06h */
|
U8 Reserved3; /* 06h */
|
||||||
U8 MsgFlags; /* 07h */
|
U8 MsgFlags; /* 07h */
|
||||||
U32 MsgContext; /* 08h */
|
U32 MsgContext; /* 08h */
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* Title: MPI Target mode messages and structures
|
* Title: MPI Target mode messages and structures
|
||||||
* Creation Date: June 22, 2000
|
* Creation Date: June 22, 2000
|
||||||
*
|
*
|
||||||
* mpi_targ.h Version: 01.05.05
|
* mpi_targ.h Version: 01.05.06
|
||||||
*
|
*
|
||||||
* Version History
|
* Version History
|
||||||
* ---------------
|
* ---------------
|
||||||
@@ -54,6 +54,7 @@
|
|||||||
* 02-22-05 01.05.03 Changed a comment.
|
* 02-22-05 01.05.03 Changed a comment.
|
||||||
* 03-11-05 01.05.04 Removed TargetAssistExtended Request.
|
* 03-11-05 01.05.04 Removed TargetAssistExtended Request.
|
||||||
* 06-24-05 01.05.05 Added TargetAssistExtended structures and defines.
|
* 06-24-05 01.05.05 Added TargetAssistExtended structures and defines.
|
||||||
|
* 03-27-06 01.05.06 Added a comment.
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -351,7 +352,7 @@ typedef struct _MSG_TARGET_ASSIST_REQUEST
|
|||||||
#define TARGET_ASSIST_FLAGS_CONFIRMED (0x08)
|
#define TARGET_ASSIST_FLAGS_CONFIRMED (0x08)
|
||||||
#define TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER (0x80)
|
#define TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER (0x80)
|
||||||
|
|
||||||
|
/* Standard Target Mode Reply message */
|
||||||
typedef struct _MSG_TARGET_ERROR_REPLY
|
typedef struct _MSG_TARGET_ERROR_REPLY
|
||||||
{
|
{
|
||||||
U16 Reserved; /* 00h */
|
U16 Reserved; /* 00h */
|
||||||
|
|||||||
@@ -368,20 +368,21 @@ static irqreturn_t
|
|||||||
mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
|
mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
|
||||||
{
|
{
|
||||||
MPT_ADAPTER *ioc = bus_id;
|
MPT_ADAPTER *ioc = bus_id;
|
||||||
u32 pa;
|
u32 pa = CHIPREG_READ32_dmasync(&ioc->chip->ReplyFifo);
|
||||||
|
|
||||||
|
if (pa == 0xFFFFFFFF)
|
||||||
|
return IRQ_NONE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Drain the reply FIFO!
|
* Drain the reply FIFO!
|
||||||
*/
|
*/
|
||||||
while (1) {
|
do {
|
||||||
pa = CHIPREG_READ32_dmasync(&ioc->chip->ReplyFifo);
|
if (pa & MPI_ADDRESS_REPLY_A_BIT)
|
||||||
if (pa == 0xFFFFFFFF)
|
|
||||||
return IRQ_HANDLED;
|
|
||||||
else if (pa & MPI_ADDRESS_REPLY_A_BIT)
|
|
||||||
mpt_reply(ioc, pa);
|
mpt_reply(ioc, pa);
|
||||||
else
|
else
|
||||||
mpt_turbo_reply(ioc, pa);
|
mpt_turbo_reply(ioc, pa);
|
||||||
}
|
pa = CHIPREG_READ32_dmasync(&ioc->chip->ReplyFifo);
|
||||||
|
} while (pa != 0xFFFFFFFF);
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
@@ -1219,31 +1220,25 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
port = psize = 0;
|
port = psize = 0;
|
||||||
for (ii=0; ii < DEVICE_COUNT_RESOURCE; ii++) {
|
for (ii=0; ii < DEVICE_COUNT_RESOURCE; ii++) {
|
||||||
if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) {
|
if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) {
|
||||||
|
if (psize)
|
||||||
|
continue;
|
||||||
/* Get I/O space! */
|
/* Get I/O space! */
|
||||||
port = pci_resource_start(pdev, ii);
|
port = pci_resource_start(pdev, ii);
|
||||||
psize = pci_resource_len(pdev,ii);
|
psize = pci_resource_len(pdev,ii);
|
||||||
} else {
|
} else {
|
||||||
|
if (msize)
|
||||||
|
continue;
|
||||||
/* Get memmap */
|
/* Get memmap */
|
||||||
mem_phys = pci_resource_start(pdev, ii);
|
mem_phys = pci_resource_start(pdev, ii);
|
||||||
msize = pci_resource_len(pdev,ii);
|
msize = pci_resource_len(pdev,ii);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ioc->mem_size = msize;
|
ioc->mem_size = msize;
|
||||||
|
|
||||||
if (ii == DEVICE_COUNT_RESOURCE) {
|
|
||||||
printk(KERN_ERR MYNAM ": ERROR - MPT adapter has no memory regions defined!\n");
|
|
||||||
kfree(ioc);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
dinitprintk((KERN_INFO MYNAM ": MPT adapter @ %lx, msize=%dd bytes\n", mem_phys, msize));
|
|
||||||
dinitprintk((KERN_INFO MYNAM ": (port i/o @ %lx, psize=%dd bytes)\n", port, psize));
|
|
||||||
|
|
||||||
mem = NULL;
|
mem = NULL;
|
||||||
/* Get logical ptr for PciMem0 space */
|
/* Get logical ptr for PciMem0 space */
|
||||||
/*mem = ioremap(mem_phys, msize);*/
|
/*mem = ioremap(mem_phys, msize);*/
|
||||||
mem = ioremap(mem_phys, 0x100);
|
mem = ioremap(mem_phys, msize);
|
||||||
if (mem == NULL) {
|
if (mem == NULL) {
|
||||||
printk(KERN_ERR MYNAM ": ERROR - Unable to map adapter memory!\n");
|
printk(KERN_ERR MYNAM ": ERROR - Unable to map adapter memory!\n");
|
||||||
kfree(ioc);
|
kfree(ioc);
|
||||||
@@ -1343,11 +1338,6 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
ioc->bus_type = SAS;
|
ioc->bus_type = SAS;
|
||||||
ioc->errata_flag_1064 = 1;
|
ioc->errata_flag_1064 = 1;
|
||||||
}
|
}
|
||||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1066) {
|
|
||||||
ioc->prod_name = "LSISAS1066";
|
|
||||||
ioc->bus_type = SAS;
|
|
||||||
ioc->errata_flag_1064 = 1;
|
|
||||||
}
|
|
||||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1068) {
|
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1068) {
|
||||||
ioc->prod_name = "LSISAS1068";
|
ioc->prod_name = "LSISAS1068";
|
||||||
ioc->bus_type = SAS;
|
ioc->bus_type = SAS;
|
||||||
@@ -1357,14 +1347,14 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
ioc->prod_name = "LSISAS1064E";
|
ioc->prod_name = "LSISAS1064E";
|
||||||
ioc->bus_type = SAS;
|
ioc->bus_type = SAS;
|
||||||
}
|
}
|
||||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1066E) {
|
|
||||||
ioc->prod_name = "LSISAS1066E";
|
|
||||||
ioc->bus_type = SAS;
|
|
||||||
}
|
|
||||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1068E) {
|
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1068E) {
|
||||||
ioc->prod_name = "LSISAS1068E";
|
ioc->prod_name = "LSISAS1068E";
|
||||||
ioc->bus_type = SAS;
|
ioc->bus_type = SAS;
|
||||||
}
|
}
|
||||||
|
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1078) {
|
||||||
|
ioc->prod_name = "LSISAS1078";
|
||||||
|
ioc->bus_type = SAS;
|
||||||
|
}
|
||||||
|
|
||||||
if (ioc->errata_flag_1064)
|
if (ioc->errata_flag_1064)
|
||||||
pci_disable_io_access(pdev);
|
pci_disable_io_access(pdev);
|
||||||
@@ -3184,6 +3174,37 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
|
|||||||
u32 diag1val = 0;
|
u32 diag1val = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (ioc->pcidev->device == MPI_MANUFACTPAGE_DEVID_SAS1078) {
|
||||||
|
drsprintk((MYIOC_s_WARN_FMT "%s: Doorbell=%p; 1078 reset "
|
||||||
|
"address=%p\n", ioc->name, __FUNCTION__,
|
||||||
|
&ioc->chip->Doorbell, &ioc->chip->Reset_1078));
|
||||||
|
CHIPREG_WRITE32(&ioc->chip->Reset_1078, 0x07);
|
||||||
|
if (sleepFlag == CAN_SLEEP)
|
||||||
|
msleep(1);
|
||||||
|
else
|
||||||
|
mdelay(1);
|
||||||
|
|
||||||
|
for (count = 0; count < 60; count ++) {
|
||||||
|
doorbell = CHIPREG_READ32(&ioc->chip->Doorbell);
|
||||||
|
doorbell &= MPI_IOC_STATE_MASK;
|
||||||
|
|
||||||
|
drsprintk((MYIOC_s_INFO_FMT
|
||||||
|
"looking for READY STATE: doorbell=%x"
|
||||||
|
" count=%d\n",
|
||||||
|
ioc->name, doorbell, count));
|
||||||
|
if (doorbell == MPI_IOC_STATE_READY) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* wait 1 sec */
|
||||||
|
if (sleepFlag == CAN_SLEEP)
|
||||||
|
msleep(1000);
|
||||||
|
else
|
||||||
|
mdelay(1000);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Clear any existing interrupts */
|
/* Clear any existing interrupts */
|
||||||
CHIPREG_WRITE32(&ioc->chip->IntStatus, 0);
|
CHIPREG_WRITE32(&ioc->chip->IntStatus, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -75,8 +75,8 @@
|
|||||||
#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR
|
#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MPT_LINUX_VERSION_COMMON "3.03.10"
|
#define MPT_LINUX_VERSION_COMMON "3.04.00"
|
||||||
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.10"
|
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.04.00"
|
||||||
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
|
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
|
||||||
|
|
||||||
#define show_mptmod_ver(s,ver) \
|
#define show_mptmod_ver(s,ver) \
|
||||||
@@ -307,7 +307,8 @@ typedef struct _SYSIF_REGS
|
|||||||
u32 HostIndex; /* 50 Host Index register */
|
u32 HostIndex; /* 50 Host Index register */
|
||||||
u32 Reserved4[15]; /* 54-8F */
|
u32 Reserved4[15]; /* 54-8F */
|
||||||
u32 Fubar; /* 90 For Fubar usage */
|
u32 Fubar; /* 90 For Fubar usage */
|
||||||
u32 Reserved5[27]; /* 94-FF */
|
u32 Reserved5[1050];/* 94-10F8 */
|
||||||
|
u32 Reset_1078; /* 10FC Reset 1078 */
|
||||||
} SYSIF_REGS;
|
} SYSIF_REGS;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -341,6 +342,7 @@ typedef struct _VirtTarget {
|
|||||||
u8 negoFlags; /* bit field, see above */
|
u8 negoFlags; /* bit field, see above */
|
||||||
u8 raidVolume; /* set, if RAID Volume */
|
u8 raidVolume; /* set, if RAID Volume */
|
||||||
u8 type; /* byte 0 of Inquiry data */
|
u8 type; /* byte 0 of Inquiry data */
|
||||||
|
u8 deleted; /* target in process of being removed */
|
||||||
u32 num_luns;
|
u32 num_luns;
|
||||||
u32 luns[8]; /* Max LUNs is 256 */
|
u32 luns[8]; /* Max LUNs is 256 */
|
||||||
} VirtTarget;
|
} VirtTarget;
|
||||||
@@ -629,10 +631,11 @@ typedef struct _MPT_ADAPTER
|
|||||||
struct mutex sas_discovery_mutex;
|
struct mutex sas_discovery_mutex;
|
||||||
u8 sas_discovery_runtime;
|
u8 sas_discovery_runtime;
|
||||||
u8 sas_discovery_ignore_events;
|
u8 sas_discovery_ignore_events;
|
||||||
|
u16 handle;
|
||||||
int sas_index; /* index refrencing */
|
int sas_index; /* index refrencing */
|
||||||
MPT_SAS_MGMT sas_mgmt;
|
MPT_SAS_MGMT sas_mgmt;
|
||||||
int num_ports;
|
int num_ports;
|
||||||
struct work_struct mptscsih_persistTask;
|
struct work_struct sas_persist_task;
|
||||||
|
|
||||||
struct work_struct fc_setup_reset_work;
|
struct work_struct fc_setup_reset_work;
|
||||||
struct list_head fc_rports;
|
struct list_head fc_rports;
|
||||||
@@ -641,6 +644,7 @@ typedef struct _MPT_ADAPTER
|
|||||||
struct work_struct fc_rescan_work;
|
struct work_struct fc_rescan_work;
|
||||||
char fc_rescan_work_q_name[KOBJ_NAME_LEN];
|
char fc_rescan_work_q_name[KOBJ_NAME_LEN];
|
||||||
struct workqueue_struct *fc_rescan_work_q;
|
struct workqueue_struct *fc_rescan_work_q;
|
||||||
|
u8 port_serial_number;
|
||||||
} MPT_ADAPTER;
|
} MPT_ADAPTER;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -892,6 +896,13 @@ typedef struct _mpt_sge {
|
|||||||
#define DBG_DUMP_REQUEST_FRAME_HDR(mfp)
|
#define DBG_DUMP_REQUEST_FRAME_HDR(mfp)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// debug sas wide ports
|
||||||
|
#ifdef MPT_DEBUG_SAS_WIDE
|
||||||
|
#define dsaswideprintk(x) printk x
|
||||||
|
#else
|
||||||
|
#define dsaswideprintk(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||||
|
|
||||||
|
|||||||
@@ -132,21 +132,21 @@ static struct scsi_host_template mptfc_driver_template = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static struct pci_device_id mptfc_pci_table[] = {
|
static struct pci_device_id mptfc_pci_table[] = {
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC909,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC909,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC919,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC929,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919X,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC919X,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929X,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC929X,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC939X,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC939X,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC949X,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC949X,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC949ES,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC949E,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{0} /* Terminating entry */
|
{0} /* Terminating entry */
|
||||||
};
|
};
|
||||||
|
|||||||
+727
-283
File diff suppressed because it is too large
Load Diff
@@ -775,9 +775,9 @@ static struct spi_function_template mptspi_transport_functions = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static struct pci_device_id mptspi_pci_table[] = {
|
static struct pci_device_id mptspi_pci_table[] = {
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_53C1030,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1030,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_1030_53C1035,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1035,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{0} /* Terminating entry */
|
{0} /* Terminating entry */
|
||||||
};
|
};
|
||||||
|
|||||||
+30
-26
@@ -173,6 +173,7 @@ STATIC int NCR_700_bus_reset(struct scsi_cmnd * SCpnt);
|
|||||||
STATIC int NCR_700_host_reset(struct scsi_cmnd * SCpnt);
|
STATIC int NCR_700_host_reset(struct scsi_cmnd * SCpnt);
|
||||||
STATIC void NCR_700_chip_setup(struct Scsi_Host *host);
|
STATIC void NCR_700_chip_setup(struct Scsi_Host *host);
|
||||||
STATIC void NCR_700_chip_reset(struct Scsi_Host *host);
|
STATIC void NCR_700_chip_reset(struct Scsi_Host *host);
|
||||||
|
STATIC int NCR_700_slave_alloc(struct scsi_device *SDpnt);
|
||||||
STATIC int NCR_700_slave_configure(struct scsi_device *SDpnt);
|
STATIC int NCR_700_slave_configure(struct scsi_device *SDpnt);
|
||||||
STATIC void NCR_700_slave_destroy(struct scsi_device *SDpnt);
|
STATIC void NCR_700_slave_destroy(struct scsi_device *SDpnt);
|
||||||
static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth);
|
static int NCR_700_change_queue_depth(struct scsi_device *SDpnt, int depth);
|
||||||
@@ -182,10 +183,6 @@ STATIC struct device_attribute *NCR_700_dev_attrs[];
|
|||||||
|
|
||||||
STATIC struct scsi_transport_template *NCR_700_transport_template = NULL;
|
STATIC struct scsi_transport_template *NCR_700_transport_template = NULL;
|
||||||
|
|
||||||
struct NCR_700_sense {
|
|
||||||
unsigned char cmnd[MAX_COMMAND_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
static char *NCR_700_phase[] = {
|
static char *NCR_700_phase[] = {
|
||||||
"",
|
"",
|
||||||
"after selection",
|
"after selection",
|
||||||
@@ -333,6 +330,7 @@ NCR_700_detect(struct scsi_host_template *tpnt,
|
|||||||
tpnt->use_clustering = ENABLE_CLUSTERING;
|
tpnt->use_clustering = ENABLE_CLUSTERING;
|
||||||
tpnt->slave_configure = NCR_700_slave_configure;
|
tpnt->slave_configure = NCR_700_slave_configure;
|
||||||
tpnt->slave_destroy = NCR_700_slave_destroy;
|
tpnt->slave_destroy = NCR_700_slave_destroy;
|
||||||
|
tpnt->slave_alloc = NCR_700_slave_alloc;
|
||||||
tpnt->change_queue_depth = NCR_700_change_queue_depth;
|
tpnt->change_queue_depth = NCR_700_change_queue_depth;
|
||||||
tpnt->change_queue_type = NCR_700_change_queue_type;
|
tpnt->change_queue_type = NCR_700_change_queue_type;
|
||||||
|
|
||||||
@@ -611,9 +609,10 @@ NCR_700_scsi_done(struct NCR_700_Host_Parameters *hostdata,
|
|||||||
struct NCR_700_command_slot *slot =
|
struct NCR_700_command_slot *slot =
|
||||||
(struct NCR_700_command_slot *)SCp->host_scribble;
|
(struct NCR_700_command_slot *)SCp->host_scribble;
|
||||||
|
|
||||||
NCR_700_unmap(hostdata, SCp, slot);
|
dma_unmap_single(hostdata->dev, slot->pCmd,
|
||||||
|
sizeof(SCp->cmnd), DMA_TO_DEVICE);
|
||||||
if (slot->flags == NCR_700_FLAG_AUTOSENSE) {
|
if (slot->flags == NCR_700_FLAG_AUTOSENSE) {
|
||||||
struct NCR_700_sense *sense = SCp->device->hostdata;
|
char *cmnd = NCR_700_get_sense_cmnd(SCp->device);
|
||||||
#ifdef NCR_700_DEBUG
|
#ifdef NCR_700_DEBUG
|
||||||
printk(" ORIGINAL CMD %p RETURNED %d, new return is %d sense is\n",
|
printk(" ORIGINAL CMD %p RETURNED %d, new return is %d sense is\n",
|
||||||
SCp, SCp->cmnd[7], result);
|
SCp, SCp->cmnd[7], result);
|
||||||
@@ -624,10 +623,9 @@ NCR_700_scsi_done(struct NCR_700_Host_Parameters *hostdata,
|
|||||||
/* restore the old result if the request sense was
|
/* restore the old result if the request sense was
|
||||||
* successful */
|
* successful */
|
||||||
if(result == 0)
|
if(result == 0)
|
||||||
result = sense->cmnd[7];
|
result = cmnd[7];
|
||||||
} else
|
} else
|
||||||
dma_unmap_single(hostdata->dev, slot->pCmd,
|
NCR_700_unmap(hostdata, SCp, slot);
|
||||||
sizeof(SCp->cmnd), DMA_TO_DEVICE);
|
|
||||||
|
|
||||||
free_slot(slot, hostdata);
|
free_slot(slot, hostdata);
|
||||||
#ifdef NCR_700_DEBUG
|
#ifdef NCR_700_DEBUG
|
||||||
@@ -969,14 +967,15 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp,
|
|||||||
status_byte(hostdata->status[0]) == COMMAND_TERMINATED) {
|
status_byte(hostdata->status[0]) == COMMAND_TERMINATED) {
|
||||||
struct NCR_700_command_slot *slot =
|
struct NCR_700_command_slot *slot =
|
||||||
(struct NCR_700_command_slot *)SCp->host_scribble;
|
(struct NCR_700_command_slot *)SCp->host_scribble;
|
||||||
if(SCp->cmnd[0] == REQUEST_SENSE) {
|
if(slot->flags == NCR_700_FLAG_AUTOSENSE) {
|
||||||
/* OOPS: bad device, returning another
|
/* OOPS: bad device, returning another
|
||||||
* contingent allegiance condition */
|
* contingent allegiance condition */
|
||||||
scmd_printk(KERN_ERR, SCp,
|
scmd_printk(KERN_ERR, SCp,
|
||||||
"broken device is looping in contingent allegiance: ignoring\n");
|
"broken device is looping in contingent allegiance: ignoring\n");
|
||||||
NCR_700_scsi_done(hostdata, SCp, hostdata->status[0]);
|
NCR_700_scsi_done(hostdata, SCp, hostdata->status[0]);
|
||||||
} else {
|
} else {
|
||||||
struct NCR_700_sense *sense = SCp->device->hostdata;
|
char *cmnd =
|
||||||
|
NCR_700_get_sense_cmnd(SCp->device);
|
||||||
#ifdef NCR_DEBUG
|
#ifdef NCR_DEBUG
|
||||||
scsi_print_command(SCp);
|
scsi_print_command(SCp);
|
||||||
printk(" cmd %p has status %d, requesting sense\n",
|
printk(" cmd %p has status %d, requesting sense\n",
|
||||||
@@ -994,21 +993,21 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp,
|
|||||||
sizeof(SCp->cmnd),
|
sizeof(SCp->cmnd),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
sense->cmnd[0] = REQUEST_SENSE;
|
cmnd[0] = REQUEST_SENSE;
|
||||||
sense->cmnd[1] = (SCp->device->lun & 0x7) << 5;
|
cmnd[1] = (SCp->device->lun & 0x7) << 5;
|
||||||
sense->cmnd[2] = 0;
|
cmnd[2] = 0;
|
||||||
sense->cmnd[3] = 0;
|
cmnd[3] = 0;
|
||||||
sense->cmnd[4] = sizeof(SCp->sense_buffer);
|
cmnd[4] = sizeof(SCp->sense_buffer);
|
||||||
sense->cmnd[5] = 0;
|
cmnd[5] = 0;
|
||||||
/* Here's a quiet hack: the
|
/* Here's a quiet hack: the
|
||||||
* REQUEST_SENSE command is six bytes,
|
* REQUEST_SENSE command is six bytes,
|
||||||
* so store a flag indicating that
|
* so store a flag indicating that
|
||||||
* this was an internal sense request
|
* this was an internal sense request
|
||||||
* and the original status at the end
|
* and the original status at the end
|
||||||
* of the command */
|
* of the command */
|
||||||
sense->cmnd[6] = NCR_700_INTERNAL_SENSE_MAGIC;
|
cmnd[6] = NCR_700_INTERNAL_SENSE_MAGIC;
|
||||||
sense->cmnd[7] = hostdata->status[0];
|
cmnd[7] = hostdata->status[0];
|
||||||
slot->pCmd = dma_map_single(hostdata->dev, sense->cmnd, sizeof(sense->cmnd), DMA_TO_DEVICE);
|
slot->pCmd = dma_map_single(hostdata->dev, cmnd, MAX_COMMAND_SIZE, DMA_TO_DEVICE);
|
||||||
slot->dma_handle = dma_map_single(hostdata->dev, SCp->sense_buffer, sizeof(SCp->sense_buffer), DMA_FROM_DEVICE);
|
slot->dma_handle = dma_map_single(hostdata->dev, SCp->sense_buffer, sizeof(SCp->sense_buffer), DMA_FROM_DEVICE);
|
||||||
slot->SG[0].ins = bS_to_host(SCRIPT_MOVE_DATA_IN | sizeof(SCp->sense_buffer));
|
slot->SG[0].ins = bS_to_host(SCRIPT_MOVE_DATA_IN | sizeof(SCp->sense_buffer));
|
||||||
slot->SG[0].pAddr = bS_to_host(slot->dma_handle);
|
slot->SG[0].pAddr = bS_to_host(slot->dma_handle);
|
||||||
@@ -1530,7 +1529,7 @@ NCR_700_intr(int irq, void *dev_id, struct pt_regs *regs)
|
|||||||
|
|
||||||
/* clear all the negotiated parameters */
|
/* clear all the negotiated parameters */
|
||||||
__shost_for_each_device(SDp, host)
|
__shost_for_each_device(SDp, host)
|
||||||
SDp->hostdata = NULL;
|
NCR_700_clear_flag(SDp, ~0);
|
||||||
|
|
||||||
/* clear all the slots and their pending commands */
|
/* clear all the slots and their pending commands */
|
||||||
for(i = 0; i < NCR_700_COMMAND_SLOTS_PER_HOST; i++) {
|
for(i = 0; i < NCR_700_COMMAND_SLOTS_PER_HOST; i++) {
|
||||||
@@ -2035,7 +2034,17 @@ NCR_700_set_offset(struct scsi_target *STp, int offset)
|
|||||||
spi_flags(STp) |= NCR_700_DEV_PRINT_SYNC_NEGOTIATION;
|
spi_flags(STp) |= NCR_700_DEV_PRINT_SYNC_NEGOTIATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STATIC int
|
||||||
|
NCR_700_slave_alloc(struct scsi_device *SDp)
|
||||||
|
{
|
||||||
|
SDp->hostdata = kzalloc(sizeof(struct NCR_700_Device_Parameters),
|
||||||
|
GFP_KERNEL);
|
||||||
|
|
||||||
|
if (!SDp->hostdata)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
STATIC int
|
STATIC int
|
||||||
NCR_700_slave_configure(struct scsi_device *SDp)
|
NCR_700_slave_configure(struct scsi_device *SDp)
|
||||||
@@ -2043,11 +2052,6 @@ NCR_700_slave_configure(struct scsi_device *SDp)
|
|||||||
struct NCR_700_Host_Parameters *hostdata =
|
struct NCR_700_Host_Parameters *hostdata =
|
||||||
(struct NCR_700_Host_Parameters *)SDp->host->hostdata[0];
|
(struct NCR_700_Host_Parameters *)SDp->host->hostdata[0];
|
||||||
|
|
||||||
SDp->hostdata = kmalloc(GFP_KERNEL, sizeof(struct NCR_700_sense));
|
|
||||||
|
|
||||||
if (!SDp->hostdata)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
/* to do here: allocate memory; build a queue_full list */
|
/* to do here: allocate memory; build a queue_full list */
|
||||||
if(SDp->tagged_supported) {
|
if(SDp->tagged_supported) {
|
||||||
scsi_set_tag_type(SDp, MSG_ORDERED_TAG);
|
scsi_set_tag_type(SDp, MSG_ORDERED_TAG);
|
||||||
|
|||||||
+23
-11
@@ -12,7 +12,7 @@
|
|||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
#include <scsi/scsi_device.h>
|
#include <scsi/scsi_device.h>
|
||||||
|
#include <scsi/scsi_cmnd.h>
|
||||||
|
|
||||||
/* Turn on for general debugging---too verbose for normal use */
|
/* Turn on for general debugging---too verbose for normal use */
|
||||||
#undef NCR_700_DEBUG
|
#undef NCR_700_DEBUG
|
||||||
@@ -76,11 +76,16 @@ struct NCR_700_SG_List {
|
|||||||
#define SCRIPT_RETURN 0x90080000
|
#define SCRIPT_RETURN 0x90080000
|
||||||
};
|
};
|
||||||
|
|
||||||
/* We use device->hostdata to store negotiated parameters. This is
|
struct NCR_700_Device_Parameters {
|
||||||
* supposed to be a pointer to a device private area, but we cannot
|
/* space for creating a request sense command. Really, except
|
||||||
* really use it as such since it will never be freed, so just use the
|
* for the annoying SCSI-2 requirement for LUN information in
|
||||||
* 32 bits to cram the information. The SYNC negotiation sequence looks
|
* cmnd[1], this could be in static storage */
|
||||||
* like:
|
unsigned char cmnd[MAX_COMMAND_SIZE];
|
||||||
|
__u8 depth;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* The SYNC negotiation sequence looks like:
|
||||||
*
|
*
|
||||||
* If DEV_NEGOTIATED_SYNC not set, tack and SDTR message on to the
|
* If DEV_NEGOTIATED_SYNC not set, tack and SDTR message on to the
|
||||||
* initial identify for the device and set DEV_BEGIN_SYNC_NEGOTATION
|
* initial identify for the device and set DEV_BEGIN_SYNC_NEGOTATION
|
||||||
@@ -98,19 +103,26 @@ struct NCR_700_SG_List {
|
|||||||
#define NCR_700_DEV_BEGIN_SYNC_NEGOTIATION (1<<17)
|
#define NCR_700_DEV_BEGIN_SYNC_NEGOTIATION (1<<17)
|
||||||
#define NCR_700_DEV_PRINT_SYNC_NEGOTIATION (1<<19)
|
#define NCR_700_DEV_PRINT_SYNC_NEGOTIATION (1<<19)
|
||||||
|
|
||||||
|
static inline char *NCR_700_get_sense_cmnd(struct scsi_device *SDp)
|
||||||
|
{
|
||||||
|
struct NCR_700_Device_Parameters *hostdata = SDp->hostdata;
|
||||||
|
|
||||||
|
return hostdata->cmnd;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
NCR_700_set_depth(struct scsi_device *SDp, __u8 depth)
|
NCR_700_set_depth(struct scsi_device *SDp, __u8 depth)
|
||||||
{
|
{
|
||||||
long l = (long)SDp->hostdata;
|
struct NCR_700_Device_Parameters *hostdata = SDp->hostdata;
|
||||||
|
|
||||||
l &= 0xffff00ff;
|
hostdata->depth = depth;
|
||||||
l |= 0xff00 & (depth << 8);
|
|
||||||
SDp->hostdata = (void *)l;
|
|
||||||
}
|
}
|
||||||
static inline __u8
|
static inline __u8
|
||||||
NCR_700_get_depth(struct scsi_device *SDp)
|
NCR_700_get_depth(struct scsi_device *SDp)
|
||||||
{
|
{
|
||||||
return ((((unsigned long)SDp->hostdata) & 0xff00)>>8);
|
struct NCR_700_Device_Parameters *hostdata = SDp->hostdata;
|
||||||
|
|
||||||
|
return hostdata->depth;
|
||||||
}
|
}
|
||||||
static inline int
|
static inline int
|
||||||
NCR_700_is_flag_set(struct scsi_device *SDp, __u32 flag)
|
NCR_700_is_flag_set(struct scsi_device *SDp, __u32 flag)
|
||||||
|
|||||||
@@ -92,31 +92,7 @@ static int aac_alloc_comm(struct aac_dev *dev, void **commaddr, unsigned long co
|
|||||||
init->AdapterFibsPhysicalAddress = cpu_to_le32((u32)phys);
|
init->AdapterFibsPhysicalAddress = cpu_to_le32((u32)phys);
|
||||||
init->AdapterFibsSize = cpu_to_le32(fibsize);
|
init->AdapterFibsSize = cpu_to_le32(fibsize);
|
||||||
init->AdapterFibAlign = cpu_to_le32(sizeof(struct hw_fib));
|
init->AdapterFibAlign = cpu_to_le32(sizeof(struct hw_fib));
|
||||||
/*
|
init->HostPhysMemPages = cpu_to_le32(AAC_MAX_HOSTPHYSMEMPAGES);
|
||||||
* number of 4k pages of host physical memory. The aacraid fw needs
|
|
||||||
* this number to be less than 4gb worth of pages. num_physpages is in
|
|
||||||
* system page units. New firmware doesn't have any issues with the
|
|
||||||
* mapping system, but older Firmware did, and had *troubles* dealing
|
|
||||||
* with the math overloading past 32 bits, thus we must limit this
|
|
||||||
* field.
|
|
||||||
*
|
|
||||||
* This assumes the memory is mapped zero->n, which isnt
|
|
||||||
* always true on real computers. It also has some slight problems
|
|
||||||
* with the GART on x86-64. I've btw never tried DMA from PCI space
|
|
||||||
* on this platform but don't be surprised if its problematic.
|
|
||||||
* [AK: something is very very wrong when a driver tests this symbol.
|
|
||||||
* Someone should figure out what the comment writer really meant here and fix
|
|
||||||
* the code. Or just remove that bad code. ]
|
|
||||||
*/
|
|
||||||
#ifndef CONFIG_IOMMU
|
|
||||||
if ((num_physpages << (PAGE_SHIFT - 12)) <= AAC_MAX_HOSTPHYSMEMPAGES) {
|
|
||||||
init->HostPhysMemPages =
|
|
||||||
cpu_to_le32(num_physpages << (PAGE_SHIFT-12));
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
init->HostPhysMemPages = cpu_to_le32(AAC_MAX_HOSTPHYSMEMPAGES);
|
|
||||||
}
|
|
||||||
|
|
||||||
init->InitFlags = 0;
|
init->InitFlags = 0;
|
||||||
if (dev->new_comm_interface) {
|
if (dev->new_comm_interface) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user