ql4_def.h
来自「linux 内核源代码」· C头文件 代码 · 共 595 行 · 第 1/2 页
H
595 行
/* * QLogic iSCSI HBA Driver * Copyright (c) 2003-2006 QLogic Corporation * * See LICENSE.qla4xxx for copyright and licensing details. */#ifndef __QL4_DEF_H#define __QL4_DEF_H#include <linux/kernel.h>#include <linux/init.h>#include <linux/types.h>#include <linux/module.h>#include <linux/list.h>#include <linux/pci.h>#include <linux/dma-mapping.h>#include <linux/sched.h>#include <linux/slab.h>#include <linux/dmapool.h>#include <linux/mempool.h>#include <linux/spinlock.h>#include <linux/workqueue.h>#include <linux/delay.h>#include <linux/interrupt.h>#include <linux/mutex.h>#include <net/tcp.h>#include <scsi/scsi.h>#include <scsi/scsi_host.h>#include <scsi/scsi_device.h>#include <scsi/scsi_cmnd.h>#include <scsi/scsi_transport.h>#include <scsi/scsi_transport_iscsi.h>#ifndef PCI_DEVICE_ID_QLOGIC_ISP4010#define PCI_DEVICE_ID_QLOGIC_ISP4010 0x4010#endif#ifndef PCI_DEVICE_ID_QLOGIC_ISP4022#define PCI_DEVICE_ID_QLOGIC_ISP4022 0x4022#endif#ifndef PCI_DEVICE_ID_QLOGIC_ISP4032#define PCI_DEVICE_ID_QLOGIC_ISP4032 0x4032#endif#define QLA_SUCCESS 0#define QLA_ERROR 1/* * Data bit definitions */#define BIT_0 0x1#define BIT_1 0x2#define BIT_2 0x4#define BIT_3 0x8#define BIT_4 0x10#define BIT_5 0x20#define BIT_6 0x40#define BIT_7 0x80#define BIT_8 0x100#define BIT_9 0x200#define BIT_10 0x400#define BIT_11 0x800#define BIT_12 0x1000#define BIT_13 0x2000#define BIT_14 0x4000#define BIT_15 0x8000#define BIT_16 0x10000#define BIT_17 0x20000#define BIT_18 0x40000#define BIT_19 0x80000#define BIT_20 0x100000#define BIT_21 0x200000#define BIT_22 0x400000#define BIT_23 0x800000#define BIT_24 0x1000000#define BIT_25 0x2000000#define BIT_26 0x4000000#define BIT_27 0x8000000#define BIT_28 0x10000000#define BIT_29 0x20000000#define BIT_30 0x40000000#define BIT_31 0x80000000/* * Host adapter default definitions ***********************************/#define MAX_HBAS 16#define MAX_BUSES 1#define MAX_TARGETS (MAX_PRST_DEV_DB_ENTRIES + MAX_DEV_DB_ENTRIES)#define MAX_LUNS 0xffff#define MAX_AEN_ENTRIES 256 /* should be > EXT_DEF_MAX_AEN_QUEUE */#define MAX_DDB_ENTRIES (MAX_PRST_DEV_DB_ENTRIES + MAX_DEV_DB_ENTRIES)#define MAX_PDU_ENTRIES 32#define INVALID_ENTRY 0xFFFF#define MAX_CMDS_TO_RISC 1024#define MAX_SRBS MAX_CMDS_TO_RISC#define MBOX_AEN_REG_COUNT 5#define MAX_INIT_RETRIES 5#define IOCB_HIWAT_CUSHION 16/* * Buffer sizes */#define REQUEST_QUEUE_DEPTH MAX_CMDS_TO_RISC#define RESPONSE_QUEUE_DEPTH 64#define QUEUE_SIZE 64#define DMA_BUFFER_SIZE 512/* * Misc */#define MAC_ADDR_LEN 6 /* in bytes */#define IP_ADDR_LEN 4 /* in bytes */#define DRIVER_NAME "qla4xxx"#define MAX_LINKED_CMDS_PER_LUN 3#define MAX_REQS_SERVICED_PER_INTR 16#define ISCSI_IPADDR_SIZE 4 /* IP address size */#define ISCSI_ALIAS_SIZE 32 /* ISCSI Alais name size */#define ISCSI_NAME_SIZE 0xE0 /* ISCSI Name size */#define LSDW(x) ((u32)((u64)(x)))#define MSDW(x) ((u32)((((u64)(x)) >> 16) >> 16))/* * Retry & Timeout Values */#define MBOX_TOV 60#define SOFT_RESET_TOV 30#define RESET_INTR_TOV 3#define SEMAPHORE_TOV 10#define ADAPTER_INIT_TOV 120#define ADAPTER_RESET_TOV 180#define EXTEND_CMD_TOV 60#define WAIT_CMD_TOV 30#define EH_WAIT_CMD_TOV 120#define FIRMWARE_UP_TOV 60#define RESET_FIRMWARE_TOV 30#define LOGOUT_TOV 10#define IOCB_TOV_MARGIN 10#define RELOGIN_TOV 18#define ISNS_DEREG_TOV 5#define MAX_RESET_HA_RETRIES 2/* * SCSI Request Block structure (srb) that is placed * on cmd->SCp location of every I/O [We have 22 bytes available] */struct srb { struct list_head list; /* (8) */ struct scsi_qla_host *ha; /* HA the SP is queued on */ struct ddb_entry *ddb; uint16_t flags; /* (1) Status flags. */#define SRB_DMA_VALID BIT_3 /* DMA Buffer mapped. */#define SRB_GOT_SENSE BIT_4 /* sense data recieved. */ uint8_t state; /* (1) Status flags. */#define SRB_NO_QUEUE_STATE 0 /* Request is in between states */#define SRB_FREE_STATE 1#define SRB_ACTIVE_STATE 3#define SRB_ACTIVE_TIMEOUT_STATE 4#define SRB_SUSPENDED_STATE 7 /* Request in suspended state */ struct scsi_cmnd *cmd; /* (4) SCSI command block */ dma_addr_t dma_handle; /* (4) for unmap of single transfers */ atomic_t ref_count; /* reference count for this srb */ uint32_t fw_ddb_index; uint8_t err_id; /* error id */#define SRB_ERR_PORT 1 /* Request failed because "port down" */#define SRB_ERR_LOOP 2 /* Request failed because "loop down" */#define SRB_ERR_DEVICE 3 /* Request failed because "device error" */#define SRB_ERR_OTHER 4 uint16_t reserved; uint16_t iocb_tov; uint16_t iocb_cnt; /* Number of used iocbs */ uint16_t cc_stat; u_long r_start; /* Time we recieve a cmd from OS */ u_long u_start; /* Time when we handed the cmd to F/W */};/* * Asynchronous Event Queue structure */struct aen { uint32_t mbox_sts[MBOX_AEN_REG_COUNT];};struct ql4_aen_log { int count; struct aen entry[MAX_AEN_ENTRIES];};/* * Device Database (DDB) structure */struct ddb_entry { struct list_head list; /* ddb list */ struct scsi_qla_host *ha; struct iscsi_cls_session *sess; struct iscsi_cls_conn *conn; atomic_t state; /* DDB State */ unsigned long flags; /* DDB Flags */ unsigned long dev_scan_wait_to_start_relogin; unsigned long dev_scan_wait_to_complete_relogin; uint16_t os_target_id; /* Target ID */ uint16_t fw_ddb_index; /* DDB firmware index */ uint8_t reserved[2]; uint32_t fw_ddb_device_state; /* F/W Device State -- see ql4_fw.h */ uint32_t CmdSn; uint16_t target_session_id; uint16_t connection_id; uint16_t exe_throttle; /* Max mumber of cmds outstanding * simultaneously */ uint16_t task_mgmt_timeout; /* Min time for task mgmt cmds to * complete */ uint16_t default_relogin_timeout; /* Max time to wait for * relogin to complete */ uint16_t tcp_source_port_num; uint32_t default_time2wait; /* Default Min time between * relogins (+aens) */ atomic_t port_down_timer; /* Device connection timer */ atomic_t retry_relogin_timer; /* Min Time between relogins * (4000 only) */ atomic_t relogin_timer; /* Max Time to wait for relogin to complete */ atomic_t relogin_retry_count; /* Num of times relogin has been * retried */ uint16_t port; uint32_t tpgt; uint8_t ip_addr[ISCSI_IPADDR_SIZE]; uint8_t iscsi_name[ISCSI_NAME_SIZE]; /* 72 x48 */ uint8_t iscsi_alias[0x20];};/* * DDB states. */#define DDB_STATE_DEAD 0 /* We can no longer talk to * this device */#define DDB_STATE_ONLINE 1 /* Device ready to accept * commands */#define DDB_STATE_MISSING 2 /* Device logged off, trying * to re-login *//* * DDB flags. */#define DF_RELOGIN 0 /* Relogin to device */#define DF_NO_RELOGIN 1 /* Do not relogin if IOCTL * logged it out */#define DF_ISNS_DISCOVERED 2 /* Device was discovered via iSNS */#define DF_FO_MASKED 3#include "ql4_fw.h"#include "ql4_nvram.h"/* * Linux Host Adapter structure */struct scsi_qla_host { /* Linux adapter configuration data */ unsigned long flags;#define AF_ONLINE 0 /* 0x00000001 */#define AF_INIT_DONE 1 /* 0x00000002 */#define AF_MBOX_COMMAND 2 /* 0x00000004 */#define AF_MBOX_COMMAND_DONE 3 /* 0x00000008 */#define AF_INTERRUPTS_ON 6 /* 0x00000040 */#define AF_GET_CRASH_RECORD 7 /* 0x00000080 */#define AF_LINK_UP 8 /* 0x00000100 */#define AF_IRQ_ATTACHED 10 /* 0x00000400 */#define AF_DISABLE_ACB_COMPLETE 11 /* 0x00000800 */ unsigned long dpc_flags;#define DPC_RESET_HA 1 /* 0x00000002 */#define DPC_RETRY_RESET_HA 2 /* 0x00000004 */#define DPC_RELOGIN_DEVICE 3 /* 0x00000008 */#define DPC_RESET_HA_DESTROY_DDB_LIST 4 /* 0x00000010 */#define DPC_RESET_HA_INTR 5 /* 0x00000020 */#define DPC_ISNS_RESTART 7 /* 0x00000080 */#define DPC_AEN 9 /* 0x00000200 */#define DPC_GET_DHCP_IP_ADDR 15 /* 0x00008000 */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?