Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
a1ac7138
Commit
a1ac7138
authored
Nov 25, 2002
by
Alan Cox
Committed by
Linus Torvalds
Nov 25, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] mpt fusion update from vendor
parent
846ca6b2
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
609 additions
and
813 deletions
+609
-813
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptbase.c
+45
-22
drivers/message/fusion/mptbase.h
drivers/message/fusion/mptbase.h
+9
-3
drivers/message/fusion/mptctl.c
drivers/message/fusion/mptctl.c
+260
-542
drivers/message/fusion/mptctl.h
drivers/message/fusion/mptctl.h
+81
-85
drivers/message/fusion/mptlan.c
drivers/message/fusion/mptlan.c
+1
-1
drivers/message/fusion/mptlan.h
drivers/message/fusion/mptlan.h
+0
-1
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptscsih.c
+163
-153
drivers/message/fusion/mptscsih.h
drivers/message/fusion/mptscsih.h
+50
-6
No files found.
drivers/message/fusion/mptbase.c
View file @
a1ac7138
...
...
@@ -49,7 +49,7 @@
* (mailto:sjralston1@netscape.net)
* (mailto:Pam.Delaney@lsil.com)
*
* $Id: mptbase.c,v 1.12
2 2002/10/03 13:10:11
pdelaney Exp $
* $Id: mptbase.c,v 1.12
3 2002/10/17 20:15:56
pdelaney Exp $
*/
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
...
...
@@ -1156,7 +1156,7 @@ mpt_pci_scan(void)
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.
*/
pci_for_each_dev
(
pdev
)
{
...
...
@@ -1170,18 +1170,14 @@ mpt_pci_scan(void)
(
pdev
->
device
!=
MPI_MANUFACTPAGE_DEVICEID_FC929X
)
&&
(
pdev
->
device
!=
MPI_MANUFACTPAGE_DEVICEID_FC919X
)
&&
(
pdev
->
device
!=
MPI_MANUFACTPAGE_DEVID_53C1030
)
&&
#if 0
/* FIXME! C103x family */
(pdev->device != MPI_MANUFACTPAGE_DEVID_53C1030_ZC) &&
(pdev->device != MPI_MANUFACTPAGE_DEVID_53C1035) &&
#endif
(
pdev
->
device
!=
MPI_MANUFACTPAGE_DEVID_1030_53C1035
)
&&
1
)
{
dprintk
((
KERN_INFO
MYNAM
": Skipping LSI device=%04xh
\n
"
,
pdev
->
device
));
continue
;
}
/* 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.
* Do some kind of look ahead here...
*/
...
...
@@ -1445,15 +1441,24 @@ mpt_adapter_install(struct pci_dev *pdev)
ioc
->
chip_type
=
C1030
;
ioc
->
prod_name
=
"LSI53C1030"
;
{
u8
revision
;
/* 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_word
(
pdev
,
0x6a
,
&
pcixcmd
);
pcixcmd
&=
0xFF8F
;
pci_write_config_word
(
pdev
,
0x6a
,
pcixcmd
);
pci_read_config_byte
(
pdev
,
PCI_CLASS_REVISION
,
&
revision
);
if
(
revision
<
0x08
)
{
u16
pcixcmd
=
0
;
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
);
...
...
@@ -1500,9 +1505,10 @@ mpt_adapter_install(struct pci_dev *pdev)
mpt_adapters
[
ioc
->
id
]
=
ioc
;
/* 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
);
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)
/*
* mpt_detect_bound_ports - Search for PCI bus/dev_function
* which matches PCI bus/dev_function (+/-1) for newly discovered 929,
* 929X
or 1030
.
* 929X
, 1030 or 1035
.
* @ioc: Pointer to MPT adapter structure
* @pdev: Pointer to (struct pci_dev) structure
*
...
...
@@ -1806,8 +1812,7 @@ mpt_adapter_disable(MPT_ADAPTER *this, int freeup)
/* Disable the FW */
state
=
mpt_GetIocState
(
this
,
1
);
if
(
state
==
MPI_IOC_STATE_OPERATIONAL
)
{
if
(
SendIocReset
(
this
,
MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET
,
NO_SLEEP
)
!=
0
)
(
void
)
KickStart
(
this
,
1
,
NO_SLEEP
);
SendIocReset
(
this
,
MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET
,
NO_SLEEP
);
}
if
(
this
->
cached_fw
!=
NULL
)
{
...
...
@@ -1819,7 +1824,6 @@ mpt_adapter_disable(MPT_ADAPTER *this, int freeup)
}
}
/* Disable adapter interrupts! */
CHIPREG_WRITE32
(
&
this
->
chip
->
IntMask
,
0xFFFFFFFF
);
this
->
active
=
0
;
...
...
@@ -2291,9 +2295,6 @@ GetIocFacts(MPT_ADAPTER *ioc, int sleepFlag, int reason)
ioc
->
reply_sz
=
ioc
->
req_sz
;
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
"
,
ioc
->
name
,
ioc
->
reply_sz
,
ioc
->
reply_depth
));
dprintk
((
MYIOC_s_INFO_FMT
"req_sz =%3d, req_depth =%4d
\n
"
,
...
...
@@ -2891,6 +2892,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, int sleepFlag)
*/
diag0val
=
CHIPREG_READ32
(
&
ioc
->
chip
->
Diagnostic
);
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_2ND_KEY_VALUE
);
CHIPREG_WRITE32
(
&
ioc
->
chip
->
WriteSequence
,
MPI_WRSEQ_3RD_KEY_VALUE
);
...
...
@@ -3126,6 +3128,18 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
int
cnt
=
0
;
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
);
if
(
hard_reset_done
<
0
)
...
...
@@ -5841,6 +5855,15 @@ fusion_exit(void)
while
(
!
Q_IS_EMPTY
(
&
MptAdapters
))
{
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
);
mpt_adapter_dispose
(
this
);
}
...
...
drivers/message/fusion/mptbase.h
View file @
a1ac7138
...
...
@@ -13,7 +13,7 @@
* (mailto:sjralston1@netscape.net)
* (mailto:Pam.Delaney@lsil.com)
*
* $Id: mptbase.h,v 1.13
4 2002/10/03 13:10:12
pdelaney Exp $
* $Id: mptbase.h,v 1.13
6 2002/10/21 13:51:54
pdelaney Exp $
*/
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
...
...
@@ -80,8 +80,8 @@
#define COPYRIGHT "Copyright (c) 1999-2002 " MODULEAUTHOR
#endif
#define MPT_LINUX_VERSION_COMMON "2.0
2.01.07
"
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-2.0
2.01.07
"
#define MPT_LINUX_VERSION_COMMON "2.0
3.00.02
"
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-2.0
3.00.02
"
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
#define show_mptmod_ver(s,ver) \
...
...
@@ -301,6 +301,7 @@ typedef enum {
FC919
=
0x0919
,
FC929
=
0x0929
,
C1030
=
0x1030
,
C1035
=
0x1035
,
FCUNK
=
0xFBAD
}
CHIP_TYPE
;
...
...
@@ -368,6 +369,7 @@ typedef struct _ScsiCmndTracker {
typedef
struct
_VirtDevice
{
struct
_VirtDevice
*
forw
;
struct
_VirtDevice
*
back
;
struct
scsi_device
*
device
;
rwlock_t
VdevLock
;
int
ref_cnt
;
u8
tflags
;
...
...
@@ -912,6 +914,10 @@ typedef struct _MPT_SCSI_HOST {
MPT_FRAME_HDR
*
cmdPtr
;
/* Ptr to nonOS request */
struct
scsi_cmnd
*
abortSCpnt
;
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
;
/*
...
...
drivers/message/fusion/mptctl.c
View file @
a1ac7138
This diff is collapsed.
Click to expand it.
drivers/message/fusion/mptctl.h
View file @
a1ac7138
...
...
@@ -20,7 +20,7 @@
* (mailto:sjralston1@netscape.net)
* (mailto:Pam.Delaney@lsil.com)
*
* $Id: mptctl.h,v 1.1
1 2002/10/03 13:10:13
pdelaney Exp $
* $Id: mptctl.h,v 1.1
2 2002/10/17 20:15:58
pdelaney Exp $
*/
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
...
...
@@ -310,95 +310,91 @@ struct mpt_ioctl_command32 {
#endif
/*}*/
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
* COMPAQ
Specific IOCTL Defines and Structures
*/
/*
* HP
Specific IOCTL Defines and Structures
*/
#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)
#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.
/* All HP IOCTLs must include this header
*/
#define MPT_COMPAQ_READ 0x26
#define MPT_COMPAQ_WRITE 0x27
typedef
struct
{
int
lc
;
/* controller number */
int
node
;
/* node number */
int
ld
;
/* target logical id */
u32
nexus
;
void
*
argp
;
}
VENDOR_IOCTL_REQ
;
#if defined(__KERNEL__) && defined(__sparc__) && defined(__sparc_v9__)
/*{*/
typedef
struct
{
int
lc
;
/* controller number */
int
node
;
/* node number */
int
ld
;
/* target logical id */
u32
nexus
;
u32
argp
;
}
VENDOR_IOCTL_REQ32
;
#endif
typedef
struct
{
char
cdb
[
16
];
/* cdb */
unsigned
short
bus
;
/* bus number */
unsigned
short
pdrive
;
/* physical drive */
int
len
;
/* data area size */
int
sense_len
;
/* sense size */
char
sense_data
[
40
];
/* sense buffer */
void
*
bufp
;
/* data buffer pointer */
char
rw_flag
;
}
cpqfc_passthru_t
;
#if defined(__KERNEL__) && defined(__sparc__) && defined(__sparc_v9__)
/*{*/
typedef
struct
{
char
cdb
[
16
];
/* cdb */
unsigned
short
bus
;
/* bus number */
unsigned
short
pdrive
;
/* physical drive */
int
len
;
/* data area size */
int
sense_len
;
/* sense size */
char
sense_data
[
40
];
/* sense buffer */
u32
bufp
;
/* data buffer pointer */
char
rw_flag
;
}
cpqfc_passthru32_t
;
#endif
typedef
struct
_hp_header
{
unsigned
int
iocnum
;
unsigned
int
host
;
unsigned
int
channel
;
unsigned
int
id
;
unsigned
int
lun
;
}
hp_header_t
;
/*
* Header:
* iocnum required (input)
* host ignored
* channe ignored
* id ignored
* lun ignored
*/
typedef
struct
_hp_host_info
{
hp_header_t
hdr
;
u16
vendor
;
u16
device
;
u16
subsystem_vendor
;
u16
subsystem_id
;
u8
devfn
;
u8
bus
;
ushort
host_no
;
/* SCSI Host number, if scsi driver not loaded*/
u8
fw_version
[
16
];
/* string */
u8
serial_number
[
24
];
/* string */
u32
ioc_status
;
u32
bus_phys_width
;
u32
base_io_addr
;
u32
rsvd
;
unsigned
long
hard_resets
;
/* driver initiated resets */
unsigned
long
soft_resets
;
/* ioc, external resets */
unsigned
long
timeouts
;
/* num timeouts */
}
hp_host_info_t
;
/*
* Header:
* iocnum required (input)
* host required
* channel required (bus number)
* id required
* lun ignored
*
* 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
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
...
...
drivers/message/fusion/mptlan.c
View file @
a1ac7138
...
...
@@ -26,7 +26,7 @@
* Copyright (c) 2000-2002 LSI Logic Corporation
* Originally By: Noah Romer
*
* $Id: mptlan.c,v 1.5
2 2002/05/06 13:45:07 sshirron
Exp $
* $Id: mptlan.c,v 1.5
3 2002/10/17 20:15:58 pdelaney
Exp $
*/
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
...
...
drivers/message/fusion/mptlan.h
View file @
a1ac7138
...
...
@@ -8,7 +8,6 @@
#include <linux/module.h>
#endif
#include <linux/version.h>
#include <linux/netdevice.h>
#include <linux/errno.h>
// #include <linux/etherdevice.h>
...
...
drivers/message/fusion/mptscsih.c
View file @
a1ac7138
This diff is collapsed.
Click to expand it.
drivers/message/fusion/mptscsih.h
View file @
a1ac7138
...
...
@@ -20,7 +20,7 @@
* (mailto:netscape.net)
* (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
#define x_scsi_dev_reset mptscsih_dev_reset
#define x_scsi_host_reset mptscsih_host_reset
#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_old_abort mptscsih_old_abort
#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
#else
#define x_scsi_select_queue_depths mptscsih_select_queue_depths
#endif
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
...
...
@@ -231,13 +234,19 @@ extern int x_scsi_old_abort(Scsi_Cmnd *);
extern
int
x_scsi_old_reset
(
Scsi_Cmnd
*
,
unsigned
int
);
#endif
#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
extern
int
x_scsi_bios_param
(
Disk
*
,
kdev_t
,
int
*
);
#endif
extern
int
x_scsi_slave_attach
(
Scsi_Device
*
);
extern
void
x_scsi_taskmgmt_bh
(
void
*
);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,44)
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)
#define PROC_SCSI_DECL
...
...
@@ -247,7 +256,7 @@ extern int x_scsi_slave_attach(Scsi_Device *);
#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 { \
PROC_SCSI_DECL \
...
...
@@ -255,8 +264,35 @@ extern int x_scsi_slave_attach(Scsi_Device *);
.detect = x_scsi_detect, \
.release = x_scsi_release, \
.info = x_scsi_info, \
.command = NULL, \
.queuecommand = x_scsi_queuecommand, \
.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_device_reset_handler = x_scsi_dev_reset, \
.eh_bus_reset_handler = x_scsi_bus_reset, \
...
...
@@ -267,27 +303,32 @@ extern int x_scsi_slave_attach(Scsi_Device *);
.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, \
.slave_attach x_scsi_slave_attach, \
}
#else
/* LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,1) */
#define MPT_SCSIHOST { \
.next = NULL, \
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_device_reset_handler = x_scsi_dev_reset, \
.eh_bus_reset_handler = x_scsi_bus_reset, \
.eh_host_reset_handler = NULL, \
.bios_param = x_scsi_bios_param, \
.can_queue = MPT_SCSI_CAN_QUEUE, \
.this_id = -1, \
.sg_tablesize = MPT_SCSI_SG_DEPTH, \
.cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \
.unchecked_isa_dma = 0, \
.use_clustering = ENABLE_CLUSTERING, \
.use_new_eh_code = 1 \
}
...
...
@@ -297,11 +338,13 @@ extern int x_scsi_slave_attach(Scsi_Device *);
#else
/* MPT_SCSI_USE_NEW_EH */
#define MPT_SCSIHOST { \
.next = NULL, \
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, \
.abort = x_scsi_old_abort, \
.reset = x_scsi_old_reset, \
...
...
@@ -310,6 +353,7 @@ extern int x_scsi_slave_attach(Scsi_Device *);
.this_id = -1, \
.sg_tablesize = MPT_SCSI_SG_DEPTH, \
.cmd_per_lun = MPT_SCSI_CMD_PER_LUN, \
.unchecked_isa_dma = 0, \
.use_clustering = ENABLE_CLUSTERING \
}
#endif
/* MPT_SCSI_USE_NEW_EH */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment