diff options
author | Moore, Eric Dean <Eric.Moore@lsil.com> | 2005-09-14 20:09:10 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-09-19 13:45:38 -0400 |
commit | 466544d8898fc87ed6e2e62ac14af7c50ab7a1a4 (patch) | |
tree | a23688bc1424a2af986482bac159768d625b5deb /drivers/message/fusion/mptbase.h | |
parent | 0c33b27deb93178f10778b3d2669af1674793cef (diff) |
[SCSI] fusion SAS support (mptsas driver) updates
Summary of Changes:
* splitting mpt_interrupt per Christophs suggestion
about a month ago
* rename ScsiCfgData to SpiCfgData structure,
then move all the raid related info into
new structure called RaidCfgData. This is
done because SAS supports RAID, as well as SPI,
so the raid stuff should be seperate.
* incorrect timeout calculation for cntdn
inside WaitForDoorbellAck and WaitForDoortbellInt
* add support for interpreting SAS Log Info
* Increase Event Log Size from 0xA to 0x32
* Fix bug in mptsas/mptfc/mptspi - when controller
has Initiator Mode Disabled, and only running in
TargetMode, the mptctl would panic when loading.
The fix is to return 0, instead of -ENODEV, in
SCSI LLD respective probe routines
* Fix bug in mptlan.c - driver will panic if
there is host reset, due to dev being set to
zero in mpt_lan_ioc_reset
* Fix's for SPI - Echo Buffer
* Several fix's in mptscsih_io_done - FCP Response
info, RESIDUAL_MISMATCH, Data Underrun, etc.
* Cleanup Error Handling - EH handlers,
mptscsih_flush_cmds, and zeroing out ScsiLookup
from mptscsih_qcmd
* Cleanup asyn event handling from
mptscsih -> mptscsih_event_process. Also
added support for SAS Persistent Table Full,
an asyn event
Signed-off-by: Eric Moore <Eric.Moore@lsil.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/message/fusion/mptbase.h')
-rw-r--r-- | drivers/message/fusion/mptbase.h | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h index bbd21d74ce5c..75105277e22f 100644 --- a/drivers/message/fusion/mptbase.h +++ b/drivers/message/fusion/mptbase.h | |||
@@ -77,8 +77,8 @@ | |||
77 | #define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR | 77 | #define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR |
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | #define MPT_LINUX_VERSION_COMMON "3.03.02" | 80 | #define MPT_LINUX_VERSION_COMMON "3.03.03" |
81 | #define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.02" | 81 | #define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.03" |
82 | #define WHAT_MAGIC_STRING "@" "(" "#" ")" | 82 | #define WHAT_MAGIC_STRING "@" "(" "#" ")" |
83 | 83 | ||
84 | #define show_mptmod_ver(s,ver) \ | 84 | #define show_mptmod_ver(s,ver) \ |
@@ -424,7 +424,7 @@ typedef struct _MPT_IOCTL { | |||
424 | /* | 424 | /* |
425 | * Event Structure and define | 425 | * Event Structure and define |
426 | */ | 426 | */ |
427 | #define MPTCTL_EVENT_LOG_SIZE (0x0000000A) | 427 | #define MPTCTL_EVENT_LOG_SIZE (0x000000032) |
428 | typedef struct _mpt_ioctl_events { | 428 | typedef struct _mpt_ioctl_events { |
429 | u32 event; /* Specified by define above */ | 429 | u32 event; /* Specified by define above */ |
430 | u32 eventContext; /* Index or counter */ | 430 | u32 eventContext; /* Index or counter */ |
@@ -452,16 +452,13 @@ typedef struct _mpt_ioctl_events { | |||
452 | #define MPT_SCSICFG_ALL_IDS 0x02 /* WriteSDP1 to all IDS */ | 452 | #define MPT_SCSICFG_ALL_IDS 0x02 /* WriteSDP1 to all IDS */ |
453 | /* #define MPT_SCSICFG_BLK_NEGO 0x10 WriteSDP1 with WDTR and SDTR disabled */ | 453 | /* #define MPT_SCSICFG_BLK_NEGO 0x10 WriteSDP1 with WDTR and SDTR disabled */ |
454 | 454 | ||
455 | typedef struct _ScsiCfgData { | 455 | typedef struct _SpiCfgData { |
456 | u32 PortFlags; | 456 | u32 PortFlags; |
457 | int *nvram; /* table of device NVRAM values */ | 457 | int *nvram; /* table of device NVRAM values */ |
458 | IOCPage2_t *pIocPg2; /* table of Raid Volumes */ | ||
459 | IOCPage3_t *pIocPg3; /* table of physical disks */ | ||
460 | IOCPage4_t *pIocPg4; /* SEP devices addressing */ | 458 | IOCPage4_t *pIocPg4; /* SEP devices addressing */ |
461 | dma_addr_t IocPg4_dma; /* Phys Addr of IOCPage4 data */ | 459 | dma_addr_t IocPg4_dma; /* Phys Addr of IOCPage4 data */ |
462 | int IocPg4Sz; /* IOCPage4 size */ | 460 | int IocPg4Sz; /* IOCPage4 size */ |
463 | u8 dvStatus[MPT_MAX_SCSI_DEVICES]; | 461 | u8 dvStatus[MPT_MAX_SCSI_DEVICES]; |
464 | int isRaid; /* bit field, 1 if RAID */ | ||
465 | u8 minSyncFactor; /* 0xFF if async */ | 462 | u8 minSyncFactor; /* 0xFF if async */ |
466 | u8 maxSyncOffset; /* 0 if async */ | 463 | u8 maxSyncOffset; /* 0 if async */ |
467 | u8 maxBusWidth; /* 0 if narrow, 1 if wide */ | 464 | u8 maxBusWidth; /* 0 if narrow, 1 if wide */ |
@@ -473,10 +470,14 @@ typedef struct _ScsiCfgData { | |||
473 | u8 dvScheduled; /* 1 if scheduled */ | 470 | u8 dvScheduled; /* 1 if scheduled */ |
474 | u8 forceDv; /* 1 to force DV scheduling */ | 471 | u8 forceDv; /* 1 to force DV scheduling */ |
475 | u8 noQas; /* Disable QAS for this adapter */ | 472 | u8 noQas; /* Disable QAS for this adapter */ |
476 | u8 Saf_Te; /* 1 to force all Processors as SAF-TE if Inquiry data length is too short to check for SAF-TE */ | 473 | u8 Saf_Te; /* 1 to force all Processors as |
474 | * SAF-TE if Inquiry data length | ||
475 | * is too short to check for SAF-TE | ||
476 | */ | ||
477 | u8 mpt_dv; /* command line option: enhanced=1, basic=0 */ | 477 | u8 mpt_dv; /* command line option: enhanced=1, basic=0 */ |
478 | u8 bus_reset; /* 1 to allow bus reset */ | ||
478 | u8 rsvd[1]; | 479 | u8 rsvd[1]; |
479 | } ScsiCfgData; | 480 | }SpiCfgData; |
480 | 481 | ||
481 | typedef struct _SasCfgData { | 482 | typedef struct _SasCfgData { |
482 | u8 ptClear; /* 1 to automatically clear the | 483 | u8 ptClear; /* 1 to automatically clear the |
@@ -486,6 +487,12 @@ typedef struct _SasCfgData { | |||
486 | */ | 487 | */ |
487 | }SasCfgData; | 488 | }SasCfgData; |
488 | 489 | ||
490 | typedef struct _RaidCfgData { | ||
491 | IOCPage2_t *pIocPg2; /* table of Raid Volumes */ | ||
492 | IOCPage3_t *pIocPg3; /* table of physical disks */ | ||
493 | int isRaid; /* bit field, 1 if RAID */ | ||
494 | }RaidCfgData; | ||
495 | |||
489 | /* | 496 | /* |
490 | * Adapter Structure - pci_dev specific. Maximum: MPT_MAX_ADAPTERS | 497 | * Adapter Structure - pci_dev specific. Maximum: MPT_MAX_ADAPTERS |
491 | */ | 498 | */ |
@@ -546,7 +553,8 @@ typedef struct _MPT_ADAPTER | |||
546 | struct pci_dev *pcidev; /* struct pci_dev pointer */ | 553 | struct pci_dev *pcidev; /* struct pci_dev pointer */ |
547 | u8 __iomem *memmap; /* mmap address */ | 554 | u8 __iomem *memmap; /* mmap address */ |
548 | struct Scsi_Host *sh; /* Scsi Host pointer */ | 555 | struct Scsi_Host *sh; /* Scsi Host pointer */ |
549 | ScsiCfgData spi_data; /* Scsi config. data */ | 556 | SpiCfgData spi_data; /* Scsi config. data */ |
557 | RaidCfgData raid_data; /* Raid config. data */ | ||
550 | SasCfgData sas_data; /* Sas config. data */ | 558 | SasCfgData sas_data; /* Sas config. data */ |
551 | MPT_IOCTL *ioctl; /* ioctl data pointer */ | 559 | MPT_IOCTL *ioctl; /* ioctl data pointer */ |
552 | struct proc_dir_entry *ioc_dentry; | 560 | struct proc_dir_entry *ioc_dentry; |