📄 qla1280.h
字号:
#define CONTINUE_TGT_IO_TYPE 7 /* CTIO entry */ uint8_t entry_count; /* Entry count. */ uint8_t reserved_1; uint8_t entry_status; /* Entry Status. */ uint32_t reserved_2; uint8_t lun; /* SCSI LUN */ uint8_t initiator_id; uint8_t reserved_3; uint8_t target_id; uint32_t option_flags; uint8_t status; uint8_t scsi_status; uint8_t tag_value; /* Received queue tag message value */ uint8_t tag_type; /* Received queue tag message type */ uint32_t transfer_length; uint32_t residual; uint16_t timeout; /* 0 = 30 seconds, 0xFFFF = disable */ uint16_t dseg_count; /* Data segment count. */ uint32_t dseg_0_address; /* Data segment 0 address. */ uint32_t dseg_0_length; /* Data segment 0 length. */ uint32_t dseg_1_address; /* Data segment 1 address. */ uint32_t dseg_1_length; /* Data segment 1 length. */ uint32_t dseg_2_address; /* Data segment 2 address. */ uint32_t dseg_2_length; /* Data segment 2 length. */ uint32_t dseg_3_address; /* Data segment 3 address. */ uint32_t dseg_3_length; /* Data segment 3 length. */}ctio_entry_t;/* * ISP queue - CTIO returned entry structure definition. */typedef struct{ uint8_t entry_type; /* Entry type. */ #define CTIO_RET_TYPE 7 /* CTIO return entry */ uint8_t entry_count; /* Entry count. */ uint8_t reserved_1; uint8_t entry_status; /* Entry Status. */ uint32_t reserved_2; uint8_t lun; /* SCSI LUN */ uint8_t initiator_id; uint8_t reserved_3; uint8_t target_id; uint32_t option_flags; uint8_t status; uint8_t scsi_status; uint8_t tag_value; /* Received queue tag message value */ uint8_t tag_type; /* Received queue tag message type */ uint32_t transfer_length; uint32_t residual; uint16_t timeout; /* 0 = 30 seconds, 0xFFFF = disable */ uint16_t dseg_count; /* Data segment count. */ uint32_t dseg_0_address; /* Data segment 0 address. */ uint32_t dseg_0_length; /* Data segment 0 length. */ uint32_t dseg_1_address; /* Data segment 1 address. */ uint16_t dseg_1_length; /* Data segment 1 length. */ uint8_t sense_data[18];}ctio_ret_entry_t;/* * ISP queue - CTIO A64 entry structure definition. */typedef struct{ uint8_t entry_type; /* Entry type. */ #define CTIO_A64_TYPE 0xF /* CTIO A64 entry */ uint8_t entry_count; /* Entry count. */ uint8_t reserved_1; uint8_t entry_status; /* Entry Status. */ uint32_t reserved_2; uint8_t lun; /* SCSI LUN */ uint8_t initiator_id; uint8_t reserved_3; uint8_t target_id; uint32_t option_flags; uint8_t status; uint8_t scsi_status; uint8_t tag_value; /* Received queue tag message value */ uint8_t tag_type; /* Received queue tag message type */ uint32_t transfer_length; uint32_t residual; uint16_t timeout; /* 0 = 30 seconds, 0xFFFF = disable */ uint16_t dseg_count; /* Data segment count. */ uint32_t reserved_4[2]; uint32_t dseg_0_address[2]; /* Data segment 0 address. */ uint32_t dseg_0_length; /* Data segment 0 length. */ uint32_t dseg_1_address[2]; /* Data segment 1 address. */ uint32_t dseg_1_length; /* Data segment 1 length. */}ctio_a64_entry_t;/* * ISP queue - CTIO returned entry structure definition. */typedef struct{ uint8_t entry_type; /* Entry type. */ #define CTIO_A64_RET_TYPE 0xF /* CTIO A64 returned entry */ uint8_t entry_count; /* Entry count. */ uint8_t reserved_1; uint8_t entry_status; /* Entry Status. */ uint32_t reserved_2; uint8_t lun; /* SCSI LUN */ uint8_t initiator_id; uint8_t reserved_3; uint8_t target_id; uint32_t option_flags; uint8_t status; uint8_t scsi_status; uint8_t tag_value; /* Received queue tag message value */ uint8_t tag_type; /* Received queue tag message type */ uint32_t transfer_length; uint32_t residual; uint16_t timeout; /* 0 = 30 seconds, 0xFFFF = disable */ uint16_t dseg_count; /* Data segment count. */ uint16_t reserved_4[7]; uint8_t sense_data[18];}ctio_a64_ret_entry_t;/* * ISP request and response queue entry sizes */#define RESPONSE_ENTRY_SIZE (sizeof(response_t))#define REQUEST_ENTRY_SIZE (sizeof(request_t))/* * ISP status entry - completion status definitions. */#define CS_COMPLETE 0x0 /* No errors */#define CS_INCOMPLETE 0x1 /* Incomplete transfer of cmd. */#define CS_DMA 0x2 /* A DMA direction error. */#define CS_TRANSPORT 0x3 /* Transport error. */#define CS_RESET 0x4 /* SCSI bus reset occurred */#define CS_ABORTED 0x5 /* System aborted command. */#define CS_TIMEOUT 0x6 /* Timeout error. */#define CS_DATA_OVERRUN 0x7 /* Data overrun. */#define CS_COMMAND_OVERRUN 0x8 /* Command Overrun. */#define CS_STATUS_OVERRUN 0x9 /* Status Overrun. */#define CS_BAD_MSG 0xA /* Bad msg after status phase. */#define CS_NO_MSG_OUT 0xB /* No msg out after selection. */#define CS_EXTENDED_ID 0xC /* Extended ID failed. */#define CS_IDE_MSG 0xD /* Target rejected IDE msg. */#define CS_ABORT_MSG 0xE /* Target rejected abort msg. */#define CS_REJECT_MSG 0xF /* Target rejected reject msg. */#define CS_NOP_MSG 0x10 /* Target rejected NOP msg. */#define CS_PARITY_MSG 0x11 /* Target rejected parity msg. */#define CS_DEV_RESET_MSG 0x12 /* Target rejected dev rst msg. */#define CS_ID_MSG 0x13 /* Target rejected ID msg. */#define CS_FREE 0x14 /* Unexpected bus free. */#define CS_DATA_UNDERRUN 0x15 /* Data Underrun. */#define CS_TRANACTION_1 0x18 /* Transaction error 1 */#define CS_TRANACTION_2 0x19 /* Transaction error 2 */#define CS_TRANACTION_3 0x1a /* Transaction error 3 */#define CS_INV_ENTRY_TYPE 0x1b /* Invalid entry type */#define CS_DEV_QUEUE_FULL 0x1c /* Device queue full */#define CS_PHASED_SKIPPED 0x1d /* SCSI phase skipped */#define CS_ARS_FAILED 0x1e /* ARS failed */#define CS_LVD_BUS_ERROR 0x21 /* LVD bus error */#define CS_BAD_PAYLOAD 0x80 /* Driver defined */#define CS_UNKNOWN 0x81 /* Driver defined */#define CS_RETRY 0x82 /* Driver defined *//* * ISP status entry - SCSI status byte bit definitions. */#define SS_CHECK_CONDITION BIT_1#define SS_CONDITION_MET BIT_2#define SS_BUSY_CONDITION BIT_3#define SS_RESERVE_CONFLICT (BIT_4 | BIT_3)/* * ISP target entries - Option flags bit definitions. */#define OF_ENABLE_TAG BIT_1 /* Tagged queue action enable */#define OF_DATA_IN BIT_6 /* Data in to initiator */ /* (data from target to initiator) */#define OF_DATA_OUT BIT_7 /* Data out from initiator */ /* (data from initiator to target) */#define OF_NO_DATA (BIT_7 | BIT_6)#define OF_DISC_DISABLED BIT_15 /* Disconnects disabled */#define OF_DISABLE_SDP BIT_24 /* Disable sending save data ptr */#define OF_SEND_RDP BIT_26 /* Send restore data pointers msg */#define OF_FORCE_DISC BIT_30 /* Disconnects mandatory */#define OF_SSTS BIT_31 /* Send SCSI status */#if QL1280_TARGET_MODE_SUPPORT/* * Target Read/Write buffer structure. */#define TARGET_DATA_OFFSET 4#define TARGET_DATA_SIZE 0x2000 /* 8K */#define TARGET_INQ_OFFSET (TARGET_DATA_OFFSET + TARGET_DATA_SIZE)#define TARGET_SENSE_SIZE 18#define TARGET_BUF_SIZE 36typedef struct{ uint8_t hdr[4]; uint8_t data[TARGET_DATA_SIZE]; struct ident inq;}tgt_t;#endif/* * BUS parameters/settings structure */typedef struct{ uint8_t id; /* Host adapter SCSI id */ uint8_t bus_reset_delay; /* SCSI bus reset delay. */ uint8_t failed_reset_count; /* number of time reset failed */ uint8_t unused; uint16_t device_enables; /* Device enable bits. */ uint16_t lun_disables; /* LUN disable bits. */ uint16_t qtag_enables; /* Tag queue enables. */ uint16_t hiwat; /* High water mark per device. */ uint8_t reset_marker :1; uint8_t disable_scsi_reset :1; uint8_t scsi_bus_dead :1; /* SCSI Bus is Dead, when 5 back to back resets failed */}bus_param_t;/* * Linux Host Adapter structure */typedef struct scsi_qla_host{ /* Linux adapter configuration data */ struct Scsi_Host *host; /* pointer to host data */ struct scsi_qla_host *next; device_reg_t *iobase; /* Base Memory-mapped I/O address */ uint8_t pci_bus; uint8_t pci_device_fn; uint8_t devnum;#if LINUX_VERSION_CODE > KERNEL_VERSION(2,1,95) struct pci_dev *pdev;#endif volatile unsigned char *mmpbase; /* memory mapped address */ unsigned long host_no; unsigned long instance; uint8_t revision; uint8_t ports;#if LINUX_VERSION_CODE > KERNEL_VERSION(2,1,0) spinlock_t spin_lock;#endif volatile unsigned char cpu_lock_count[NR_CPUS]; unsigned long actthreads; unsigned long qthreads; unsigned long isr_count; /* Interrupt count */ unsigned long spurious_int; uint32_t device_id; /* Outstandings ISP commands. */ srb_t *outstanding_cmds[MAX_OUTSTANDING_COMMANDS]; /* BUS configuration data */ bus_param_t bus_settings[MAX_BUSES]; /* Device LUN queues. */ scsi_lu_t *dev[MAX_EQ]; /* Logical unit queues */#ifdef UNUSED /* Interrupt lock, and data */ uint8_t intr_lock; /* Lock for interrupt locking */#endif /* bottom half run queue */ struct tq_struct run_qla_bh; /* Received ISP mailbox data. */ volatile uint16_t mailbox_out[MAILBOX_REGISTER_COUNT];#ifdef UNUSED /* ISP ring lock, rings, and indexes */ uint8_t ring_lock; /* ISP ring lock */ struct timer_list dev_timer[MAX_TARGETS];#endif request_t req[REQUEST_ENTRY_CNT+1]; response_t res[RESPONSE_ENTRY_CNT+1]; unsigned long request_dma; /* Physical address. */ request_t *request_ring; /* Base virtual address */ request_t *request_ring_ptr; /* Current address. */ uint16_t req_ring_index; /* Current index. */ uint16_t req_q_cnt; /* Number of available entries. */ unsigned long response_dma; /* Physical address. */ response_t *response_ring; /* Base virtual address */ response_t *response_ring_ptr; /* Current address. */ uint16_t rsp_ring_index; /* Current index. */#if QL1280_TARGET_MODE_SUPPORT /* Target buffer and sense data. */ uint32_t tbuf_dma; /* Physical address. */ tgt_t *tbuf; uint32_t tsense_dma; /* Physical address. */ uint8_t *tsense;#endif#if WATCHDOGTIMER /* Watchdog queue, lock and total timer */ uint8_t watchdog_q_lock; /* Lock for watchdog queue */ srb_t *wdg_q_first; /* First job on watchdog queue */ srb_t *wdg_q_last; /* Last job on watchdog queue */ uint32_t total_timeout; /* Total timeout (quantum count) */ uint32_t watchdogactive;#endif srb_t *done_q_first; /* First job on done queue */ srb_t *done_q_last; /* Last job on done queue */ volatile struct { uint32_t watchdog_enabled :1; /* 0 */ uint32_t mbox_int :1; /* 1 */ uint32_t mbox_busy :1; /* 2 */ ui
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -