qla3xxx.h
来自「linux 内核源代码」· C头文件 代码 · 共 1,296 行 · 第 1/3 页
H
1,296 行
/* * QLogic QLA3xxx NIC HBA Driver * Copyright (c) 2003-2006 QLogic Corporation * * See LICENSE.qla3xxx for copyright and licensing details. */#ifndef _QLA3XXX_H_#define _QLA3XXX_H_/* * IOCB Definitions... */#pragma pack(1)#define OPCODE_OB_MAC_IOCB_FN0 0x01#define OPCODE_OB_MAC_IOCB_FN2 0x21#define OPCODE_OB_TCP_IOCB_FN0 0x03#define OPCODE_OB_TCP_IOCB_FN2 0x23#define OPCODE_UPDATE_NCB_IOCB_FN0 0x00#define OPCODE_UPDATE_NCB_IOCB_FN2 0x20#define OPCODE_UPDATE_NCB_IOCB 0xF0#define OPCODE_IB_MAC_IOCB 0xF9#define OPCODE_IB_3032_MAC_IOCB 0x09#define OPCODE_IB_IP_IOCB 0xFA#define OPCODE_IB_3032_IP_IOCB 0x0A#define OPCODE_IB_TCP_IOCB 0xFB#define OPCODE_DUMP_PROTO_IOCB 0xFE#define OPCODE_BUFFER_ALERT_IOCB 0xFB#define OPCODE_FUNC_ID_MASK 0x30#define OUTBOUND_MAC_IOCB 0x01 /* plus function bits */#define OUTBOUND_TCP_IOCB 0x03 /* plus function bits */#define UPDATE_NCB_IOCB 0x00 /* plus function bits */#define FN0_MA_BITS_MASK 0x00#define FN1_MA_BITS_MASK 0x80struct ob_mac_iocb_req { u8 opcode; u8 flags;#define OB_MAC_IOCB_REQ_MA 0xe0#define OB_MAC_IOCB_REQ_F 0x10#define OB_MAC_IOCB_REQ_X 0x08#define OB_MAC_IOCB_REQ_D 0x02#define OB_MAC_IOCB_REQ_I 0x01 u8 flags1;#define OB_3032MAC_IOCB_REQ_IC 0x04#define OB_3032MAC_IOCB_REQ_TC 0x02#define OB_3032MAC_IOCB_REQ_UC 0x01 u8 reserved0; __le32 transaction_id; __le16 data_len; u8 ip_hdr_off; u8 ip_hdr_len; __le32 reserved1; __le32 reserved2; __le32 buf_addr0_low; __le32 buf_addr0_high; __le32 buf_0_len; __le32 buf_addr1_low; __le32 buf_addr1_high; __le32 buf_1_len; __le32 buf_addr2_low; __le32 buf_addr2_high; __le32 buf_2_len; __le32 reserved3; __le32 reserved4;};/* * The following constants define control bits for buffer * length fields for all IOCB's. */#define OB_MAC_IOCB_REQ_E 0x80000000 /* Last valid buffer in list. */#define OB_MAC_IOCB_REQ_C 0x40000000 /* points to an OAL. (continuation) */#define OB_MAC_IOCB_REQ_L 0x20000000 /* Auburn local address pointer. */#define OB_MAC_IOCB_REQ_R 0x10000000 /* 32-bit address pointer. */struct ob_mac_iocb_rsp { u8 opcode; u8 flags;#define OB_MAC_IOCB_RSP_P 0x08#define OB_MAC_IOCB_RSP_L 0x04#define OB_MAC_IOCB_RSP_S 0x02#define OB_MAC_IOCB_RSP_I 0x01 __le16 reserved0; __le32 transaction_id; __le32 reserved1; __le32 reserved2;};struct ib_mac_iocb_rsp { u8 opcode;#define IB_MAC_IOCB_RSP_V 0x80 u8 flags;#define IB_MAC_IOCB_RSP_S 0x80#define IB_MAC_IOCB_RSP_H1 0x40#define IB_MAC_IOCB_RSP_H0 0x20#define IB_MAC_IOCB_RSP_B 0x10#define IB_MAC_IOCB_RSP_M 0x08#define IB_MAC_IOCB_RSP_MA 0x07 __le16 length; __le32 reserved; __le32 ial_low; __le32 ial_high;};struct ob_ip_iocb_req { u8 opcode; __le16 flags;#define OB_IP_IOCB_REQ_O 0x100#define OB_IP_IOCB_REQ_H 0x008#define OB_IP_IOCB_REQ_U 0x004#define OB_IP_IOCB_REQ_D 0x002#define OB_IP_IOCB_REQ_I 0x001 u8 reserved0; __le32 transaction_id; __le16 data_len; __le16 reserved1; __le32 hncb_ptr_low; __le32 hncb_ptr_high; __le32 buf_addr0_low; __le32 buf_addr0_high; __le32 buf_0_len; __le32 buf_addr1_low; __le32 buf_addr1_high; __le32 buf_1_len; __le32 buf_addr2_low; __le32 buf_addr2_high; __le32 buf_2_len; __le32 reserved2; __le32 reserved3;};/* defines for BufferLength fields above */#define OB_IP_IOCB_REQ_E 0x80000000#define OB_IP_IOCB_REQ_C 0x40000000#define OB_IP_IOCB_REQ_L 0x20000000#define OB_IP_IOCB_REQ_R 0x10000000struct ob_ip_iocb_rsp { u8 opcode; u8 flags;#define OB_MAC_IOCB_RSP_H 0x10#define OB_MAC_IOCB_RSP_E 0x08#define OB_MAC_IOCB_RSP_L 0x04#define OB_MAC_IOCB_RSP_S 0x02#define OB_MAC_IOCB_RSP_I 0x01 __le16 reserved0; __le32 transaction_id; __le32 reserved1; __le32 reserved2;};struct ob_tcp_iocb_req { u8 opcode; u8 flags0;#define OB_TCP_IOCB_REQ_P 0x80#define OB_TCP_IOCB_REQ_CI 0x20#define OB_TCP_IOCB_REQ_H 0x10#define OB_TCP_IOCB_REQ_LN 0x08#define OB_TCP_IOCB_REQ_K 0x04#define OB_TCP_IOCB_REQ_D 0x02#define OB_TCP_IOCB_REQ_I 0x01 u8 flags1;#define OB_TCP_IOCB_REQ_OSM 0x40#define OB_TCP_IOCB_REQ_URG 0x20#define OB_TCP_IOCB_REQ_ACK 0x10#define OB_TCP_IOCB_REQ_PSH 0x08#define OB_TCP_IOCB_REQ_RST 0x04#define OB_TCP_IOCB_REQ_SYN 0x02#define OB_TCP_IOCB_REQ_FIN 0x01 u8 options_len;#define OB_TCP_IOCB_REQ_OMASK 0xF0#define OB_TCP_IOCB_REQ_SHIFT 4 __le32 transaction_id; __le32 data_len; __le32 hncb_ptr_low; __le32 hncb_ptr_high; __le32 buf_addr0_low; __le32 buf_addr0_high; __le32 buf_0_len; __le32 buf_addr1_low; __le32 buf_addr1_high; __le32 buf_1_len; __le32 buf_addr2_low; __le32 buf_addr2_high; __le32 buf_2_len; __le32 time_stamp; __le32 reserved1;};struct ob_tcp_iocb_rsp { u8 opcode; u8 flags0;#define OB_TCP_IOCB_RSP_C 0x20#define OB_TCP_IOCB_RSP_H 0x10#define OB_TCP_IOCB_RSP_LN 0x08#define OB_TCP_IOCB_RSP_K 0x04#define OB_TCP_IOCB_RSP_D 0x02#define OB_TCP_IOCB_RSP_I 0x01 u8 flags1;#define OB_TCP_IOCB_RSP_E 0x10#define OB_TCP_IOCB_RSP_W 0x08#define OB_TCP_IOCB_RSP_P 0x04#define OB_TCP_IOCB_RSP_T 0x02#define OB_TCP_IOCB_RSP_F 0x01 u8 state;#define OB_TCP_IOCB_RSP_SMASK 0xF0#define OB_TCP_IOCB_RSP_SHIFT 4 __le32 transaction_id; __le32 local_ncb_ptr; __le32 reserved0;};struct ib_ip_iocb_rsp { u8 opcode;#define IB_IP_IOCB_RSP_3032_V 0x80#define IB_IP_IOCB_RSP_3032_O 0x40#define IB_IP_IOCB_RSP_3032_I 0x20#define IB_IP_IOCB_RSP_3032_R 0x10 u8 flags;#define IB_IP_IOCB_RSP_S 0x80#define IB_IP_IOCB_RSP_H1 0x40#define IB_IP_IOCB_RSP_H0 0x20#define IB_IP_IOCB_RSP_B 0x10#define IB_IP_IOCB_RSP_M 0x08#define IB_IP_IOCB_RSP_MA 0x07 __le16 length; __le16 checksum;#define IB_IP_IOCB_RSP_3032_ICE 0x01#define IB_IP_IOCB_RSP_3032_CE 0x02#define IB_IP_IOCB_RSP_3032_NUC 0x04#define IB_IP_IOCB_RSP_3032_UDP 0x08#define IB_IP_IOCB_RSP_3032_TCP 0x10#define IB_IP_IOCB_RSP_3032_IPE 0x20 __le16 reserved;#define IB_IP_IOCB_RSP_R 0x01 __le32 ial_low; __le32 ial_high;};struct ib_tcp_iocb_rsp { u8 opcode; u8 flags;#define IB_TCP_IOCB_RSP_P 0x80#define IB_TCP_IOCB_RSP_T 0x40#define IB_TCP_IOCB_RSP_D 0x20#define IB_TCP_IOCB_RSP_N 0x10#define IB_TCP_IOCB_RSP_IP 0x03#define IB_TCP_FLAG_MASK 0xf0#define IB_TCP_FLAG_IOCB_SYN 0x00#define TCP_IB_RSP_FLAGS(x) (x->flags & ~IB_TCP_FLAG_MASK) __le16 length; __le32 hncb_ref_num; __le32 ial_low; __le32 ial_high;};struct net_rsp_iocb { u8 opcode; u8 flags; __le16 reserved0; __le32 reserved[3];};#pragma pack()/* * Register Definitions... */#define PORT0_PHY_ADDRESS 0x1e00#define PORT1_PHY_ADDRESS 0x1f00#define ETHERNET_CRC_SIZE 4#define MII_SCAN_REGISTER 0x00000001#define PHY_ID_0_REG 2#define PHY_ID_1_REG 3#define PHY_OUI_1_MASK 0xfc00#define PHY_MODEL_MASK 0x03f0/* Address for the Agere Phy */#define MII_AGERE_ADDR_1 0x00001000#define MII_AGERE_ADDR_2 0x00001100/* 32-bit ispControlStatus */enum { ISP_CONTROL_NP_MASK = 0x0003, ISP_CONTROL_NP_PCSR = 0x0000, ISP_CONTROL_NP_HMCR = 0x0001, ISP_CONTROL_NP_LRAMCR = 0x0002, ISP_CONTROL_NP_PSR = 0x0003, ISP_CONTROL_RI = 0x0008, ISP_CONTROL_CI = 0x0010, ISP_CONTROL_PI = 0x0020, ISP_CONTROL_IN = 0x0040, ISP_CONTROL_BE = 0x0080, ISP_CONTROL_FN_MASK = 0x0700, ISP_CONTROL_FN0_NET = 0x0400, ISP_CONTROL_FN0_SCSI = 0x0500, ISP_CONTROL_FN1_NET = 0x0600, ISP_CONTROL_FN1_SCSI = 0x0700, ISP_CONTROL_LINK_DN_0 = 0x0800, ISP_CONTROL_LINK_DN_1 = 0x1000, ISP_CONTROL_FSR = 0x2000, ISP_CONTROL_FE = 0x4000, ISP_CONTROL_SR = 0x8000,};/* 32-bit ispInterruptMaskReg */enum { ISP_IMR_ENABLE_INT = 0x0004, ISP_IMR_DISABLE_RESET_INT = 0x0008, ISP_IMR_DISABLE_CMPL_INT = 0x0010, ISP_IMR_DISABLE_PROC_INT = 0x0020,};/* 32-bit serialPortInterfaceReg */enum { ISP_SERIAL_PORT_IF_CLK = 0x0001, ISP_SERIAL_PORT_IF_CS = 0x0002, ISP_SERIAL_PORT_IF_D0 = 0x0004, ISP_SERIAL_PORT_IF_DI = 0x0008, ISP_NVRAM_MASK = (0x000F << 16), ISP_SERIAL_PORT_IF_WE = 0x0010, ISP_SERIAL_PORT_IF_NVR_MASK = 0x001F, ISP_SERIAL_PORT_IF_SCI = 0x0400, ISP_SERIAL_PORT_IF_SC0 = 0x0800, ISP_SERIAL_PORT_IF_SCE = 0x1000, ISP_SERIAL_PORT_IF_SDI = 0x2000, ISP_SERIAL_PORT_IF_SDO = 0x4000, ISP_SERIAL_PORT_IF_SDE = 0x8000, ISP_SERIAL_PORT_IF_I2C_MASK = 0xFC00,};/* semaphoreReg */enum { QL_RESOURCE_MASK_BASE_CODE = 0x7, QL_RESOURCE_BITS_BASE_CODE = 0x4, QL_DRVR_SEM_BITS = (QL_RESOURCE_BITS_BASE_CODE << 1), QL_DDR_RAM_SEM_BITS = (QL_RESOURCE_BITS_BASE_CODE << 4), QL_PHY_GIO_SEM_BITS = (QL_RESOURCE_BITS_BASE_CODE << 7), QL_NVRAM_SEM_BITS = (QL_RESOURCE_BITS_BASE_CODE << 10), QL_FLASH_SEM_BITS = (QL_RESOURCE_BITS_BASE_CODE << 13), QL_DRVR_SEM_MASK = (QL_RESOURCE_MASK_BASE_CODE << (1 + 16)), QL_DDR_RAM_SEM_MASK = (QL_RESOURCE_MASK_BASE_CODE << (4 + 16)), QL_PHY_GIO_SEM_MASK = (QL_RESOURCE_MASK_BASE_CODE << (7 + 16)), QL_NVRAM_SEM_MASK = (QL_RESOURCE_MASK_BASE_CODE << (10 + 16)), QL_FLASH_SEM_MASK = (QL_RESOURCE_MASK_BASE_CODE << (13 + 16)),}; /* * QL3XXX memory-mapped registers * QL3XXX has 4 "pages" of registers, each page occupying * 256 bytes. Each page has a "common" area at the start and then * page-specific registers after that. */struct ql3xxx_common_registers { u32 MB0; /* Offset 0x00 */ u32 MB1; /* Offset 0x04 */ u32 MB2; /* Offset 0x08 */ u32 MB3; /* Offset 0x0c */ u32 MB4; /* Offset 0x10 */ u32 MB5; /* Offset 0x14 */ u32 MB6; /* Offset 0x18 */ u32 MB7; /* Offset 0x1c */ u32 flashBiosAddr; u32 flashBiosData; u32 ispControlStatus; u32 ispInterruptMaskReg; u32 serialPortInterfaceReg; u32 semaphoreReg; u32 reqQProducerIndex; u32 rspQConsumerIndex; u32 rxLargeQProducerIndex; u32 rxSmallQProducerIndex; u32 arcMadiCommand; u32 arcMadiData;};enum { EXT_HW_CONFIG_SP_MASK = 0x0006, EXT_HW_CONFIG_SP_NONE = 0x0000, EXT_HW_CONFIG_SP_BYTE_PARITY = 0x0002, EXT_HW_CONFIG_SP_ECC = 0x0004, EXT_HW_CONFIG_SP_ECCx = 0x0006, EXT_HW_CONFIG_SIZE_MASK = 0x0060, EXT_HW_CONFIG_SIZE_128M = 0x0000, EXT_HW_CONFIG_SIZE_256M = 0x0020, EXT_HW_CONFIG_SIZE_512M = 0x0040, EXT_HW_CONFIG_SIZE_INVALID = 0x0060, EXT_HW_CONFIG_PD = 0x0080, EXT_HW_CONFIG_FW = 0x0200, EXT_HW_CONFIG_US = 0x0400, EXT_HW_CONFIG_DCS_MASK = 0x1800, EXT_HW_CONFIG_DCS_9MA = 0x0000, EXT_HW_CONFIG_DCS_15MA = 0x0800, EXT_HW_CONFIG_DCS_18MA = 0x1000, EXT_HW_CONFIG_DCS_24MA = 0x1800, EXT_HW_CONFIG_DDS_MASK = 0x6000, EXT_HW_CONFIG_DDS_9MA = 0x0000, EXT_HW_CONFIG_DDS_15MA = 0x2000, EXT_HW_CONFIG_DDS_18MA = 0x4000, EXT_HW_CONFIG_DDS_24MA = 0x6000,};/* InternalChipConfig */enum { INTERNAL_CHIP_DM = 0x0001, INTERNAL_CHIP_SD = 0x0002, INTERNAL_CHIP_RAP_MASK = 0x000C,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?