ql4_fw.h
来自「linux 内核源代码」· C头文件 代码 · 共 777 行 · 第 1/2 页
H
777 行
/* * QLogic iSCSI HBA Driver * Copyright (c) 2003-2006 QLogic Corporation * * See LICENSE.qla4xxx for copyright and licensing details. */#ifndef _QLA4X_FW_H#define _QLA4X_FW_H#define MAX_PRST_DEV_DB_ENTRIES 64#define MIN_DISC_DEV_DB_ENTRY MAX_PRST_DEV_DB_ENTRIES#define MAX_DEV_DB_ENTRIES 512/************************************************************************* * * ISP 4010 I/O Register Set Structure and Definitions * *************************************************************************/struct port_ctrl_stat_regs { __le32 ext_hw_conf; /* 0x50 R/W */ __le32 rsrvd0; /* 0x54 */ __le32 port_ctrl; /* 0x58 */ __le32 port_status; /* 0x5c */ __le32 rsrvd1[32]; /* 0x60-0xdf */ __le32 gp_out; /* 0xe0 */ __le32 gp_in; /* 0xe4 */ __le32 rsrvd2[5]; /* 0xe8-0xfb */ __le32 port_err_status; /* 0xfc */};struct host_mem_cfg_regs { __le32 rsrvd0[12]; /* 0x50-0x79 */ __le32 req_q_out; /* 0x80 */ __le32 rsrvd1[31]; /* 0x84-0xFF */};/* remote register set (access via PCI memory read/write) */struct isp_reg {#define MBOX_REG_COUNT 8 __le32 mailbox[MBOX_REG_COUNT]; __le32 flash_address; /* 0x20 */ __le32 flash_data; __le32 ctrl_status; union { struct { __le32 nvram; __le32 reserved1[2]; /* 0x30 */ } __attribute__ ((packed)) isp4010; struct { __le32 intr_mask; __le32 nvram; /* 0x30 */ __le32 semaphore; } __attribute__ ((packed)) isp4022; } u1; __le32 req_q_in; /* SCSI Request Queue Producer Index */ __le32 rsp_q_out; /* SCSI Completion Queue Consumer Index */ __le32 reserved2[4]; /* 0x40 */ union { struct { __le32 ext_hw_conf; /* 0x50 */ __le32 flow_ctrl; __le32 port_ctrl; __le32 port_status; __le32 reserved3[8]; /* 0x60 */ __le32 req_q_out; /* 0x80 */ __le32 reserved4[23]; /* 0x84 */ __le32 gp_out; /* 0xe0 */ __le32 gp_in; __le32 reserved5[5]; __le32 port_err_status; /* 0xfc */ } __attribute__ ((packed)) isp4010; struct { union { struct port_ctrl_stat_regs p0; struct host_mem_cfg_regs p1; }; } __attribute__ ((packed)) isp4022; } u2;}; /* 256 x100 *//* Semaphore Defines for 4010 */#define QL4010_DRVR_SEM_BITS 0x00000030#define QL4010_GPIO_SEM_BITS 0x000000c0#define QL4010_SDRAM_SEM_BITS 0x00000300#define QL4010_PHY_SEM_BITS 0x00000c00#define QL4010_NVRAM_SEM_BITS 0x00003000#define QL4010_FLASH_SEM_BITS 0x0000c000#define QL4010_DRVR_SEM_MASK 0x00300000#define QL4010_GPIO_SEM_MASK 0x00c00000#define QL4010_SDRAM_SEM_MASK 0x03000000#define QL4010_PHY_SEM_MASK 0x0c000000#define QL4010_NVRAM_SEM_MASK 0x30000000#define QL4010_FLASH_SEM_MASK 0xc0000000/* Semaphore Defines for 4022 */#define QL4022_RESOURCE_MASK_BASE_CODE 0x7#define QL4022_RESOURCE_BITS_BASE_CODE 0x4#define QL4022_DRVR_SEM_MASK (QL4022_RESOURCE_MASK_BASE_CODE << (1+16))#define QL4022_DDR_RAM_SEM_MASK (QL4022_RESOURCE_MASK_BASE_CODE << (4+16))#define QL4022_PHY_GIO_SEM_MASK (QL4022_RESOURCE_MASK_BASE_CODE << (7+16))#define QL4022_NVRAM_SEM_MASK (QL4022_RESOURCE_MASK_BASE_CODE << (10+16))#define QL4022_FLASH_SEM_MASK (QL4022_RESOURCE_MASK_BASE_CODE << (13+16))/* Page # defines for 4022 */#define PORT_CTRL_STAT_PAGE 0 /* 4022 */#define HOST_MEM_CFG_PAGE 1 /* 4022 */#define LOCAL_RAM_CFG_PAGE 2 /* 4022 */#define PROT_STAT_PAGE 3 /* 4022 *//* Register Mask - sets corresponding mask bits in the upper word */static inline uint32_t set_rmask(uint32_t val){ return (val & 0xffff) | (val << 16);}static inline uint32_t clr_rmask(uint32_t val){ return 0 | (val << 16);}/* ctrl_status definitions */#define CSR_SCSI_PAGE_SELECT 0x00000003#define CSR_SCSI_INTR_ENABLE 0x00000004 /* 4010 */#define CSR_SCSI_RESET_INTR 0x00000008#define CSR_SCSI_COMPLETION_INTR 0x00000010#define CSR_SCSI_PROCESSOR_INTR 0x00000020#define CSR_INTR_RISC 0x00000040#define CSR_BOOT_ENABLE 0x00000080#define CSR_NET_PAGE_SELECT 0x00000300 /* 4010 */#define CSR_FUNC_NUM 0x00000700 /* 4022 */#define CSR_NET_RESET_INTR 0x00000800 /* 4010 */#define CSR_FORCE_SOFT_RESET 0x00002000 /* 4022 */#define CSR_FATAL_ERROR 0x00004000#define CSR_SOFT_RESET 0x00008000#define ISP_CONTROL_FN_MASK CSR_FUNC_NUM#define ISP_CONTROL_FN0_SCSI 0x0500#define ISP_CONTROL_FN1_SCSI 0x0700#define INTR_PENDING (CSR_SCSI_COMPLETION_INTR |\ CSR_SCSI_PROCESSOR_INTR |\ CSR_SCSI_RESET_INTR)/* ISP InterruptMask definitions */#define IMR_SCSI_INTR_ENABLE 0x00000004 /* 4022 *//* ISP 4022 nvram definitions */#define NVR_WRITE_ENABLE 0x00000010 /* 4022 *//* ISP port_status definitions *//* ISP Semaphore definitions *//* ISP General Purpose Output definitions */#define GPOR_TOPCAT_RESET 0x00000004/* shadow registers (DMA'd from HA to system memory. read only) */struct shadow_regs { /* SCSI Request Queue Consumer Index */ __le32 req_q_out; /* 0 x0 R */ /* SCSI Completion Queue Producer Index */ __le32 rsp_q_in; /* 4 x4 R */}; /* 8 x8 *//* External hardware configuration register */union external_hw_config_reg { struct { /* FIXME: Do we even need this? All values are * referred to by 16 bit quantities. Platform and * endianess issues. */ __le32 bReserved0:1; __le32 bSDRAMProtectionMethod:2; __le32 bSDRAMBanks:1; __le32 bSDRAMChipWidth:1; __le32 bSDRAMChipSize:2; __le32 bParityDisable:1; __le32 bExternalMemoryType:1; __le32 bFlashBIOSWriteEnable:1; __le32 bFlashUpperBankSelect:1; __le32 bWriteBurst:2; __le32 bReserved1:3; __le32 bMask:16; }; uint32_t Asuint32_t;};/************************************************************************* * * Mailbox Commands Structures and Definitions * *************************************************************************//* Mailbox command definitions */#define MBOX_CMD_ABOUT_FW 0x0009#define MBOX_CMD_PING 0x000B#define MBOX_CMD_LUN_RESET 0x0016#define MBOX_CMD_GET_MANAGEMENT_DATA 0x001E#define MBOX_CMD_GET_FW_STATUS 0x001F#define MBOX_CMD_SET_ISNS_SERVICE 0x0021#define ISNS_DISABLE 0#define ISNS_ENABLE 1#define MBOX_CMD_COPY_FLASH 0x0024#define MBOX_CMD_WRITE_FLASH 0x0025#define MBOX_CMD_READ_FLASH 0x0026#define MBOX_CMD_CLEAR_DATABASE_ENTRY 0x0031#define MBOX_CMD_CONN_CLOSE_SESS_LOGOUT 0x0056#define LOGOUT_OPTION_CLOSE_SESSION 0x01#define LOGOUT_OPTION_RELOGIN 0x02#define MBOX_CMD_EXECUTE_IOCB_A64 0x005A#define MBOX_CMD_INITIALIZE_FIRMWARE 0x0060#define MBOX_CMD_GET_INIT_FW_CTRL_BLOCK 0x0061#define MBOX_CMD_REQUEST_DATABASE_ENTRY 0x0062#define MBOX_CMD_SET_DATABASE_ENTRY 0x0063#define MBOX_CMD_GET_DATABASE_ENTRY 0x0064#define DDB_DS_UNASSIGNED 0x00#define DDB_DS_NO_CONNECTION_ACTIVE 0x01#define DDB_DS_SESSION_ACTIVE 0x04#define DDB_DS_SESSION_FAILED 0x06#define DDB_DS_LOGIN_IN_PROCESS 0x07#define MBOX_CMD_GET_FW_STATE 0x0069#define MBOX_CMD_GET_INIT_FW_CTRL_BLOCK_DEFAULTS 0x006A#define MBOX_CMD_RESTORE_FACTORY_DEFAULTS 0x0087#define MBOX_CMD_SET_ACB 0x0088#define MBOX_CMD_GET_ACB 0x0089#define MBOX_CMD_DISABLE_ACB 0x008A#define MBOX_CMD_GET_IPV6_NEIGHBOR_CACHE 0x008B#define MBOX_CMD_GET_IPV6_DEST_CACHE 0x008C#define MBOX_CMD_GET_IPV6_DEF_ROUTER_LIST 0x008D#define MBOX_CMD_GET_IPV6_LCL_PREFIX_LIST 0x008E#define MBOX_CMD_SET_IPV6_NEIGHBOR_CACHE 0x0090#define MBOX_CMD_GET_IP_ADDR_STATE 0x0091#define MBOX_CMD_SEND_IPV6_ROUTER_SOL 0x0092#define MBOX_CMD_GET_DB_ENTRY_CURRENT_IP_ADDR 0x0093/* Mailbox 1 */#define FW_STATE_READY 0x0000#define FW_STATE_CONFIG_WAIT 0x0001#define FW_STATE_WAIT_LOGIN 0x0002#define FW_STATE_ERROR 0x0004#define FW_STATE_DHCP_IN_PROGRESS 0x0008/* Mailbox 3 */#define FW_ADDSTATE_OPTICAL_MEDIA 0x0001#define FW_ADDSTATE_DHCP_ENABLED 0x0002#define FW_ADDSTATE_LINK_UP 0x0010#define FW_ADDSTATE_ISNS_SVC_ENABLED 0x0020#define MBOX_CMD_GET_DATABASE_ENTRY_DEFAULTS 0x006B#define MBOX_CMD_CONN_OPEN_SESS_LOGIN 0x0074#define MBOX_CMD_GET_CRASH_RECORD 0x0076 /* 4010 only */#define MBOX_CMD_GET_CONN_EVENT_LOG 0x0077/* Mailbox status definitions */#define MBOX_COMPLETION_STATUS 4#define MBOX_STS_BUSY 0x0007#define MBOX_STS_INTERMEDIATE_COMPLETION 0x1000#define MBOX_STS_COMMAND_COMPLETE 0x4000#define MBOX_STS_COMMAND_ERROR 0x4005#define MBOX_ASYNC_EVENT_STATUS 8#define MBOX_ASTS_SYSTEM_ERROR 0x8002#define MBOX_ASTS_REQUEST_TRANSFER_ERROR 0x8003#define MBOX_ASTS_RESPONSE_TRANSFER_ERROR 0x8004#define MBOX_ASTS_PROTOCOL_STATISTIC_ALARM 0x8005#define MBOX_ASTS_SCSI_COMMAND_PDU_REJECTED 0x8006#define MBOX_ASTS_LINK_UP 0x8010#define MBOX_ASTS_LINK_DOWN 0x8011#define MBOX_ASTS_DATABASE_CHANGED 0x8014#define MBOX_ASTS_UNSOLICITED_PDU_RECEIVED 0x8015#define MBOX_ASTS_SELF_TEST_FAILED 0x8016#define MBOX_ASTS_LOGIN_FAILED 0x8017#define MBOX_ASTS_DNS 0x8018#define MBOX_ASTS_HEARTBEAT 0x8019#define MBOX_ASTS_NVRAM_INVALID 0x801A#define MBOX_ASTS_MAC_ADDRESS_CHANGED 0x801B#define MBOX_ASTS_IP_ADDRESS_CHANGED 0x801C#define MBOX_ASTS_DHCP_LEASE_EXPIRED 0x801D#define MBOX_ASTS_DHCP_LEASE_ACQUIRED 0x801F#define MBOX_ASTS_ISNS_UNSOLICITED_PDU_RECEIVED 0x8021#define MBOX_ASTS_DUPLICATE_IP 0x8025#define MBOX_ASTS_ARP_COMPLETE 0x8026#define MBOX_ASTS_SUBNET_STATE_CHANGE 0x8027#define MBOX_ASTS_RESPONSE_QUEUE_FULL 0x8028#define MBOX_ASTS_IP_ADDR_STATE_CHANGED 0x8029#define MBOX_ASTS_IPV6_PREFIX_EXPIRED 0x802B#define MBOX_ASTS_IPV6_ND_PREFIX_IGNORED 0x802C#define MBOX_ASTS_IPV6_LCL_PREFIX_IGNORED 0x802D#define MBOX_ASTS_ICMPV6_ERROR_MSG_RCVD 0x802E#define ISNS_EVENT_DATA_RECEIVED 0x0000#define ISNS_EVENT_CONNECTION_OPENED 0x0001#define ISNS_EVENT_CONNECTION_FAILED 0x0002#define MBOX_ASTS_IPSEC_SYSTEM_FATAL_ERROR 0x8022#define MBOX_ASTS_SUBNET_STATE_CHANGE 0x8027/*************************************************************************//* Host Adapter Initialization Control Block (from host) */struct addr_ctrl_blk { uint8_t version; /* 00 */ uint8_t control; /* 01 */ uint16_t fw_options; /* 02-03 */#define FWOPT_HEARTBEAT_ENABLE 0x1000#define FWOPT_SESSION_MODE 0x0040#define FWOPT_INITIATOR_MODE 0x0020#define FWOPT_TARGET_MODE 0x0010 uint16_t exec_throttle; /* 04-05 */ uint8_t zio_count; /* 06 */ uint8_t res0; /* 07 */ uint16_t eth_mtu_size; /* 08-09 */ uint16_t add_fw_options; /* 0A-0B */ uint8_t hb_interval; /* 0C */ uint8_t inst_num; /* 0D */ uint16_t res1; /* 0E-0F */ uint16_t rqq_consumer_idx; /* 10-11 */ uint16_t compq_producer_idx; /* 12-13 */ uint16_t rqq_len; /* 14-15 */ uint16_t compq_len; /* 16-17 */ uint32_t rqq_addr_lo; /* 18-1B */ uint32_t rqq_addr_hi; /* 1C-1F */ uint32_t compq_addr_lo; /* 20-23 */ uint32_t compq_addr_hi; /* 24-27 */ uint32_t shdwreg_addr_lo; /* 28-2B */ uint32_t shdwreg_addr_hi; /* 2C-2F */ uint16_t iscsi_opts; /* 30-31 */ uint16_t ipv4_tcp_opts; /* 32-33 */ uint16_t ipv4_ip_opts; /* 34-35 */ uint16_t iscsi_max_pdu_size; /* 36-37 */ uint8_t ipv4_tos; /* 38 */ uint8_t ipv4_ttl; /* 39 */ uint8_t acb_version; /* 3A */ uint8_t res2; /* 3B */ uint16_t def_timeout; /* 3C-3D */ uint16_t iscsi_fburst_len; /* 3E-3F */ uint16_t iscsi_def_time2wait; /* 40-41 */ uint16_t iscsi_def_time2retain; /* 42-43 */ uint16_t iscsi_max_outstnd_r2t; /* 44-45 */ uint16_t conn_ka_timeout; /* 46-47 */ uint16_t ipv4_port; /* 48-49 */ uint16_t iscsi_max_burst_len; /* 4A-4B */ uint32_t res5; /* 4C-4F */ uint8_t ipv4_addr[4]; /* 50-53 */ uint16_t ipv4_vlan_tag; /* 54-55 */ uint8_t ipv4_addr_state; /* 56 */ uint8_t ipv4_cacheid; /* 57 */ uint8_t res6[8]; /* 58-5F */ uint8_t ipv4_subnet[4]; /* 60-63 */ uint8_t res7[12]; /* 64-6F */ uint8_t ipv4_gw_addr[4]; /* 70-73 */ uint8_t res8[0xc]; /* 74-7F */ uint8_t pri_dns_srvr_ip[4];/* 80-83 */ uint8_t sec_dns_srvr_ip[4];/* 84-87 */ uint16_t min_eph_port; /* 88-89 */ uint16_t max_eph_port; /* 8A-8B */ uint8_t res9[4]; /* 8C-8F */ uint8_t iscsi_alias[32];/* 90-AF */ uint8_t res9_1[0x16]; /* B0-C5 */ uint16_t tgt_portal_grp;/* C6-C7 */ uint8_t abort_timer; /* C8 */ uint8_t ipv4_tcp_wsf; /* C9 */ uint8_t res10[6]; /* CA-CF */ uint8_t ipv4_sec_ip_addr[4]; /* D0-D3 */ uint8_t ipv4_dhcp_vid_len; /* D4 */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?