Commit a1ac7138 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds

[PATCH] mpt fusion update from vendor

parent 846ca6b2
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
* (mailto:sjralston1@netscape.net) * (mailto:sjralston1@netscape.net)
* (mailto:Pam.Delaney@lsil.com) * (mailto:Pam.Delaney@lsil.com)
* *
* $Id: mptbase.c,v 1.122 2002/10/03 13:10:11 pdelaney Exp $ * $Id: mptbase.c,v 1.123 2002/10/17 20:15:56 pdelaney Exp $
*/ */
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/* /*
...@@ -1156,7 +1156,7 @@ mpt_pci_scan(void) ...@@ -1156,7 +1156,7 @@ mpt_pci_scan(void)
dprintk((KERN_INFO MYNAM ": Checking for MPT adapters...\n")); dprintk((KERN_INFO MYNAM ": Checking for MPT adapters...\n"));
/* /*
* NOTE: The 929, 929X and 1030 will appear as 2 separate PCI devices, * NOTE: The 929, 929X, 1030 and 1035 will appear as 2 separate PCI devices,
* one for each channel. * one for each channel.
*/ */
pci_for_each_dev(pdev) { pci_for_each_dev(pdev) {
...@@ -1170,18 +1170,14 @@ mpt_pci_scan(void) ...@@ -1170,18 +1170,14 @@ mpt_pci_scan(void)
(pdev->device != MPI_MANUFACTPAGE_DEVICEID_FC929X) && (pdev->device != MPI_MANUFACTPAGE_DEVICEID_FC929X) &&
(pdev->device != MPI_MANUFACTPAGE_DEVICEID_FC919X) && (pdev->device != MPI_MANUFACTPAGE_DEVICEID_FC919X) &&
(pdev->device != MPI_MANUFACTPAGE_DEVID_53C1030) && (pdev->device != MPI_MANUFACTPAGE_DEVID_53C1030) &&
#if 0 (pdev->device != MPI_MANUFACTPAGE_DEVID_1030_53C1035) &&
/* FIXME! C103x family */
(pdev->device != MPI_MANUFACTPAGE_DEVID_53C1030_ZC) &&
(pdev->device != MPI_MANUFACTPAGE_DEVID_53C1035) &&
#endif
1) { 1) {
dprintk((KERN_INFO MYNAM ": Skipping LSI device=%04xh\n", pdev->device)); dprintk((KERN_INFO MYNAM ": Skipping LSI device=%04xh\n", pdev->device));
continue; continue;
} }
/* GRRRRR /* GRRRRR
* dual function devices (929, 929X, 1030) may be presented in Func 1,0 order, * dual function devices (929, 929X, 1030, 1035) may be presented in Func 1,0 order,
* but we'd really really rather have them in Func 0,1 order. * but we'd really really rather have them in Func 0,1 order.
* Do some kind of look ahead here... * Do some kind of look ahead here...
*/ */
...@@ -1445,15 +1441,24 @@ mpt_adapter_install(struct pci_dev *pdev) ...@@ -1445,15 +1441,24 @@ mpt_adapter_install(struct pci_dev *pdev)
ioc->chip_type = C1030; ioc->chip_type = C1030;
ioc->prod_name = "LSI53C1030"; ioc->prod_name = "LSI53C1030";
{ {
u8 revision;
/* 1030 Chip Fix. Disable Split transactions /* 1030 Chip Fix. Disable Split transactions
* for PCIX. Set bits 4 - 6 to zero. * for PCIX. Set bits 4 - 6 to zero if Rev < C0( = 8)
*/ */
u16 pcixcmd = 0; pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision);
pci_read_config_word(pdev, 0x6a, &pcixcmd); if (revision < 0x08) {
pcixcmd &= 0xFF8F; u16 pcixcmd = 0;
pci_write_config_word(pdev, 0x6a, pcixcmd); pci_read_config_word(pdev, 0x6a, &pcixcmd);
pcixcmd &= 0xFF8F;
pci_write_config_word(pdev, 0x6a, pcixcmd);
}
} }
} }
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_1030_53C1035) {
ioc->chip_type = C1035;
ioc->prod_name = "LSI53C1035";
}
sprintf(ioc->name, "ioc%d", ioc->id); sprintf(ioc->name, "ioc%d", ioc->id);
...@@ -1500,9 +1505,10 @@ mpt_adapter_install(struct pci_dev *pdev) ...@@ -1500,9 +1505,10 @@ mpt_adapter_install(struct pci_dev *pdev)
mpt_adapters[ioc->id] = ioc; mpt_adapters[ioc->id] = ioc;
/* NEW! 20010220 -sralston /* NEW! 20010220 -sralston
* Check for "bound ports" (929, 929X, 1030) to reduce redundant resets. * Check for "bound ports" (929, 929X, 1030, 1035) to reduce redundant resets.
*/ */
if ((ioc->chip_type == FC929) || (ioc->chip_type == C1030) || (ioc->chip_type == FC929X)) if ((ioc->chip_type == FC929) || (ioc->chip_type == C1030)
|| (ioc->chip_type == C1035) || (ioc->chip_type == FC929X))
mpt_detect_bound_ports(ioc, pdev); mpt_detect_bound_ports(ioc, pdev);
if ((r = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_BRINGUP, CAN_SLEEP)) != 0) { if ((r = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_BRINGUP, CAN_SLEEP)) != 0) {
...@@ -1746,7 +1752,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag) ...@@ -1746,7 +1752,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
/* /*
* mpt_detect_bound_ports - Search for PCI bus/dev_function * mpt_detect_bound_ports - Search for PCI bus/dev_function
* which matches PCI bus/dev_function (+/-1) for newly discovered 929, * which matches PCI bus/dev_function (+/-1) for newly discovered 929,
* 929X or 1030. * 929X, 1030 or 1035.
* @ioc: Pointer to MPT adapter structure * @ioc: Pointer to MPT adapter structure
* @pdev: Pointer to (struct pci_dev) structure * @pdev: Pointer to (struct pci_dev) structure
* *
...@@ -1806,8 +1812,7 @@ mpt_adapter_disable(MPT_ADAPTER *this, int freeup) ...@@ -1806,8 +1812,7 @@ mpt_adapter_disable(MPT_ADAPTER *this, int freeup)
/* Disable the FW */ /* Disable the FW */
state = mpt_GetIocState(this, 1); state = mpt_GetIocState(this, 1);
if (state == MPI_IOC_STATE_OPERATIONAL) { if (state == MPI_IOC_STATE_OPERATIONAL) {
if (SendIocReset(this, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, NO_SLEEP) != 0) SendIocReset(this, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, NO_SLEEP);
(void) KickStart(this, 1, NO_SLEEP);
} }
if (this->cached_fw != NULL) { if (this->cached_fw != NULL) {
...@@ -1819,7 +1824,6 @@ mpt_adapter_disable(MPT_ADAPTER *this, int freeup) ...@@ -1819,7 +1824,6 @@ mpt_adapter_disable(MPT_ADAPTER *this, int freeup)
} }
} }
/* Disable adapter interrupts! */ /* Disable adapter interrupts! */
CHIPREG_WRITE32(&this->chip->IntMask, 0xFFFFFFFF); CHIPREG_WRITE32(&this->chip->IntMask, 0xFFFFFFFF);
this->active = 0; this->active = 0;
...@@ -2291,9 +2295,6 @@ GetIocFacts(MPT_ADAPTER *ioc, int sleepFlag, int reason) ...@@ -2291,9 +2295,6 @@ GetIocFacts(MPT_ADAPTER *ioc, int sleepFlag, int reason)
ioc->reply_sz = ioc->req_sz; ioc->reply_sz = ioc->req_sz;
ioc->reply_depth = MIN(MPT_DEFAULT_REPLY_DEPTH, facts->ReplyQueueDepth); ioc->reply_depth = MIN(MPT_DEFAULT_REPLY_DEPTH, facts->ReplyQueueDepth);
/* 1030 - should we use a smaller DEFAULT_REPLY_DEPTH?
* FIX
*/
dprintk((MYIOC_s_INFO_FMT "reply_sz=%3d, reply_depth=%4d\n", dprintk((MYIOC_s_INFO_FMT "reply_sz=%3d, reply_depth=%4d\n",
ioc->name, ioc->reply_sz, ioc->reply_depth)); ioc->name, ioc->reply_sz, ioc->reply_depth));
dprintk((MYIOC_s_INFO_FMT "req_sz =%3d, req_depth =%4d\n", dprintk((MYIOC_s_INFO_FMT "req_sz =%3d, req_depth =%4d\n",
...@@ -2891,6 +2892,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, int sleepFlag) ...@@ -2891,6 +2892,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, int sleepFlag)
*/ */
diag0val = CHIPREG_READ32(&ioc->chip->Diagnostic); diag0val = CHIPREG_READ32(&ioc->chip->Diagnostic);
while ((diag0val & MPI_DIAG_DRWE) == 0) { while ((diag0val & MPI_DIAG_DRWE) == 0) {
CHIPREG_WRITE32(&ioc->chip->WriteSequence, 0xFF);
CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_1ST_KEY_VALUE); CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_1ST_KEY_VALUE);
CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_2ND_KEY_VALUE); CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_2ND_KEY_VALUE);
CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_3RD_KEY_VALUE); CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_3RD_KEY_VALUE);
...@@ -3126,6 +3128,18 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag) ...@@ -3126,6 +3128,18 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
int cnt = 0; int cnt = 0;
dprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name)); dprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name));
if ((int)ioc->chip_type > (int)FC929) {
/* Always issue a Msg Unit Reset first. This will clear some
* SCSI bus hang conditions.
*/
SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, sleepFlag);
if (sleepFlag == CAN_SLEEP) {
schedule_timeout(HZ);
} else {
mdelay (1000);
}
}
hard_reset_done = mpt_diag_reset(ioc, force, sleepFlag); hard_reset_done = mpt_diag_reset(ioc, force, sleepFlag);
if (hard_reset_done < 0) if (hard_reset_done < 0)
...@@ -5841,6 +5855,15 @@ fusion_exit(void) ...@@ -5841,6 +5855,15 @@ fusion_exit(void)
while (! Q_IS_EMPTY(&MptAdapters)) { while (! Q_IS_EMPTY(&MptAdapters)) {
this = MptAdapters.head; this = MptAdapters.head;
/* Disable interrupts! */
CHIPREG_WRITE32(&this->chip->IntMask, 0xFFFFFFFF);
this->active = 0;
/* Clear any lingering interrupt */
CHIPREG_WRITE32(&this->chip->IntStatus, 0);
Q_DEL_ITEM(this); Q_DEL_ITEM(this);
mpt_adapter_dispose(this); mpt_adapter_dispose(this);
} }
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* (mailto:sjralston1@netscape.net) * (mailto:sjralston1@netscape.net)
* (mailto:Pam.Delaney@lsil.com) * (mailto:Pam.Delaney@lsil.com)
* *
* $Id: mptbase.h,v 1.134 2002/10/03 13:10:12 pdelaney Exp $ * $Id: mptbase.h,v 1.136 2002/10/21 13:51:54 pdelaney Exp $
*/ */
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/* /*
...@@ -80,8 +80,8 @@ ...@@ -80,8 +80,8 @@
#define COPYRIGHT "Copyright (c) 1999-2002 " MODULEAUTHOR #define COPYRIGHT "Copyright (c) 1999-2002 " MODULEAUTHOR
#endif #endif
#define MPT_LINUX_VERSION_COMMON "2.02.01.07" #define MPT_LINUX_VERSION_COMMON "2.03.00.02"
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-2.02.01.07" #define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-2.03.00.02"
#define WHAT_MAGIC_STRING "@" "(" "#" ")" #define WHAT_MAGIC_STRING "@" "(" "#" ")"
#define show_mptmod_ver(s,ver) \ #define show_mptmod_ver(s,ver) \
...@@ -301,6 +301,7 @@ typedef enum { ...@@ -301,6 +301,7 @@ typedef enum {
FC919 = 0x0919, FC919 = 0x0919,
FC929 = 0x0929, FC929 = 0x0929,
C1030 = 0x1030, C1030 = 0x1030,
C1035 = 0x1035,
FCUNK = 0xFBAD FCUNK = 0xFBAD
} CHIP_TYPE; } CHIP_TYPE;
...@@ -368,6 +369,7 @@ typedef struct _ScsiCmndTracker { ...@@ -368,6 +369,7 @@ typedef struct _ScsiCmndTracker {
typedef struct _VirtDevice { typedef struct _VirtDevice {
struct _VirtDevice *forw; struct _VirtDevice *forw;
struct _VirtDevice *back; struct _VirtDevice *back;
struct scsi_device *device;
rwlock_t VdevLock; rwlock_t VdevLock;
int ref_cnt; int ref_cnt;
u8 tflags; u8 tflags;
...@@ -912,6 +914,10 @@ typedef struct _MPT_SCSI_HOST { ...@@ -912,6 +914,10 @@ typedef struct _MPT_SCSI_HOST {
MPT_FRAME_HDR *cmdPtr; /* Ptr to nonOS request */ MPT_FRAME_HDR *cmdPtr; /* Ptr to nonOS request */
struct scsi_cmnd *abortSCpnt; struct scsi_cmnd *abortSCpnt;
MPT_LOCAL_REPLY localReply; /* internal cmd reply struct */ MPT_LOCAL_REPLY localReply; /* internal cmd reply struct */
unsigned long hard_resets; /* driver forced bus resets count */
unsigned long soft_resets; /* fw/external bus resets count */
unsigned long timeouts; /* cmd timeouts */
ushort sel_timeout[MPT_MAX_FC_DEVICES];
} MPT_SCSI_HOST; } MPT_SCSI_HOST;
/* /*
......
This diff is collapsed.
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
* (mailto:sjralston1@netscape.net) * (mailto:sjralston1@netscape.net)
* (mailto:Pam.Delaney@lsil.com) * (mailto:Pam.Delaney@lsil.com)
* *
* $Id: mptctl.h,v 1.11 2002/10/03 13:10:13 pdelaney Exp $ * $Id: mptctl.h,v 1.12 2002/10/17 20:15:58 pdelaney Exp $
*/ */
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/* /*
...@@ -310,95 +310,91 @@ struct mpt_ioctl_command32 { ...@@ -310,95 +310,91 @@ struct mpt_ioctl_command32 {
#endif /*}*/ #endif /*}*/
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/* /*
* COMPAQ Specific IOCTL Defines and Structures * HP Specific IOCTL Defines and Structures
*/ */
#define CPQFCTS_IOC_MAGIC 'Z' #define CPQFCTS_IOC_MAGIC 'Z'
#define HP_IOC_MAGIC 'Z'
#define HP_GETHOSTINFO _IOR(HP_IOC_MAGIC, 20, hp_host_info_t)
#define HP_GETTARGETINFO _IOR(HP_IOC_MAGIC, 21, hp_target_info_t)
#define CPQFCTS_GETPCIINFO _IOR(CPQFCTS_IOC_MAGIC, 1, cpqfc_pci_info_struct) /* All HP IOCTLs must include this header
#define CPQFCTS_GETDRIVVER _IOR(CPQFCTS_IOC_MAGIC, 9, int)
#define CPQFCTS_CTLR_STATUS _IOR(CPQFCTS_IOC_MAGIC, 3, struct _cpqfc_ctlr_status)
#define CPQFCTS_SCSI_IOCTL_FC_TARGET_ADDRESS _IOR(CPQFCTS_IOC_MAGIC, 13, struct scsi_fctargaddress)
#define CPQFCTS_SCSI_PASSTHRU _IOWR(CPQFCTS_IOC_MAGIC, 11, VENDOR_IOCTL_REQ)
#if defined(__sparc__) && defined(__sparc_v9__)
#define CPQFCTS_SCSI_PASSTHRU32 _IOWR(CPQFCTS_IOC_MAGIC, 11, VENDOR_IOCTL_REQ32)
#endif
typedef struct {
unsigned short bus;
unsigned short bus_type;
unsigned short device_fn;
u32 board_id;
u32 slot_number;
unsigned short vendor_id;
unsigned short device_id;
unsigned short class_code;
unsigned short sub_vendor_id;
unsigned short sub_device_id;
u8 serial_number[81];
} cpqfc_pci_info_struct;
typedef struct scsi_fctargaddress {
unsigned int host_port_id;
u8 host_wwn[8]; /* WW Network Name */
} Scsi_FCTargAddress;
typedef struct _cpqfc_ctlr_status {
u32 status;
u32 offline_reason;
} cpqfc_ctlr_status;
/* Compaq SCSI I/O Passthru structures.
*/ */
#define MPT_COMPAQ_READ 0x26 typedef struct _hp_header {
#define MPT_COMPAQ_WRITE 0x27 unsigned int iocnum;
unsigned int host;
typedef struct { unsigned int channel;
int lc; /* controller number */ unsigned int id;
int node; /* node number */ unsigned int lun;
int ld; /* target logical id */ } hp_header_t;
u32 nexus;
void *argp; /*
} VENDOR_IOCTL_REQ; * Header:
* iocnum required (input)
#if defined(__KERNEL__) && defined(__sparc__) && defined(__sparc_v9__) /*{*/ * host ignored
typedef struct { * channe ignored
int lc; /* controller number */ * id ignored
int node; /* node number */ * lun ignored
int ld; /* target logical id */ */
u32 nexus; typedef struct _hp_host_info {
u32 argp; hp_header_t hdr;
} VENDOR_IOCTL_REQ32; u16 vendor;
#endif u16 device;
u16 subsystem_vendor;
typedef struct { u16 subsystem_id;
char cdb[16]; /* cdb */ u8 devfn;
unsigned short bus; /* bus number */ u8 bus;
unsigned short pdrive; /* physical drive */ ushort host_no; /* SCSI Host number, if scsi driver not loaded*/
int len; /* data area size */ u8 fw_version[16]; /* string */
int sense_len; /* sense size */ u8 serial_number[24]; /* string */
char sense_data[40]; /* sense buffer */ u32 ioc_status;
void *bufp; /* data buffer pointer */ u32 bus_phys_width;
char rw_flag; u32 base_io_addr;
} cpqfc_passthru_t; u32 rsvd;
unsigned long hard_resets; /* driver initiated resets */
#if defined(__KERNEL__) && defined(__sparc__) && defined(__sparc_v9__) /*{*/ unsigned long soft_resets; /* ioc, external resets */
typedef struct { unsigned long timeouts; /* num timeouts */
char cdb[16]; /* cdb */ } hp_host_info_t;
unsigned short bus; /* bus number */
unsigned short pdrive; /* physical drive */ /*
int len; /* data area size */ * Header:
int sense_len; /* sense size */ * iocnum required (input)
char sense_data[40]; /* sense buffer */ * host required
u32 bufp; /* data buffer pointer */ * channel required (bus number)
char rw_flag; * id required
} cpqfc_passthru32_t; * lun ignored
#endif *
* All error values between 0 and 0xFFFF in size.
*/
typedef struct _hp_target_info {
hp_header_t hdr;
u32 parity_errors;
u32 phase_errors;
u32 select_timeouts;
u32 message_rejects;
u32 negotiated_speed;
u8 negotiated_width;
u8 rsvd[7]; /* 8 byte alignment */
} hp_target_info_t;
#define HP_STATUS_OTHER 1
#define HP_STATUS_OK 2
#define HP_STATUS_FAILED 3
#define HP_BUS_WIDTH_UNK 1
#define HP_BUS_WIDTH_8 2
#define HP_BUS_WIDTH_16 3
#define HP_BUS_WIDTH_32 4
#define HP_DEV_SPEED_ASYNC 2
#define HP_DEV_SPEED_FAST 3
#define HP_DEV_SPEED_ULTRA 4
#define HP_DEV_SPEED_ULTRA2 5
#define HP_DEV_SPEED_ULTRA160 6
#define HP_DEV_SPEED_SCSI1 7
#define HP_DEV_SPEED_ULTRA320 8
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
* Copyright (c) 2000-2002 LSI Logic Corporation * Copyright (c) 2000-2002 LSI Logic Corporation
* Originally By: Noah Romer * Originally By: Noah Romer
* *
* $Id: mptlan.c,v 1.52 2002/05/06 13:45:07 sshirron Exp $ * $Id: mptlan.c,v 1.53 2002/10/17 20:15:58 pdelaney Exp $
*/ */
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/* /*
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <linux/module.h> #include <linux/module.h>
#endif #endif
#include <linux/version.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/errno.h> #include <linux/errno.h>
// #include <linux/etherdevice.h> // #include <linux/etherdevice.h>
......
This diff is collapsed.
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
* (mailto:netscape.net) * (mailto:netscape.net)
* (mailto:Pam.Delaney@lsil.com) * (mailto:Pam.Delaney@lsil.com)
* *
* $Id: mptscsih.h,v 1.19 2002/10/03 13:10:15 pdelaney Exp $ * $Id: mptscsih.h,v 1.20 2002/10/17 20:16:00 pdelaney Exp $
*/ */
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/* /*
...@@ -206,12 +206,15 @@ struct mptscsih_driver_setup ...@@ -206,12 +206,15 @@ struct mptscsih_driver_setup
#define x_scsi_dev_reset mptscsih_dev_reset #define x_scsi_dev_reset mptscsih_dev_reset
#define x_scsi_host_reset mptscsih_host_reset #define x_scsi_host_reset mptscsih_host_reset
#define x_scsi_bios_param mptscsih_bios_param #define x_scsi_bios_param mptscsih_bios_param
#define x_scsi_slave_attach mptscsih_slave_attach
#define x_scsi_taskmgmt_bh mptscsih_taskmgmt_bh #define x_scsi_taskmgmt_bh mptscsih_taskmgmt_bh
#define x_scsi_old_abort mptscsih_old_abort #define x_scsi_old_abort mptscsih_old_abort
#define x_scsi_old_reset mptscsih_old_reset #define x_scsi_old_reset mptscsih_old_reset
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,44)
#define x_scsi_slave_attach mptscsih_slave_attach #define x_scsi_slave_attach mptscsih_slave_attach
#else
#define x_scsi_select_queue_depths mptscsih_select_queue_depths
#endif
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/* /*
...@@ -231,13 +234,19 @@ extern int x_scsi_old_abort(Scsi_Cmnd *); ...@@ -231,13 +234,19 @@ extern int x_scsi_old_abort(Scsi_Cmnd *);
extern int x_scsi_old_reset(Scsi_Cmnd *, unsigned int); extern int x_scsi_old_reset(Scsi_Cmnd *, unsigned int);
#endif #endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
extern int x_scsi_bios_param(Scsi_Device *, struct block_device *, sector_t, int[]); extern int x_scsi_bios_param(struct scsi_device * sdev, struct block_device *bdev,
sector_t capacity, int *ip);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,28)
extern int x_scsi_bios_param(Disk *, struct block_device *, int *);
#else #else
extern int x_scsi_bios_param(Disk *, kdev_t, int *); extern int x_scsi_bios_param(Disk *, kdev_t, int *);
#endif #endif
extern int x_scsi_slave_attach(Scsi_Device *);
extern void x_scsi_taskmgmt_bh(void *); extern void x_scsi_taskmgmt_bh(void *);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,44)
extern int x_scsi_slave_attach(Scsi_Device *); extern int x_scsi_slave_attach(Scsi_Device *);
#else
extern void x_scsi_select_queue_depths(struct Scsi_Host *, Scsi_Device *);
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
#define PROC_SCSI_DECL #define PROC_SCSI_DECL
...@@ -247,7 +256,7 @@ extern int x_scsi_slave_attach(Scsi_Device *); ...@@ -247,7 +256,7 @@ extern int x_scsi_slave_attach(Scsi_Device *);
#ifdef MPT_SCSI_USE_NEW_EH #ifdef MPT_SCSI_USE_NEW_EH
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,1) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,44)
#define MPT_SCSIHOST { \ #define MPT_SCSIHOST { \
PROC_SCSI_DECL \ PROC_SCSI_DECL \
...@@ -255,8 +264,35 @@ extern int x_scsi_slave_attach(Scsi_Device *); ...@@ -255,8 +264,35 @@ extern int x_scsi_slave_attach(Scsi_Device *);
.detect = x_scsi_detect, \ .detect = x_scsi_detect, \
.release = x_scsi_release, \ .release = x_scsi_release, \
.info = x_scsi_info, \ .info = x_scsi_info, \
.command = NULL, \
.queuecommand = x_scsi_queuecommand, \ .queuecommand = x_scsi_queuecommand, \
.slave_attach = x_scsi_slave_attach, \ .slave_attach = x_scsi_slave_attach, \
.eh_strategy_handler = NULL, \
.eh_abort_handler = x_scsi_abort, \
.eh_device_reset_handler = x_scsi_dev_reset, \
.eh_bus_reset_handler = x_scsi_bus_reset, \
.eh_host_reset_handler = x_scsi_host_reset, \
.bios_param = x_scsi_bios_param, \
.can_queue = MPT_SCSI_CAN_QUEUE, \
.this_id = -1, \
.sg_tablesize = MPT_SCSI_SG_DEPTH, \
.max_sectors = MPT_SCSI_MAX_SECTORS, \
.cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \
.unchecked_isa_dma = 0, \
.use_clustering = ENABLE_CLUSTERING, \
}
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,1)
#define MPT_SCSIHOST { \
PROC_SCSI_DECL \
.name = "MPT SCSI Host", \
.detect = x_scsi_detect, \
.release = x_scsi_release, \
.info = x_scsi_info, \
.command = NULL, \
.queuecommand = x_scsi_queuecommand, \
.eh_strategy_handler = NULL, \
.eh_abort_handler = x_scsi_abort, \ .eh_abort_handler = x_scsi_abort, \
.eh_device_reset_handler = x_scsi_dev_reset, \ .eh_device_reset_handler = x_scsi_dev_reset, \
.eh_bus_reset_handler = x_scsi_bus_reset, \ .eh_bus_reset_handler = x_scsi_bus_reset, \
...@@ -267,27 +303,32 @@ extern int x_scsi_slave_attach(Scsi_Device *); ...@@ -267,27 +303,32 @@ extern int x_scsi_slave_attach(Scsi_Device *);
.sg_tablesize = MPT_SCSI_SG_DEPTH, \ .sg_tablesize = MPT_SCSI_SG_DEPTH, \
.max_sectors = MPT_SCSI_MAX_SECTORS, \ .max_sectors = MPT_SCSI_MAX_SECTORS, \
.cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \ .cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \
.unchecked_isa_dma = 0, \
.use_clustering = ENABLE_CLUSTERING, \ .use_clustering = ENABLE_CLUSTERING, \
.slave_attach x_scsi_slave_attach, \
} }
#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,1) */ #else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,1) */
#define MPT_SCSIHOST { \ #define MPT_SCSIHOST { \
.next = NULL, \
PROC_SCSI_DECL \ PROC_SCSI_DECL \
.name = "MPT SCSI Host", \ .name = "MPT SCSI Host", \
.detect = x_scsi_detect, \ .detect = x_scsi_detect, \
.release = x_scsi_release, \ .release = x_scsi_release, \
.info = x_scsi_info, \ .info = x_scsi_info, \
.command = NULL, \
.queuecommand = x_scsi_queuecommand, \ .queuecommand = x_scsi_queuecommand, \
.eh_strategy_handler = NULL, \
.eh_abort_handler = x_scsi_abort, \ .eh_abort_handler = x_scsi_abort, \
.eh_device_reset_handler = x_scsi_dev_reset, \ .eh_device_reset_handler = x_scsi_dev_reset, \
.eh_bus_reset_handler = x_scsi_bus_reset, \ .eh_bus_reset_handler = x_scsi_bus_reset, \
.eh_host_reset_handler = NULL, \
.bios_param = x_scsi_bios_param, \ .bios_param = x_scsi_bios_param, \
.can_queue = MPT_SCSI_CAN_QUEUE, \ .can_queue = MPT_SCSI_CAN_QUEUE, \
.this_id = -1, \ .this_id = -1, \
.sg_tablesize = MPT_SCSI_SG_DEPTH, \ .sg_tablesize = MPT_SCSI_SG_DEPTH, \
.cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \ .cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \
.unchecked_isa_dma = 0, \
.use_clustering = ENABLE_CLUSTERING, \ .use_clustering = ENABLE_CLUSTERING, \
.use_new_eh_code = 1 \ .use_new_eh_code = 1 \
} }
...@@ -297,11 +338,13 @@ extern int x_scsi_slave_attach(Scsi_Device *); ...@@ -297,11 +338,13 @@ extern int x_scsi_slave_attach(Scsi_Device *);
#else /* MPT_SCSI_USE_NEW_EH */ #else /* MPT_SCSI_USE_NEW_EH */
#define MPT_SCSIHOST { \ #define MPT_SCSIHOST { \
.next = NULL, \
PROC_SCSI_DECL \ PROC_SCSI_DECL \
.name = "MPT SCSI Host", \ .name = "MPT SCSI Host", \
.detect = x_scsi_detect, \ .detect = x_scsi_detect, \
.release = x_scsi_release, \ .release = x_scsi_release, \
.info = x_scsi_info, \ .info = x_scsi_info, \
.command = NULL, \
.queuecommand = x_scsi_queuecommand, \ .queuecommand = x_scsi_queuecommand, \
.abort = x_scsi_old_abort, \ .abort = x_scsi_old_abort, \
.reset = x_scsi_old_reset, \ .reset = x_scsi_old_reset, \
...@@ -310,6 +353,7 @@ extern int x_scsi_slave_attach(Scsi_Device *); ...@@ -310,6 +353,7 @@ extern int x_scsi_slave_attach(Scsi_Device *);
.this_id = -1, \ .this_id = -1, \
.sg_tablesize = MPT_SCSI_SG_DEPTH, \ .sg_tablesize = MPT_SCSI_SG_DEPTH, \
.cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \ .cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \
.unchecked_isa_dma = 0, \
.use_clustering = ENABLE_CLUSTERING \ .use_clustering = ENABLE_CLUSTERING \
} }
#endif /* MPT_SCSI_USE_NEW_EH */ #endif /* MPT_SCSI_USE_NEW_EH */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment