patch-2.4.21 linux-2.4.21/drivers/scsi/3w-xxxx.h
Next file: linux-2.4.21/drivers/scsi/53c7xx.c
Previous file: linux-2.4.21/drivers/scsi/3w-xxxx.c
Back to the patch index
Back to the overall index
- Lines: 130
- Date:
2003-06-13 07:51:36.000000000 -0700
- Orig file:
linux-2.4.20/drivers/scsi/3w-xxxx.h
- Orig date:
2002-11-28 15:53:14.000000000 -0800
diff -urN linux-2.4.20/drivers/scsi/3w-xxxx.h linux-2.4.21/drivers/scsi/3w-xxxx.h
@@ -6,7 +6,7 @@
Arnaldo Carvalho de Melo <acme@conectiva.com.br>
Brad Strand <linux@3ware.com>
- Copyright (C) 1999-2002 3ware Inc.
+ Copyright (C) 1999-2003 3ware Inc.
Kernel compatablity By: Andre Hedrick <andre@suse.com>
Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com>
@@ -114,11 +114,11 @@
{0x84, 0x0b, 0x47, 0x00}, // Data CRC error SCSI parity error
{0xd0, 0x0b, 0x00, 0x00}, // Device busy Aborted command
{0xd1, 0x0b, 0x00, 0x00}, // Device busy Aborted command
+ {0x37, 0x02, 0x04, 0x00}, // Unit offline Not ready
/* Codes for older firmware */
// 3ware Error SCSI Error
{0x09, 0x0b, 0x00, 0x00}, // Unrecovered disk error Aborted command
- {0x37, 0x0b, 0x04, 0x00}, // Unit offline Logical unit not ready
{0x51, 0x0b, 0x00, 0x00} // Unspecified Aborted command
};
@@ -221,12 +221,15 @@
#define TW_MAX_PCI_BUSES 255
#define TW_MAX_RESET_TRIES 3
#define TW_UNIT_INFORMATION_TABLE_BASE 0x300
-#define TW_MAX_CMDS_PER_LUN 255
+#define TW_MAX_CMDS_PER_LUN 254 /* 254 for io, 1 for
+ chrdev ioctl, one for
+ internal aen post */
#define TW_BLOCK_SIZE 0x200 /* 512-byte blocks */
#define TW_IOCTL 0x80
#define TW_UNIT_ONLINE 1
#define TW_IN_INTR 1
#define TW_IN_IOCTL 2
+#define TW_IN_CHRDEV_IOCTL 3
#define TW_MAX_SECTORS 256
#define TW_MAX_BOUNCE_SECTORS 128
#define TW_AEN_WAIT_TIME 1000
@@ -235,6 +238,8 @@
#define TW_ISR_DONT_COMPLETE 2
#define TW_ISR_DONT_RESULT 3
#define TW_IOCTL_TIMEOUT 25 /* 25 seconds */
+#define TW_IOCTL_CHRDEV_TIMEOUT 25 /* 25 seconds */
+#define TW_IOCTL_CHRDEV_FREE -1
/* Macros */
#define TW_STATUS_ERRORS(x) \
@@ -250,6 +255,8 @@
#define dprintk(msg...) do { } while(0)
#endif
+#pragma pack(1)
+
/* Scatter Gather List Entry */
typedef struct TAG_TW_SG_Entry {
u32 address;
@@ -299,6 +306,8 @@
} byte8;
} TW_Command;
+#pragma pack()
+
typedef struct TAG_TW_Ioctl {
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,15)
int buffer;
@@ -311,6 +320,16 @@
unsigned char data[1];
} TW_Ioctl;
+#pragma pack(1)
+
+/* Structure for new chardev ioctls */
+typedef struct TAG_TW_New_Ioctl {
+ unsigned int data_buffer_length;
+ unsigned char padding [508];
+ TW_Command firmware_command;
+ char data_buffer[1];
+} TW_New_Ioctl;
+
/* GetParam descriptor */
typedef struct {
unsigned short table_id;
@@ -417,6 +436,7 @@
u32 aen_count;
struct Scsi_Host *host;
spinlock_t tw_lock;
+ struct semaphore ioctl_sem;
int ioctl_size[TW_Q_LENGTH];
unsigned short aen_queue[TW_Q_LENGTH];
unsigned char aen_head;
@@ -425,8 +445,12 @@
unsigned long *ioctl_data[TW_Q_LENGTH];
int reset_print;
char online;
+ volatile int chrdev_request_id;
+ wait_queue_head_t ioctl_wqueue;
} TW_Device_Extension;
+#pragma pack()
+
/* Function prototypes */
int tw_aen_complete(TW_Device_Extension *tw_dev, int request_id);
int tw_aen_drain_queue(TW_Device_Extension *tw_dev);
@@ -473,6 +497,7 @@
int tw_scsiop_request_sense(TW_Device_Extension *tw_dev, int request_id);
int tw_scsiop_synchronize_cache(TW_Device_Extension *tw_dev, int request_id);
int tw_scsiop_test_unit_ready(TW_Device_Extension *tw_dev, int request_id);
+int tw_scsiop_test_unit_ready_complete(TW_Device_Extension *tw_dev, int request_id);
int tw_setfeature(TW_Device_Extension *tw_dev, int parm, int param_size,
unsigned char *val);
int tw_setup_irq(TW_Device_Extension *tw_dev);
@@ -505,7 +530,7 @@
reset : NULL, \
slave_attach : NULL, \
bios_param : tw_scsi_biosparam, \
- can_queue : TW_Q_LENGTH-1, \
+ can_queue : TW_Q_LENGTH-2, \
this_id: -1, \
sg_tablesize : TW_MAX_SGL_LENGTH, \
cmd_per_lun: TW_MAX_CMDS_PER_LUN, \
@@ -538,7 +563,7 @@
reset : NULL, \
slave_attach : NULL, \
bios_param : tw_scsi_biosparam, \
- can_queue : TW_Q_LENGTH-1, \
+ can_queue : TW_Q_LENGTH-2, \
this_id: -1, \
sg_tablesize : TW_MAX_SGL_LENGTH, \
cmd_per_lun: TW_MAX_CMDS_PER_LUN, \
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)