Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (166 commits) [SCSI] ibmvscsi: convert to use the data buffer accessors [SCSI] dc395x: convert to use the data buffer accessors [SCSI] ncr53c8xx: convert to use the data buffer accessors [SCSI] sym53c8xx: convert to use the data buffer accessors [SCSI] ppa: coding police and printk levels [SCSI] aic7xxx_old: remove redundant GFP_ATOMIC from kmalloc [SCSI] i2o: remove redundant GFP_ATOMIC from kmalloc from device.c [SCSI] remove the dead CYBERSTORMIII_SCSI option [SCSI] don't build scsi_dma_{map,unmap} for !HAS_DMA [SCSI] Clean up scsi_add_lun a bit [SCSI] 53c700: Remove printk, which triggers because of low scsi clock on SNI RMs [SCSI] sni_53c710: Cleanup [SCSI] qla4xxx: Fix underrun/overrun conditions [SCSI] megaraid_mbox: use mutex instead of semaphore [SCSI] aacraid: add 51245, 51645 and 52245 adapters to documentation. [SCSI] qla2xxx: update version to 8.02.00-k1. [SCSI] qla2xxx: add support for NPIV [SCSI] stex: use resid for xfer len information [SCSI] Add Brownie 1200U3P to blacklist [SCSI] scsi.c: convert to use the data buffer accessors ...
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
/* drivers/message/fusion/linux_compat.h */
|
||||
|
||||
#ifndef FUSION_LINUX_COMPAT_H
|
||||
#define FUSION_LINUX_COMPAT_H
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <scsi/scsi_device.h>
|
||||
|
||||
#endif /* _LINUX_COMPAT_H */
|
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2006 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2007 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi.h
|
||||
* Title: MPI Message independent structures and definitions
|
||||
* Creation Date: July 27, 2000
|
||||
*
|
||||
* mpi.h Version: 01.05.12
|
||||
* mpi.h Version: 01.05.13
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
@@ -78,6 +78,7 @@
|
||||
* 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
|
||||
* 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -108,7 +109,7 @@
|
||||
/* Note: The major versions of 0xe0 through 0xff are reserved */
|
||||
|
||||
/* versioning for this MPI header set */
|
||||
#define MPI_HEADER_VERSION_UNIT (0x0E)
|
||||
#define MPI_HEADER_VERSION_UNIT (0x10)
|
||||
#define MPI_HEADER_VERSION_DEV (0x00)
|
||||
#define MPI_HEADER_VERSION_UNIT_MASK (0xFF00)
|
||||
#define MPI_HEADER_VERSION_UNIT_SHIFT (8)
|
||||
|
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2006 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2007 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_cnfg.h
|
||||
* Title: MPI Config message, structures, and Pages
|
||||
* Creation Date: July 27, 2000
|
||||
*
|
||||
* mpi_cnfg.h Version: 01.05.13
|
||||
* mpi_cnfg.h Version: 01.05.15
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
@@ -293,6 +293,21 @@
|
||||
* Added more AccessStatus values for SAS Device Page 0.
|
||||
* Added bit for SATA Asynchronous Notification Support in
|
||||
* Flags field of SAS Device Page 0.
|
||||
* 02-28-07 01.05.14 Added ExtFlags field to Manufacturing Page 4.
|
||||
* Added Disable SMART Polling for CapabilitiesFlags of
|
||||
* IOC Page 6.
|
||||
* Added Disable SMART Polling to DeviceSettings of BIOS
|
||||
* Page 1.
|
||||
* Added Multi-Port Domain bit for DiscoveryStatus field
|
||||
* of SAS IO Unit Page.
|
||||
* Added Multi-Port Domain Illegal flag for SAS IO Unit
|
||||
* Page 1 AdditionalControlFlags field.
|
||||
* 05-24-07 01.05.15 Added Hide Physical Disks with Non-Integrated RAID
|
||||
* Metadata bit to Manufacturing Page 4 ExtFlags field.
|
||||
* Added Internal Connector to End Device Present bit to
|
||||
* Expander Page 0 Flags field.
|
||||
* Fixed define for
|
||||
* MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -639,7 +654,7 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_4
|
||||
U8 InfoSize1; /* 0Bh */
|
||||
U8 InquirySize; /* 0Ch */
|
||||
U8 Flags; /* 0Dh */
|
||||
U16 Reserved2; /* 0Eh */
|
||||
U16 ExtFlags; /* 0Eh */
|
||||
U8 InquiryData[56]; /* 10h */
|
||||
U32 ISVolumeSettings; /* 48h */
|
||||
U32 IMEVolumeSettings; /* 4Ch */
|
||||
@@ -658,7 +673,7 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_4
|
||||
} CONFIG_PAGE_MANUFACTURING_4, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_4,
|
||||
ManufacturingPage4_t, MPI_POINTER pManufacturingPage4_t;
|
||||
|
||||
#define MPI_MANUFACTURING4_PAGEVERSION (0x04)
|
||||
#define MPI_MANUFACTURING4_PAGEVERSION (0x05)
|
||||
|
||||
/* defines for the Flags field */
|
||||
#define MPI_MANPAGE4_FORCE_BAD_BLOCK_TABLE (0x80)
|
||||
@@ -670,6 +685,12 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_4
|
||||
#define MPI_MANPAGE4_IM_RESYNC_CACHE_ENABLE (0x02)
|
||||
#define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01)
|
||||
|
||||
/* defines for the ExtFlags field */
|
||||
#define MPI_MANPAGE4_EXTFLAGS_HIDE_NON_IR_METADATA (0x0008)
|
||||
#define MPI_MANPAGE4_EXTFLAGS_SAS_CACHE_DISABLE (0x0004)
|
||||
#define MPI_MANPAGE4_EXTFLAGS_SATA_CACHE_DISABLE (0x0002)
|
||||
#define MPI_MANPAGE4_EXTFLAGS_LEGACY_MODE (0x0001)
|
||||
|
||||
|
||||
#ifndef MPI_MANPAGE5_NUM_FORCEWWID
|
||||
#define MPI_MANPAGE5_NUM_FORCEWWID (1)
|
||||
@@ -781,7 +802,7 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_9
|
||||
} CONFIG_PAGE_MANUFACTURING_9, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_9,
|
||||
ManufacturingPage9_t, MPI_POINTER pManufacturingPage9_t;
|
||||
|
||||
#define MPI_MANUFACTURING6_PAGEVERSION (0x00)
|
||||
#define MPI_MANUFACTURING9_PAGEVERSION (0x00)
|
||||
|
||||
|
||||
typedef struct _CONFIG_PAGE_MANUFACTURING_10
|
||||
@@ -1138,6 +1159,8 @@ typedef struct _CONFIG_PAGE_IOC_6
|
||||
|
||||
/* IOC Page 6 Capabilities Flags */
|
||||
|
||||
#define MPI_IOCPAGE6_CAP_FLAGS_DISABLE_SMART_POLLING (0x00000008)
|
||||
|
||||
#define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006)
|
||||
#define MPI_IOCPAGE6_CAP_FLAGS_64MB_METADATA_SIZE (0x00000000)
|
||||
#define MPI_IOCPAGE6_CAP_FLAGS_512MB_METADATA_SIZE (0x00000002)
|
||||
@@ -1208,6 +1231,7 @@ typedef struct _CONFIG_PAGE_BIOS_1
|
||||
#define MPI_BIOSPAGE1_IOCSET_ALTERNATE_CHS (0x00000008)
|
||||
|
||||
/* values for the DeviceSettings field */
|
||||
#define MPI_BIOSPAGE1_DEVSET_DISABLE_SMART_POLLING (0x00000010)
|
||||
#define MPI_BIOSPAGE1_DEVSET_DISABLE_SEQ_LUN (0x00000008)
|
||||
#define MPI_BIOSPAGE1_DEVSET_DISABLE_RM_LUN (0x00000004)
|
||||
#define MPI_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN (0x00000002)
|
||||
@@ -2281,11 +2305,11 @@ typedef struct _CONFIG_PAGE_RAID_VOL_0
|
||||
typedef struct _CONFIG_PAGE_RAID_VOL_1
|
||||
{
|
||||
CONFIG_PAGE_HEADER Header; /* 00h */
|
||||
U8 VolumeID; /* 01h */
|
||||
U8 VolumeBus; /* 02h */
|
||||
U8 VolumeIOC; /* 03h */
|
||||
U8 Reserved0; /* 04h */
|
||||
U8 GUID[24]; /* 05h */
|
||||
U8 VolumeID; /* 04h */
|
||||
U8 VolumeBus; /* 05h */
|
||||
U8 VolumeIOC; /* 06h */
|
||||
U8 Reserved0; /* 07h */
|
||||
U8 GUID[24]; /* 08h */
|
||||
U8 Name[32]; /* 20h */
|
||||
U64 WWID; /* 40h */
|
||||
U32 Reserved1; /* 48h */
|
||||
@@ -2340,7 +2364,7 @@ typedef struct _RAID_PHYS_DISK0_STATUS
|
||||
} RAID_PHYS_DISK0_STATUS, MPI_POINTER PTR_RAID_PHYS_DISK0_STATUS,
|
||||
RaidPhysDiskStatus_t, MPI_POINTER pRaidPhysDiskStatus_t;
|
||||
|
||||
/* RAID Volume 2 IM Physical Disk DiskStatus flags */
|
||||
/* RAID Physical Disk PhysDiskStatus flags */
|
||||
|
||||
#define MPI_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC (0x01)
|
||||
#define MPI_PHYSDISK0_STATUS_FLAG_QUIESCED (0x02)
|
||||
@@ -2544,6 +2568,7 @@ typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
|
||||
#define MPI_SAS_IOUNIT0_DS_TABLE_LINK (0x00000400)
|
||||
#define MPI_SAS_IOUNIT0_DS_UNSUPPORTED_DEVICE (0x00000800)
|
||||
#define MPI_SAS_IOUNIT0_DS_MAX_SATA_TARGETS (0x00001000)
|
||||
#define MPI_SAS_IOUNIT0_DS_MULTI_PORT_DOMAIN (0x00002000)
|
||||
|
||||
|
||||
typedef struct _MPI_SAS_IO_UNIT1_PHY_DATA
|
||||
@@ -2607,6 +2632,7 @@ typedef struct _CONFIG_PAGE_SAS_IO_UNIT_1
|
||||
#define MPI_SAS_IOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
|
||||
|
||||
/* values for SAS IO Unit Page 1 AdditionalControlFlags */
|
||||
#define MPI_SAS_IOUNIT1_ACONTROL_MULTI_PORT_DOMAIN_ILLEGAL (0x0080)
|
||||
#define MPI_SAS_IOUNIT1_ACONTROL_SATA_ASYNCHROUNOUS_NOTIFICATION (0x0040)
|
||||
#define MPI_SAS_IOUNIT1_ACONTROL_HIDE_NONZERO_ATTACHED_PHY_IDENT (0x0020)
|
||||
#define MPI_SAS_IOUNIT1_ACONTROL_PORT_ENABLE_ONLY_SATA_LINK_RESET (0x0010)
|
||||
@@ -2734,6 +2760,7 @@ typedef struct _CONFIG_PAGE_SAS_EXPANDER_0
|
||||
#define MPI_SAS_EXPANDER0_DS_UNSUPPORTED_DEVICE (0x00000800)
|
||||
|
||||
/* values for SAS Expander Page 0 Flags field */
|
||||
#define MPI_SAS_EXPANDER0_FLAGS_CONNECTOR_END_DEVICE (0x04)
|
||||
#define MPI_SAS_EXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x02)
|
||||
#define MPI_SAS_EXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x01)
|
||||
|
||||
@@ -2774,7 +2801,7 @@ typedef struct _CONFIG_PAGE_SAS_EXPANDER_1
|
||||
/* see mpi_sas.h for values for SAS Expander Page 1 AttachedDeviceInfo values */
|
||||
|
||||
/* values for SAS Expander Page 1 DiscoveryInfo field */
|
||||
#define MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY DISABLED (0x04)
|
||||
#define MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED (0x04)
|
||||
#define MPI_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02)
|
||||
#define MPI_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01)
|
||||
|
||||
@@ -2895,11 +2922,11 @@ typedef struct _CONFIG_PAGE_SAS_PHY_0
|
||||
U8 AttachedPhyIdentifier; /* 16h */
|
||||
U8 Reserved2; /* 17h */
|
||||
U32 AttachedDeviceInfo; /* 18h */
|
||||
U8 ProgrammedLinkRate; /* 20h */
|
||||
U8 HwLinkRate; /* 21h */
|
||||
U8 ChangeCount; /* 22h */
|
||||
U8 Flags; /* 23h */
|
||||
U32 PhyInfo; /* 24h */
|
||||
U8 ProgrammedLinkRate; /* 1Ch */
|
||||
U8 HwLinkRate; /* 1Dh */
|
||||
U8 ChangeCount; /* 1Eh */
|
||||
U8 Flags; /* 1Fh */
|
||||
U32 PhyInfo; /* 20h */
|
||||
} CONFIG_PAGE_SAS_PHY_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_0,
|
||||
SasPhyPage0_t, MPI_POINTER pSasPhyPage0_t;
|
||||
|
||||
|
@@ -3,28 +3,28 @@
|
||||
MPI Header File Change History
|
||||
==============================
|
||||
|
||||
Copyright (c) 2000-2006 LSI Logic Corporation.
|
||||
Copyright (c) 2000-2007 LSI Logic Corporation.
|
||||
|
||||
---------------------------------------
|
||||
Header Set Release Version: 01.05.14
|
||||
Header Set Release Date: 10-11-06
|
||||
Header Set Release Version: 01.05.16
|
||||
Header Set Release Date: 05-24-07
|
||||
---------------------------------------
|
||||
|
||||
Filename Current version Prior version
|
||||
---------- --------------- -------------
|
||||
mpi.h 01.05.12 01.05.11
|
||||
mpi_ioc.h 01.05.12 01.05.11
|
||||
mpi_cnfg.h 01.05.13 01.05.12
|
||||
mpi_init.h 01.05.08 01.05.07
|
||||
mpi.h 01.05.13 01.05.12
|
||||
mpi_ioc.h 01.05.14 01.05.13
|
||||
mpi_cnfg.h 01.05.15 01.05.14
|
||||
mpi_init.h 01.05.09 01.05.09
|
||||
mpi_targ.h 01.05.06 01.05.06
|
||||
mpi_fc.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.03 01.05.03
|
||||
mpi_tool.h 01.05.03 01.05.03
|
||||
mpi_inb.h 01.05.01 01.05.01
|
||||
mpi_sas.h 01.05.04 01.05.03
|
||||
mpi_sas.h 01.05.04 01.05.04
|
||||
mpi_type.h 01.05.02 01.05.02
|
||||
mpi_history.txt 01.05.14 01.05.13
|
||||
mpi_history.txt 01.05.14 01.05.14
|
||||
|
||||
|
||||
* Date Version Description
|
||||
@@ -95,6 +95,7 @@ mpi.h
|
||||
* 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
|
||||
* 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_ioc.h
|
||||
@@ -191,6 +192,13 @@ mpi_ioc.h
|
||||
* data structure.
|
||||
* Added new ImageType values for FWDownload and FWUpload
|
||||
* requests.
|
||||
* 02-28-07 01.05.13 Added MPI_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT for SAS
|
||||
* Broadcast Event Data (replacing _RESERVED2).
|
||||
* For Discovery Error Event Data DiscoveryStatus field,
|
||||
* replaced _MULTPL_PATHS with _UNSUPPORTED_DEVICE and
|
||||
* added _MULTI_PORT_DOMAIN.
|
||||
* 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request.
|
||||
* Added Common Boot Block type to FWUpload Request.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_cnfg.h
|
||||
@@ -473,6 +481,21 @@ mpi_cnfg.h
|
||||
* Added more AccessStatus values for SAS Device Page 0.
|
||||
* Added bit for SATA Asynchronous Notification Support in
|
||||
* Flags field of SAS Device Page 0.
|
||||
* 02-28-07 01.05.14 Added ExtFlags field to Manufacturing Page 4.
|
||||
* Added Disable SMART Polling for CapabilitiesFlags of
|
||||
* IOC Page 6.
|
||||
* Added Disable SMART Polling to DeviceSettings of BIOS
|
||||
* Page 1.
|
||||
* Added Multi-Port Domain bit for DiscoveryStatus field
|
||||
* of SAS IO Unit Page.
|
||||
* Added Multi-Port Domain Illegal flag for SAS IO Unit
|
||||
* Page 1 AdditionalControlFlags field.
|
||||
* 05-24-07 01.05.15 Added Hide Physical Disks with Non-Integrated RAID
|
||||
* Metadata bit to Manufacturing Page 4 ExtFlags field.
|
||||
* Added Internal Connector to End Device Present bit to
|
||||
* Expander Page 0 Flags field.
|
||||
* Fixed define for
|
||||
* MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_init.h
|
||||
@@ -517,6 +540,8 @@ mpi_init.h
|
||||
* unique in the first 32 characters.
|
||||
* 03-27-06 01.05.07 Added Task Management type of Clear ACA.
|
||||
* 10-11-06 01.05.08 Shortened define for Task Management type of Clear ACA.
|
||||
* 02-28-07 01.05.09 Defined two new MsgFlags bits for SCSI Task Management
|
||||
* Request: Do Not Send Task IU and Soft Reset Option.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_targ.h
|
||||
@@ -571,7 +596,7 @@ mpi_fc.h
|
||||
* 11-02-00 01.01.01 Original release for post 1.0 work
|
||||
* 12-04-00 01.01.02 Added messages for Common Transport Send and
|
||||
* Primitive Send.
|
||||
* 01-09-01 01.01.03 Modified some of the new flags to have an MPI prefix
|
||||
* 01-09-01 01.01.03 Modifed some of the new flags to have an MPI prefix
|
||||
* and modified the FcPrimitiveSend flags.
|
||||
* 01-25-01 01.01.04 Move InitiatorIndex in LinkServiceRsp reply to a larger
|
||||
* field.
|
||||
@@ -634,6 +659,8 @@ mpi_raid.h
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* 01-15-05 01.05.02 Added defines for the two new RAID Actions for
|
||||
* _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE.
|
||||
* 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and
|
||||
* associated defines.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_tool.h
|
||||
@@ -682,7 +709,22 @@ mpi_type.h
|
||||
|
||||
mpi_history.txt Parts list history
|
||||
|
||||
Filename 01.05.13 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09
|
||||
Filename 01.05.15 01.05.15
|
||||
---------- -------- --------
|
||||
mpi.h 01.05.12 01.05.13
|
||||
mpi_ioc.h 01.05.13 01.05.14
|
||||
mpi_cnfg.h 01.05.14 01.05.15
|
||||
mpi_init.h 01.05.09 01.05.09
|
||||
mpi_targ.h 01.05.06 01.05.06
|
||||
mpi_fc.h 01.05.01 01.05.01
|
||||
mpi_lan.h 01.05.01 01.05.01
|
||||
mpi_raid.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_sas.h 01.05.04 01.05.04
|
||||
mpi_type.h 01.05.02 01.05.02
|
||||
|
||||
Filename 01.05.14 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09
|
||||
---------- -------- -------- -------- -------- -------- --------
|
||||
mpi.h 01.05.12 01.05.11 01.05.10 01.05.09 01.05.08 01.05.07
|
||||
mpi_ioc.h 01.05.12 01.05.11 01.05.10 01.05.09 01.05.09 01.05.08
|
||||
|
@@ -1,221 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2004 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_inb.h
|
||||
* Title: MPI Inband structures and definitions
|
||||
* Creation Date: September 30, 2003
|
||||
*
|
||||
* mpi_inb.h Version: 01.05.01
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
*
|
||||
* Date Version Description
|
||||
* -------- -------- ------------------------------------------------------
|
||||
* 05-11-04 01.03.01 Original release.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef MPI_INB_H
|
||||
#define MPI_INB_H
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* I n b a n d M e s s a g e s
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Inband Buffer Post Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_INBAND_BUFFER_POST_REQUEST
|
||||
{
|
||||
U8 Reserved1; /* 00h */
|
||||
U8 BufferCount; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved4; /* 0Ch */
|
||||
SGE_TRANS_SIMPLE_UNION SGL; /* 10h */
|
||||
} MSG_INBAND_BUFFER_POST_REQUEST, MPI_POINTER PTR_MSG_INBAND_BUFFER_POST_REQUEST,
|
||||
MpiInbandBufferPostRequest_t , MPI_POINTER pMpiInbandBufferPostRequest_t;
|
||||
|
||||
|
||||
typedef struct _WWN_FC_FORMAT
|
||||
{
|
||||
U64 NodeName; /* 00h */
|
||||
U64 PortName; /* 08h */
|
||||
} WWN_FC_FORMAT, MPI_POINTER PTR_WWN_FC_FORMAT,
|
||||
WwnFcFormat_t, MPI_POINTER pWwnFcFormat_t;
|
||||
|
||||
typedef struct _WWN_SAS_FORMAT
|
||||
{
|
||||
U64 WorldWideID; /* 00h */
|
||||
U32 Reserved1; /* 08h */
|
||||
U32 Reserved2; /* 0Ch */
|
||||
} WWN_SAS_FORMAT, MPI_POINTER PTR_WWN_SAS_FORMAT,
|
||||
WwnSasFormat_t, MPI_POINTER pWwnSasFormat_t;
|
||||
|
||||
typedef union _WWN_INBAND_FORMAT
|
||||
{
|
||||
WWN_FC_FORMAT Fc;
|
||||
WWN_SAS_FORMAT Sas;
|
||||
} WWN_INBAND_FORMAT, MPI_POINTER PTR_WWN_INBAND_FORMAT,
|
||||
WwnInbandFormat, MPI_POINTER pWwnInbandFormat;
|
||||
|
||||
|
||||
/* Inband Buffer Post reply message */
|
||||
|
||||
typedef struct _MSG_INBAND_BUFFER_POST_REPLY
|
||||
{
|
||||
U16 Reserved1; /* 00h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U16 Reserved4; /* 0Ch */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
U32 TransferLength; /* 14h */
|
||||
U32 TransactionContext; /* 18h */
|
||||
WWN_INBAND_FORMAT Wwn; /* 1Ch */
|
||||
U32 IOCIdentifier[4]; /* 2Ch */
|
||||
} MSG_INBAND_BUFFER_POST_REPLY, MPI_POINTER PTR_MSG_INBAND_BUFFER_POST_REPLY,
|
||||
MpiInbandBufferPostReply_t, MPI_POINTER pMpiInbandBufferPostReply_t;
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Inband Send Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_INBAND_SEND_REQUEST
|
||||
{
|
||||
U16 Reserved1; /* 00h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved4; /* 0Ch */
|
||||
WWN_INBAND_FORMAT Wwn; /* 10h */
|
||||
U32 Reserved5; /* 20h */
|
||||
SGE_IO_UNION SGL; /* 24h */
|
||||
} MSG_INBAND_SEND_REQUEST, MPI_POINTER PTR_MSG_INBAND_SEND_REQUEST,
|
||||
MpiInbandSendRequest_t , MPI_POINTER pMpiInbandSendRequest_t;
|
||||
|
||||
|
||||
/* Inband Send reply message */
|
||||
|
||||
typedef struct _MSG_INBAND_SEND_REPLY
|
||||
{
|
||||
U16 Reserved1; /* 00h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U16 Reserved4; /* 0Ch */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
U32 ResponseLength; /* 14h */
|
||||
} MSG_INBAND_SEND_REPLY, MPI_POINTER PTR_MSG_INBAND_SEND_REPLY,
|
||||
MpiInbandSendReply_t, MPI_POINTER pMpiInbandSendReply_t;
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Inband Response Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_INBAND_RSP_REQUEST
|
||||
{
|
||||
U16 Reserved1; /* 00h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved4; /* 0Ch */
|
||||
WWN_INBAND_FORMAT Wwn; /* 10h */
|
||||
U32 IOCIdentifier[4]; /* 20h */
|
||||
U32 ResponseLength; /* 30h */
|
||||
SGE_IO_UNION SGL; /* 34h */
|
||||
} MSG_INBAND_RSP_REQUEST, MPI_POINTER PTR_MSG_INBAND_RSP_REQUEST,
|
||||
MpiInbandRspRequest_t , MPI_POINTER pMpiInbandRspRequest_t;
|
||||
|
||||
|
||||
/* Inband Response reply message */
|
||||
|
||||
typedef struct _MSG_INBAND_RSP_REPLY
|
||||
{
|
||||
U16 Reserved1; /* 00h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U16 Reserved4; /* 0Ch */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
} MSG_INBAND_RSP_REPLY, MPI_POINTER PTR_MSG_INBAND_RSP_REPLY,
|
||||
MpiInbandRspReply_t, MPI_POINTER pMpiInbandRspReply_t;
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Inband Abort Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_INBAND_ABORT_REQUEST
|
||||
{
|
||||
U8 Reserved1; /* 00h */
|
||||
U8 AbortType; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved4; /* 0Ch */
|
||||
U32 ContextToAbort; /* 10h */
|
||||
} MSG_INBAND_ABORT_REQUEST, MPI_POINTER PTR_MSG_INBAND_ABORT_REQUEST,
|
||||
MpiInbandAbortRequest_t , MPI_POINTER pMpiInbandAbortRequest_t;
|
||||
|
||||
#define MPI_INBAND_ABORT_TYPE_ALL_BUFFERS (0x00)
|
||||
#define MPI_INBAND_ABORT_TYPE_EXACT_BUFFER (0x01)
|
||||
#define MPI_INBAND_ABORT_TYPE_SEND_REQUEST (0x02)
|
||||
#define MPI_INBAND_ABORT_TYPE_RESPONSE_REQUEST (0x03)
|
||||
|
||||
|
||||
/* Inband Abort reply message */
|
||||
|
||||
typedef struct _MSG_INBAND_ABORT_REPLY
|
||||
{
|
||||
U8 Reserved1; /* 00h */
|
||||
U8 AbortType; /* 01h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved2; /* 04h */
|
||||
U8 Reserved3; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U16 Reserved4; /* 0Ch */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
} MSG_INBAND_ABORT_REPLY, MPI_POINTER PTR_MSG_INBAND_ABORT_REPLY,
|
||||
MpiInbandAbortReply_t, MPI_POINTER pMpiInbandAbortReply_t;
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2006 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2007 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_init.h
|
||||
* Title: MPI initiator mode messages and structures
|
||||
* Creation Date: June 8, 2000
|
||||
*
|
||||
* mpi_init.h Version: 01.05.08
|
||||
* mpi_init.h Version: 01.05.09
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
@@ -54,6 +54,8 @@
|
||||
* unique in the first 32 characters.
|
||||
* 03-27-06 01.05.07 Added Task Management type of Clear ACA.
|
||||
* 10-11-06 01.05.08 Shortened define for Task Management type of Clear ACA.
|
||||
* 02-28-07 01.05.09 Defined two new MsgFlags bits for SCSI Task Management
|
||||
* Request: Do Not Send Task IU and Soft Reset Option.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -432,10 +434,14 @@ typedef struct _MSG_SCSI_TASK_MGMT
|
||||
#define MPI_SCSITASKMGMT_TASKTYPE_CLR_ACA (0x08)
|
||||
|
||||
/* MsgFlags bits */
|
||||
#define MPI_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x01)
|
||||
|
||||
#define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00)
|
||||
#define MPI_SCSITASKMGMT_MSGFLAGS_LIP_RESET_OPTION (0x02)
|
||||
#define MPI_SCSITASKMGMT_MSGFLAGS_LIPRESET_RESET_OPTION (0x04)
|
||||
|
||||
#define MPI_SCSITASKMGMT_MSGFLAGS_SOFT_RESET_OPTION (0x08)
|
||||
|
||||
/* SCSI Task Management Reply */
|
||||
typedef struct _MSG_SCSI_TASK_MGMT_REPLY
|
||||
{
|
||||
|
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2006 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2007 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_ioc.h
|
||||
* Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
|
||||
* Creation Date: August 11, 2000
|
||||
*
|
||||
* mpi_ioc.h Version: 01.05.12
|
||||
* mpi_ioc.h Version: 01.05.14
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
@@ -106,6 +106,13 @@
|
||||
* data structure.
|
||||
* Added new ImageType values for FWDownload and FWUpload
|
||||
* requests.
|
||||
* 02-28-07 01.05.13 Added MPI_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT for SAS
|
||||
* Broadcast Event Data (replacing _RESERVED2).
|
||||
* For Discovery Error Event Data DiscoveryStatus field,
|
||||
* replaced _MULTPL_PATHS with _UNSUPPORTED_DEVICE and
|
||||
* added _MULTI_PORT_DOMAIN.
|
||||
* 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request.
|
||||
* Added Common Boot Block type to FWUpload Request.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -792,7 +799,7 @@ typedef struct _EVENT_DATA_SAS_BROADCAST_PRIMITIVE
|
||||
|
||||
#define MPI_EVENT_PRIMITIVE_CHANGE (0x01)
|
||||
#define MPI_EVENT_PRIMITIVE_EXPANDER (0x03)
|
||||
#define MPI_EVENT_PRIMITIVE_RESERVED2 (0x04)
|
||||
#define MPI_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT (0x04)
|
||||
#define MPI_EVENT_PRIMITIVE_RESERVED3 (0x05)
|
||||
#define MPI_EVENT_PRIMITIVE_RESERVED4 (0x06)
|
||||
#define MPI_EVENT_PRIMITIVE_CHANGE0_RESERVED (0x07)
|
||||
@@ -857,8 +864,9 @@ typedef struct _EVENT_DATA_DISCOVERY_ERROR
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_SMP_CRC_ERROR (0x00000100)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_SUBTRACTIVE (0x00000200)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_TABLE_TO_TABLE (0x00000400)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_PATHS (0x00000800)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_UNSUPPORTED_DEVICE (0x00000800)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_MULTI_PORT_DOMAIN (0x00002000)
|
||||
|
||||
/* SAS SMP Error Event data */
|
||||
|
||||
@@ -990,6 +998,7 @@ typedef struct _MSG_FW_DOWNLOAD
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_CONFIG_1 (0x07)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_CONFIG_2 (0x08)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_MEGARAID (0x09)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
|
||||
|
||||
|
||||
typedef struct _FWDownloadTCSGE
|
||||
@@ -1038,17 +1047,18 @@ typedef struct _MSG_FW_UPLOAD
|
||||
} MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD,
|
||||
FWUpload_t, MPI_POINTER pFWUpload_t;
|
||||
|
||||
#define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM (0x00)
|
||||
#define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01)
|
||||
#define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
|
||||
#define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03)
|
||||
#define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04)
|
||||
#define MPI_FW_UPLOAD_ITYPE_FW_BACKUP (0x05)
|
||||
#define MPI_FW_UPLOAD_ITYPE_MANUFACTURING (0x06)
|
||||
#define MPI_FW_UPLOAD_ITYPE_CONFIG_1 (0x07)
|
||||
#define MPI_FW_UPLOAD_ITYPE_CONFIG_2 (0x08)
|
||||
#define MPI_FW_UPLOAD_ITYPE_MEGARAID (0x09)
|
||||
#define MPI_FW_UPLOAD_ITYPE_COMPLETE (0x0A)
|
||||
#define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM (0x00)
|
||||
#define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01)
|
||||
#define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
|
||||
#define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03)
|
||||
#define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04)
|
||||
#define MPI_FW_UPLOAD_ITYPE_FW_BACKUP (0x05)
|
||||
#define MPI_FW_UPLOAD_ITYPE_MANUFACTURING (0x06)
|
||||
#define MPI_FW_UPLOAD_ITYPE_CONFIG_1 (0x07)
|
||||
#define MPI_FW_UPLOAD_ITYPE_CONFIG_2 (0x08)
|
||||
#define MPI_FW_UPLOAD_ITYPE_MEGARAID (0x09)
|
||||
#define MPI_FW_UPLOAD_ITYPE_COMPLETE (0x0A)
|
||||
#define MPI_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
|
||||
|
||||
typedef struct _FWUploadTCSGE
|
||||
{
|
||||
|
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2005 LSI Logic Corporation.
|
||||
* Copyright (c) 2001-2007 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_raid.h
|
||||
* Title: MPI RAID message and structures
|
||||
* Creation Date: February 27, 2001
|
||||
*
|
||||
* mpi_raid.h Version: 01.05.02
|
||||
* mpi_raid.h Version: 01.05.03
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
@@ -32,6 +32,8 @@
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* 01-15-05 01.05.02 Added defines for the two new RAID Actions for
|
||||
* _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE.
|
||||
* 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and
|
||||
* associated defines.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -90,6 +92,7 @@ typedef struct _MSG_RAID_ACTION
|
||||
#define MPI_RAID_ACTION_INACTIVATE_VOLUME (0x12)
|
||||
#define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13)
|
||||
#define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14)
|
||||
#define MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15)
|
||||
|
||||
/* ActionDataWord defines for use with MPI_RAID_ACTION_CREATE_VOLUME action */
|
||||
#define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001)
|
||||
@@ -111,6 +114,10 @@ typedef struct _MSG_RAID_ACTION
|
||||
/* ActionDataWord defines for use with MPI_RAID_ACTION_SET_DATA_SCRUB_RATE action */
|
||||
#define MPI_RAID_ACTION_ADATA_DATA_SCRUB_RATE_MASK (0x000000FF)
|
||||
|
||||
/* ActionDataWord defines for use with MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE action */
|
||||
#define MPI_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x00000001)
|
||||
#define MPI_RAID_ACTION_ADATA_MASK_FW_UPDATE_TIMEOUT (0x0000FF00)
|
||||
#define MPI_RAID_ACTION_ADATA_SHIFT_FW_UPDATE_TIMEOUT (8)
|
||||
|
||||
|
||||
/* RAID Action reply message */
|
||||
|
@@ -6,7 +6,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
@@ -64,6 +64,7 @@
|
||||
#endif
|
||||
|
||||
#include "mptbase.h"
|
||||
#include "lsi/mpi_log_fc.h"
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
#define my_NAME "Fusion MPT base driver"
|
||||
@@ -6349,14 +6350,37 @@ ProcessEventNotification(MPT_ADAPTER *ioc, EventNotificationReply_t *pEventReply
|
||||
static void
|
||||
mpt_fc_log_info(MPT_ADAPTER *ioc, u32 log_info)
|
||||
{
|
||||
static char *subcl_str[8] = {
|
||||
"FCP Initiator", "FCP Target", "LAN", "MPI Message Layer",
|
||||
"FC Link", "Context Manager", "Invalid Field Offset", "State Change Info"
|
||||
};
|
||||
u8 subcl = (log_info >> 24) & 0x7;
|
||||
char *desc = "unknown";
|
||||
|
||||
printk(MYIOC_s_INFO_FMT "LogInfo(0x%08x): SubCl={%s}\n",
|
||||
ioc->name, log_info, subcl_str[subcl]);
|
||||
switch (log_info & 0xFF000000) {
|
||||
case MPI_IOCLOGINFO_FC_INIT_BASE:
|
||||
desc = "FCP Initiator";
|
||||
break;
|
||||
case MPI_IOCLOGINFO_FC_TARGET_BASE:
|
||||
desc = "FCP Target";
|
||||
break;
|
||||
case MPI_IOCLOGINFO_FC_LAN_BASE:
|
||||
desc = "LAN";
|
||||
break;
|
||||
case MPI_IOCLOGINFO_FC_MSG_BASE:
|
||||
desc = "MPI Message Layer";
|
||||
break;
|
||||
case MPI_IOCLOGINFO_FC_LINK_BASE:
|
||||
desc = "FC Link";
|
||||
break;
|
||||
case MPI_IOCLOGINFO_FC_CTX_BASE:
|
||||
desc = "Context Manager";
|
||||
break;
|
||||
case MPI_IOCLOGINFO_FC_INVALID_FIELD_BYTE_OFFSET:
|
||||
desc = "Invalid Field Offset";
|
||||
break;
|
||||
case MPI_IOCLOGINFO_FC_STATE_CHANGE:
|
||||
desc = "State Change Info";
|
||||
break;
|
||||
}
|
||||
|
||||
printk(MYIOC_s_INFO_FMT "LogInfo(0x%08x): SubClass={%s}, Value=(0x%06x)\n",
|
||||
ioc->name, log_info, desc, (log_info & 0xFFFFFF));
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@@ -6,7 +6,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
@@ -75,8 +75,8 @@
|
||||
#define COPYRIGHT "Copyright (c) 1999-2007 " MODULEAUTHOR
|
||||
#endif
|
||||
|
||||
#define MPT_LINUX_VERSION_COMMON "3.04.04"
|
||||
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.04.04"
|
||||
#define MPT_LINUX_VERSION_COMMON "3.04.05"
|
||||
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.04.05"
|
||||
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
|
||||
|
||||
#define show_mptmod_ver(s,ver) \
|
||||
|
@@ -5,7 +5,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@@ -6,7 +6,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
@@ -43,7 +43,6 @@
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
#include "linux_compat.h" /* linux-2.6 tweaks */
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
@@ -5,7 +5,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 2000-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@@ -5,7 +5,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 2000-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
* Copyright (c) 2005-2007 Dell
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
@@ -44,7 +44,6 @@
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
||||
#include "linux_compat.h" /* linux-2.6 tweaks */
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
@@ -260,30 +259,13 @@ mptscsih_AddSGE(MPT_ADAPTER *ioc, struct scsi_cmnd *SCpnt,
|
||||
/* Map the data portion, if any.
|
||||
* sges_left = 0 if no data transfer.
|
||||
*/
|
||||
if ( (sges_left = SCpnt->use_sg) ) {
|
||||
sges_left = pci_map_sg(ioc->pcidev,
|
||||
(struct scatterlist *) SCpnt->request_buffer,
|
||||
SCpnt->use_sg,
|
||||
SCpnt->sc_data_direction);
|
||||
if (sges_left == 0)
|
||||
return FAILED;
|
||||
} else if (SCpnt->request_bufflen) {
|
||||
SCpnt->SCp.dma_handle = pci_map_single(ioc->pcidev,
|
||||
SCpnt->request_buffer,
|
||||
SCpnt->request_bufflen,
|
||||
SCpnt->sc_data_direction);
|
||||
dsgprintk((MYIOC_s_INFO_FMT "SG: non-SG for %p, len=%d\n",
|
||||
ioc->name, SCpnt, SCpnt->request_bufflen));
|
||||
mptscsih_add_sge((char *) &pReq->SGL,
|
||||
0xD1000000|MPT_SGE_FLAGS_ADDRESSING|sgdir|SCpnt->request_bufflen,
|
||||
SCpnt->SCp.dma_handle);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
sges_left = scsi_dma_map(SCpnt);
|
||||
if (sges_left < 0)
|
||||
return FAILED;
|
||||
|
||||
/* Handle the SG case.
|
||||
*/
|
||||
sg = (struct scatterlist *) SCpnt->request_buffer;
|
||||
sg = scsi_sglist(SCpnt);
|
||||
sg_done = 0;
|
||||
sgeOffset = sizeof(SCSIIORequest_t) - sizeof(SGE_IO_UNION);
|
||||
chainSge = NULL;
|
||||
@@ -465,7 +447,12 @@ mptscsih_issue_sep_command(MPT_ADAPTER *ioc, VirtTarget *vtarget,
|
||||
MPT_FRAME_HDR *mf;
|
||||
SEPRequest_t *SEPMsg;
|
||||
|
||||
if (ioc->bus_type == FC)
|
||||
if (ioc->bus_type != SAS)
|
||||
return;
|
||||
|
||||
/* Not supported for hidden raid components
|
||||
*/
|
||||
if (vtarget->tflags & MPT_TARGET_FLAGS_RAID_COMPONENT)
|
||||
return;
|
||||
|
||||
if ((mf = mpt_get_msg_frame(ioc->InternalCtx, ioc)) == NULL) {
|
||||
@@ -662,7 +649,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
|
||||
scsi_state = pScsiReply->SCSIState;
|
||||
scsi_status = pScsiReply->SCSIStatus;
|
||||
xfer_cnt = le32_to_cpu(pScsiReply->TransferCount);
|
||||
sc->resid = sc->request_bufflen - xfer_cnt;
|
||||
scsi_set_resid(sc, scsi_bufflen(sc) - xfer_cnt);
|
||||
log_info = le32_to_cpu(pScsiReply->IOCLogInfo);
|
||||
|
||||
/*
|
||||
@@ -767,7 +754,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
|
||||
break;
|
||||
|
||||
case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH: /* 0x0049 */
|
||||
sc->resid = sc->request_bufflen - xfer_cnt;
|
||||
scsi_set_resid(sc, scsi_bufflen(sc) - xfer_cnt);
|
||||
if((xfer_cnt==0)||(sc->underflow > xfer_cnt))
|
||||
sc->result=DID_SOFT_ERROR << 16;
|
||||
else /* Sufficient data transfer occurred */
|
||||
@@ -816,7 +803,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
|
||||
break;
|
||||
|
||||
case MPI_IOCSTATUS_SCSI_DATA_OVERRUN: /* 0x0044 */
|
||||
sc->resid=0;
|
||||
scsi_set_resid(sc, 0);
|
||||
case MPI_IOCSTATUS_SCSI_RECOVERED_ERROR: /* 0x0040 */
|
||||
case MPI_IOCSTATUS_SUCCESS: /* 0x0000 */
|
||||
sc->result = (DID_OK << 16) | scsi_status;
|
||||
@@ -899,23 +886,18 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
|
||||
scsi_state, scsi_status, log_info));
|
||||
|
||||
dreplyprintk(("%s: [%d:%d:%d:%d] resid=%d "
|
||||
"bufflen=%d xfer_cnt=%d\n", __FUNCTION__,
|
||||
sc->device->host->host_no, sc->device->channel, sc->device->id,
|
||||
sc->device->lun, sc->resid, sc->request_bufflen,
|
||||
xfer_cnt));
|
||||
"bufflen=%d xfer_cnt=%d\n", __FUNCTION__,
|
||||
sc->device->host->host_no,
|
||||
sc->device->channel, sc->device->id,
|
||||
sc->device->lun, scsi_get_resid(sc),
|
||||
scsi_bufflen(sc), xfer_cnt));
|
||||
}
|
||||
#endif
|
||||
|
||||
} /* end of address reply case */
|
||||
|
||||
/* Unmap the DMA buffers, if any. */
|
||||
if (sc->use_sg) {
|
||||
pci_unmap_sg(ioc->pcidev, (struct scatterlist *) sc->request_buffer,
|
||||
sc->use_sg, sc->sc_data_direction);
|
||||
} else if (sc->request_bufflen) {
|
||||
pci_unmap_single(ioc->pcidev, sc->SCp.dma_handle,
|
||||
sc->request_bufflen, sc->sc_data_direction);
|
||||
}
|
||||
scsi_dma_unmap(sc);
|
||||
|
||||
sc->scsi_done(sc); /* Issue the command callback */
|
||||
|
||||
@@ -970,17 +952,8 @@ mptscsih_flush_running_cmds(MPT_SCSI_HOST *hd)
|
||||
/* Set status, free OS resources (SG DMA buffers)
|
||||
* Do OS callback
|
||||
*/
|
||||
if (SCpnt->use_sg) {
|
||||
pci_unmap_sg(ioc->pcidev,
|
||||
(struct scatterlist *) SCpnt->request_buffer,
|
||||
SCpnt->use_sg,
|
||||
SCpnt->sc_data_direction);
|
||||
} else if (SCpnt->request_bufflen) {
|
||||
pci_unmap_single(ioc->pcidev,
|
||||
SCpnt->SCp.dma_handle,
|
||||
SCpnt->request_bufflen,
|
||||
SCpnt->sc_data_direction);
|
||||
}
|
||||
scsi_dma_unmap(SCpnt);
|
||||
|
||||
SCpnt->result = DID_RESET << 16;
|
||||
SCpnt->host_scribble = NULL;
|
||||
|
||||
@@ -1023,14 +996,19 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
|
||||
mf = (SCSIIORequest_t *)MPT_INDEX_2_MFPTR(hd->ioc, ii);
|
||||
if (mf == NULL)
|
||||
continue;
|
||||
/* If the device is a hidden raid component, then its
|
||||
* expected that the mf->function will be RAID_SCSI_IO
|
||||
*/
|
||||
if (vdevice->vtarget->tflags &
|
||||
MPT_TARGET_FLAGS_RAID_COMPONENT && mf->Function !=
|
||||
MPI_FUNCTION_RAID_SCSI_IO_PASSTHROUGH)
|
||||
continue;
|
||||
|
||||
int_to_scsilun(vdevice->lun, &lun);
|
||||
if ((mf->Bus != vdevice->vtarget->channel) ||
|
||||
(mf->TargetID != vdevice->vtarget->id) ||
|
||||
memcmp(lun.scsi_lun, mf->LUN, 8))
|
||||
continue;
|
||||
dsprintk(( "search_running: found (sc=%p, mf = %p) "
|
||||
"channel %d id %d, lun %d \n", hd->ScsiLookup[ii],
|
||||
mf, mf->Bus, mf->TargetID, vdevice->lun));
|
||||
|
||||
/* Cleanup
|
||||
*/
|
||||
@@ -1039,19 +1017,12 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
|
||||
mpt_free_msg_frame(hd->ioc, (MPT_FRAME_HDR *)mf);
|
||||
if ((unsigned char *)mf != sc->host_scribble)
|
||||
continue;
|
||||
if (sc->use_sg) {
|
||||
pci_unmap_sg(hd->ioc->pcidev,
|
||||
(struct scatterlist *) sc->request_buffer,
|
||||
sc->use_sg,
|
||||
sc->sc_data_direction);
|
||||
} else if (sc->request_bufflen) {
|
||||
pci_unmap_single(hd->ioc->pcidev,
|
||||
sc->SCp.dma_handle,
|
||||
sc->request_bufflen,
|
||||
sc->sc_data_direction);
|
||||
}
|
||||
scsi_dma_unmap(sc);
|
||||
sc->host_scribble = NULL;
|
||||
sc->result = DID_NO_CONNECT << 16;
|
||||
dsprintk(( "search_running: found (sc=%p, mf = %p) "
|
||||
"channel %d id %d, lun %d \n", sc, mf,
|
||||
vdevice->vtarget->channel, vdevice->vtarget->id, vdevice->lun));
|
||||
sc->scsi_done(sc);
|
||||
}
|
||||
}
|
||||
@@ -1380,10 +1351,10 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||
* will be no data transfer! GRRRRR...
|
||||
*/
|
||||
if (SCpnt->sc_data_direction == DMA_FROM_DEVICE) {
|
||||
datalen = SCpnt->request_bufflen;
|
||||
datalen = scsi_bufflen(SCpnt);
|
||||
scsidir = MPI_SCSIIO_CONTROL_READ; /* DATA IN (host<--ioc<--dev) */
|
||||
} else if (SCpnt->sc_data_direction == DMA_TO_DEVICE) {
|
||||
datalen = SCpnt->request_bufflen;
|
||||
datalen = scsi_bufflen(SCpnt);
|
||||
scsidir = MPI_SCSIIO_CONTROL_WRITE; /* DATA OUT (host-->ioc-->dev) */
|
||||
} else {
|
||||
datalen = 0;
|
||||
@@ -1768,20 +1739,45 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
|
||||
u32 ctx2abort;
|
||||
int scpnt_idx;
|
||||
int retval;
|
||||
VirtDevice *vdev;
|
||||
VirtDevice *vdevice;
|
||||
ulong sn = SCpnt->serial_number;
|
||||
MPT_ADAPTER *ioc;
|
||||
|
||||
/* If we can't locate our host adapter structure, return FAILED status.
|
||||
*/
|
||||
if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL) {
|
||||
SCpnt->result = DID_RESET << 16;
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
dfailprintk((KERN_INFO MYNAM ": mptscsih_abort: "
|
||||
"Can't locate host! (sc=%p)\n",
|
||||
SCpnt));
|
||||
dfailprintk((KERN_INFO MYNAM ": mptscsih_abort: Can't locate "
|
||||
"host! (sc=%p)\n", SCpnt));
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
ioc = hd->ioc;
|
||||
printk(MYIOC_s_INFO_FMT "attempting task abort! (sc=%p)\n",
|
||||
ioc->name, SCpnt);
|
||||
scsi_print_command(SCpnt);
|
||||
|
||||
vdevice = SCpnt->device->hostdata;
|
||||
if (!vdevice || !vdevice->vtarget) {
|
||||
dtmprintk((MYIOC_s_DEBUG_FMT "task abort: device has been "
|
||||
"deleted (sc=%p)\n", ioc->name, SCpnt));
|
||||
SCpnt->result = DID_NO_CONNECT << 16;
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
retval = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Task aborts are not supported for hidden raid components.
|
||||
*/
|
||||
if (vdevice->vtarget->tflags & MPT_TARGET_FLAGS_RAID_COMPONENT) {
|
||||
dtmprintk((MYIOC_s_DEBUG_FMT "task abort: hidden raid "
|
||||
"component (sc=%p)\n", ioc->name, SCpnt));
|
||||
SCpnt->result = DID_RESET << 16;
|
||||
retval = FAILED;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Find this command
|
||||
*/
|
||||
if ((scpnt_idx = SCPNT_TO_LOOKUP_IDX(SCpnt)) < 0) {
|
||||
@@ -1790,21 +1786,20 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
|
||||
*/
|
||||
SCpnt->result = DID_RESET << 16;
|
||||
dtmprintk((KERN_INFO MYNAM ": %s: mptscsih_abort: "
|
||||
"Command not in the active list! (sc=%p)\n",
|
||||
hd->ioc->name, SCpnt));
|
||||
return SUCCESS;
|
||||
"Command not in the active list! (sc=%p)\n", ioc->name,
|
||||
SCpnt));
|
||||
retval = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (hd->resetPending)
|
||||
return FAILED;
|
||||
if (hd->resetPending) {
|
||||
retval = FAILED;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (hd->timeouts < -1)
|
||||
hd->timeouts++;
|
||||
|
||||
printk(KERN_WARNING MYNAM ": %s: attempting task abort! (sc=%p)\n",
|
||||
hd->ioc->name, SCpnt);
|
||||
scsi_print_command(SCpnt);
|
||||
|
||||
/* Most important! Set TaskMsgContext to SCpnt's MsgContext!
|
||||
* (the IO to be ABORT'd)
|
||||
*
|
||||
@@ -1817,18 +1812,17 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
|
||||
|
||||
hd->abortSCpnt = SCpnt;
|
||||
|
||||
vdev = SCpnt->device->hostdata;
|
||||
retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK,
|
||||
vdev->vtarget->channel, vdev->vtarget->id, vdev->lun,
|
||||
ctx2abort, mptscsih_get_tm_timeout(hd->ioc));
|
||||
vdevice->vtarget->channel, vdevice->vtarget->id, vdevice->lun,
|
||||
ctx2abort, mptscsih_get_tm_timeout(ioc));
|
||||
|
||||
if (SCPNT_TO_LOOKUP_IDX(SCpnt) == scpnt_idx &&
|
||||
SCpnt->serial_number == sn)
|
||||
retval = FAILED;
|
||||
|
||||
printk (KERN_WARNING MYNAM ": %s: task abort: %s (sc=%p)\n",
|
||||
hd->ioc->name,
|
||||
((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
|
||||
out:
|
||||
printk(MYIOC_s_INFO_FMT "task abort: %s (sc=%p)\n",
|
||||
ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
|
||||
|
||||
if (retval == 0)
|
||||
return SUCCESS;
|
||||
@@ -1850,32 +1844,47 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)
|
||||
{
|
||||
MPT_SCSI_HOST *hd;
|
||||
int retval;
|
||||
VirtDevice *vdev;
|
||||
VirtDevice *vdevice;
|
||||
MPT_ADAPTER *ioc;
|
||||
|
||||
/* If we can't locate our host adapter structure, return FAILED status.
|
||||
*/
|
||||
if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
|
||||
dtmprintk((KERN_INFO MYNAM ": mptscsih_dev_reset: "
|
||||
"Can't locate host! (sc=%p)\n",
|
||||
SCpnt));
|
||||
dtmprintk((KERN_INFO MYNAM ": mptscsih_dev_reset: Can't "
|
||||
"locate host! (sc=%p)\n", SCpnt));
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
if (hd->resetPending)
|
||||
return FAILED;
|
||||
|
||||
printk(KERN_WARNING MYNAM ": %s: attempting target reset! (sc=%p)\n",
|
||||
hd->ioc->name, SCpnt);
|
||||
ioc = hd->ioc;
|
||||
printk(MYIOC_s_INFO_FMT "attempting target reset! (sc=%p)\n",
|
||||
ioc->name, SCpnt);
|
||||
scsi_print_command(SCpnt);
|
||||
|
||||
vdev = SCpnt->device->hostdata;
|
||||
retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
|
||||
vdev->vtarget->channel, vdev->vtarget->id,
|
||||
0, 0, mptscsih_get_tm_timeout(hd->ioc));
|
||||
if (hd->resetPending) {
|
||||
retval = FAILED;
|
||||
goto out;
|
||||
}
|
||||
|
||||
printk (KERN_WARNING MYNAM ": %s: target reset: %s (sc=%p)\n",
|
||||
hd->ioc->name,
|
||||
((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
|
||||
vdevice = SCpnt->device->hostdata;
|
||||
if (!vdevice || !vdevice->vtarget) {
|
||||
retval = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Target reset to hidden raid component is not supported
|
||||
*/
|
||||
if (vdevice->vtarget->tflags & MPT_TARGET_FLAGS_RAID_COMPONENT) {
|
||||
retval = FAILED;
|
||||
goto out;
|
||||
}
|
||||
|
||||
retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
|
||||
vdevice->vtarget->channel, vdevice->vtarget->id, 0, 0,
|
||||
mptscsih_get_tm_timeout(ioc));
|
||||
|
||||
out:
|
||||
printk (MYIOC_s_INFO_FMT "target reset: %s (sc=%p)\n",
|
||||
ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
|
||||
|
||||
if (retval == 0)
|
||||
return SUCCESS;
|
||||
@@ -1899,18 +1908,19 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
|
||||
MPT_SCSI_HOST *hd;
|
||||
int retval;
|
||||
VirtDevice *vdev;
|
||||
MPT_ADAPTER *ioc;
|
||||
|
||||
/* If we can't locate our host adapter structure, return FAILED status.
|
||||
*/
|
||||
if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
|
||||
dtmprintk((KERN_INFO MYNAM ": mptscsih_bus_reset: "
|
||||
"Can't locate host! (sc=%p)\n",
|
||||
SCpnt ) );
|
||||
dtmprintk((KERN_INFO MYNAM ": mptscsih_bus_reset: Can't "
|
||||
"locate host! (sc=%p)\n", SCpnt ));
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
printk(KERN_WARNING MYNAM ": %s: attempting bus reset! (sc=%p)\n",
|
||||
hd->ioc->name, SCpnt);
|
||||
ioc = hd->ioc;
|
||||
printk(MYIOC_s_INFO_FMT "attempting bus reset! (sc=%p)\n",
|
||||
ioc->name, SCpnt);
|
||||
scsi_print_command(SCpnt);
|
||||
|
||||
if (hd->timeouts < -1)
|
||||
@@ -1918,11 +1928,10 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
|
||||
|
||||
vdev = SCpnt->device->hostdata;
|
||||
retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS,
|
||||
vdev->vtarget->channel, 0, 0, 0, mptscsih_get_tm_timeout(hd->ioc));
|
||||
vdev->vtarget->channel, 0, 0, 0, mptscsih_get_tm_timeout(ioc));
|
||||
|
||||
printk (KERN_WARNING MYNAM ": %s: bus reset: %s (sc=%p)\n",
|
||||
hd->ioc->name,
|
||||
((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
|
||||
printk(MYIOC_s_INFO_FMT "bus reset: %s (sc=%p)\n",
|
||||
ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
|
||||
|
||||
if (retval == 0)
|
||||
return SUCCESS;
|
||||
@@ -1943,37 +1952,38 @@ int
|
||||
mptscsih_host_reset(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
MPT_SCSI_HOST * hd;
|
||||
int status = SUCCESS;
|
||||
int retval;
|
||||
MPT_ADAPTER *ioc;
|
||||
|
||||
/* If we can't locate the host to reset, then we failed. */
|
||||
if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
|
||||
dtmprintk( ( KERN_INFO MYNAM ": mptscsih_host_reset: "
|
||||
"Can't locate host! (sc=%p)\n",
|
||||
SCpnt ) );
|
||||
dtmprintk( ( KERN_INFO MYNAM ": mptscsih_host_reset: Can't "
|
||||
"locate host! (sc=%p)\n", SCpnt));
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
printk(KERN_WARNING MYNAM ": %s: Attempting host reset! (sc=%p)\n",
|
||||
hd->ioc->name, SCpnt);
|
||||
ioc = hd->ioc;
|
||||
printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n",
|
||||
ioc->name, SCpnt);
|
||||
|
||||
/* If our attempts to reset the host failed, then return a failed
|
||||
* status. The host will be taken off line by the SCSI mid-layer.
|
||||
*/
|
||||
if (mpt_HardResetHandler(hd->ioc, CAN_SLEEP) < 0){
|
||||
status = FAILED;
|
||||
if (mpt_HardResetHandler(hd->ioc, CAN_SLEEP) < 0) {
|
||||
retval = FAILED;
|
||||
} else {
|
||||
/* Make sure TM pending is cleared and TM state is set to
|
||||
* NONE.
|
||||
*/
|
||||
retval = 0;
|
||||
hd->tmPending = 0;
|
||||
hd->tmState = TM_STATE_NONE;
|
||||
}
|
||||
|
||||
dtmprintk( ( KERN_INFO MYNAM ": mptscsih_host_reset: "
|
||||
"Status = %s\n",
|
||||
(status == SUCCESS) ? "SUCCESS" : "FAILED" ) );
|
||||
printk(MYIOC_s_INFO_FMT "host reset: %s (sc=%p)\n",
|
||||
ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
|
||||
|
||||
return status;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
@@ -3150,6 +3160,16 @@ mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
|
||||
{
|
||||
INTERNAL_CMD iocmd;
|
||||
|
||||
/* Ignore hidden raid components, this is handled when the command
|
||||
* is sent to the volume
|
||||
*/
|
||||
if (vdevice->vtarget->tflags & MPT_TARGET_FLAGS_RAID_COMPONENT)
|
||||
return;
|
||||
|
||||
if (vdevice->vtarget->type != TYPE_DISK || vdevice->vtarget->deleted ||
|
||||
!vdevice->configured_lun)
|
||||
return;
|
||||
|
||||
/* Following parameters will not change
|
||||
* in this routine.
|
||||
*/
|
||||
@@ -3164,9 +3184,7 @@ mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
|
||||
iocmd.id = vdevice->vtarget->id;
|
||||
iocmd.lun = vdevice->lun;
|
||||
|
||||
if ((vdevice->vtarget->type == TYPE_DISK) &&
|
||||
(vdevice->configured_lun))
|
||||
mptscsih_do_cmd(hd, &iocmd);
|
||||
mptscsih_do_cmd(hd, &iocmd);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(mptscsih_remove);
|
||||
|
@@ -6,7 +6,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2007 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsi.com)
|
||||
* (mailto:DL-MPTFusionLinux@lsi.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
@@ -44,7 +44,6 @@
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
||||
#include "linux_compat.h" /* linux-2.6 tweaks */
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
Reference in New Issue
Block a user