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 + -
显示快捷键?