📄 qla_fw.h
字号:
/* * QLogic Fibre Channel HBA Driver * Copyright (c) 2003-2005 QLogic Corporation * * See LICENSE.qla2xxx for copyright and licensing details. */#ifndef __QLA_FW_H#define __QLA_FW_H#define RISC_SADDRESS 0x100000#define MBS_CHECKSUM_ERROR 0x4010/* * Firmware Options. */#define FO1_ENABLE_PUREX BIT_10#define FO1_DISABLE_LED_CTRL BIT_6#define FO2_ENABLE_SEL_CLASS2 BIT_5#define FO3_NO_ABTS_ON_LINKDOWN BIT_14/* * Port Database structure definition for ISP 24xx. */#define PDO_FORCE_ADISC BIT_1#define PDO_FORCE_PLOGI BIT_0#define PORT_DATABASE_24XX_SIZE 64struct port_database_24xx { uint16_t flags;#define PDF_TASK_RETRY_ID BIT_14#define PDF_FC_TAPE BIT_7#define PDF_ACK0_CAPABLE BIT_6#define PDF_FCP2_CONF BIT_5#define PDF_CLASS_2 BIT_4#define PDF_HARD_ADDR BIT_1 uint8_t current_login_state; uint8_t last_login_state;#define PDS_PLOGI_PENDING 0x03#define PDS_PLOGI_COMPLETE 0x04#define PDS_PRLI_PENDING 0x05#define PDS_PRLI_COMPLETE 0x06#define PDS_PORT_UNAVAILABLE 0x07#define PDS_PRLO_PENDING 0x09#define PDS_LOGO_PENDING 0x11#define PDS_PRLI2_PENDING 0x12 uint8_t hard_address[3]; uint8_t reserved_1; uint8_t port_id[3]; uint8_t sequence_id; uint16_t port_timer; uint16_t nport_handle; /* N_PORT handle. */ uint16_t receive_data_size; uint16_t reserved_2; uint8_t prli_svc_param_word_0[2]; /* Big endian */ /* Bits 15-0 of word 0 */ uint8_t prli_svc_param_word_3[2]; /* Big endian */ /* Bits 15-0 of word 3 */ uint8_t port_name[WWN_SIZE]; uint8_t node_name[WWN_SIZE]; uint8_t reserved_3[24];};struct nvram_24xx { /* NVRAM header. */ uint8_t id[4]; uint16_t nvram_version; uint16_t reserved_0; /* Firmware Initialization Control Block. */ uint16_t version; uint16_t reserved_1; uint16_t frame_payload_size; uint16_t execution_throttle; uint16_t exchange_count; uint16_t hard_address; uint8_t port_name[WWN_SIZE]; uint8_t node_name[WWN_SIZE]; uint16_t login_retry_count; uint16_t link_down_on_nos; uint16_t interrupt_delay_timer; uint16_t login_timeout; uint32_t firmware_options_1; uint32_t firmware_options_2; uint32_t firmware_options_3; /* Offset 56. */ /* * BIT 0 = Control Enable * BIT 1-15 = * * BIT 0-7 = Reserved * BIT 8-10 = Output Swing 1G * BIT 11-13 = Output Emphasis 1G * BIT 14-15 = Reserved * * BIT 0-7 = Reserved * BIT 8-10 = Output Swing 2G * BIT 11-13 = Output Emphasis 2G * BIT 14-15 = Reserved * * BIT 0-7 = Reserved * BIT 8-10 = Output Swing 4G * BIT 11-13 = Output Emphasis 4G * BIT 14-15 = Reserved */ uint16_t seriallink_options[4]; uint16_t reserved_2[16]; /* Offset 96. */ uint16_t reserved_3[16]; /* PCIe table entries. */ uint16_t reserved_4[16]; /* Offset 160. */ uint16_t reserved_5[16]; /* Offset 192. */ uint16_t reserved_6[16]; /* Offset 224. */ uint16_t reserved_7[16]; /* * BIT 0 = Enable spinup delay * BIT 1 = Disable BIOS * BIT 2 = Enable Memory Map BIOS * BIT 3 = Enable Selectable Boot * BIT 4 = Disable RISC code load * BIT 5 = * BIT 6 = * BIT 7 = * * BIT 8 = * BIT 9 = * BIT 10 = Enable lip full login * BIT 11 = Enable target reset * BIT 12 = * BIT 13 = * BIT 14 = * BIT 15 = Enable alternate WWN * * BIT 16-31 = */ uint32_t host_p; uint8_t alternate_port_name[WWN_SIZE]; uint8_t alternate_node_name[WWN_SIZE]; uint8_t boot_port_name[WWN_SIZE]; uint16_t boot_lun_number; uint16_t reserved_8; uint8_t alt1_boot_port_name[WWN_SIZE]; uint16_t alt1_boot_lun_number; uint16_t reserved_9; uint8_t alt2_boot_port_name[WWN_SIZE]; uint16_t alt2_boot_lun_number; uint16_t reserved_10; uint8_t alt3_boot_port_name[WWN_SIZE]; uint16_t alt3_boot_lun_number; uint16_t reserved_11; /* * BIT 0 = Selective Login * BIT 1 = Alt-Boot Enable * BIT 2 = Reserved * BIT 3 = Boot Order List * BIT 4 = Reserved * BIT 5 = Selective LUN * BIT 6 = Reserved * BIT 7-31 = */ uint32_t efi_parameters; uint8_t reset_delay; uint8_t reserved_12; uint16_t reserved_13; uint16_t boot_id_number; uint16_t reserved_14; uint16_t max_luns_per_target; uint16_t reserved_15; uint16_t port_down_retry_count; uint16_t link_down_timeout; /* FCode parameters. */ uint16_t fcode_parameter; uint16_t reserved_16[3]; /* Offset 352. */ uint8_t prev_drv_ver_major; uint8_t prev_drv_ver_submajob; uint8_t prev_drv_ver_minor; uint8_t prev_drv_ver_subminor; uint16_t prev_bios_ver_major; uint16_t prev_bios_ver_minor; uint16_t prev_efi_ver_major; uint16_t prev_efi_ver_minor; uint16_t prev_fw_ver_major; uint8_t prev_fw_ver_minor; uint8_t prev_fw_ver_subminor; uint16_t reserved_17[8]; /* Offset 384. */ uint16_t reserved_18[16]; /* Offset 416. */ uint16_t reserved_19[16]; /* Offset 448. */ uint16_t reserved_20[16]; /* Offset 480. */ uint8_t model_name[16]; uint16_t reserved_21[2]; /* Offset 500. */ /* HW Parameter Block. */ uint16_t pcie_table_sig; uint16_t pcie_table_offset; uint16_t subsystem_vendor_id; uint16_t subsystem_device_id; uint32_t checksum;};/* * ISP Initialization Control Block. * Little endian except where noted. */#define ICB_VERSION 1struct init_cb_24xx { uint16_t version; uint16_t reserved_1; uint16_t frame_payload_size; uint16_t execution_throttle; uint16_t exchange_count; uint16_t hard_address; uint8_t port_name[WWN_SIZE]; /* Big endian. */ uint8_t node_name[WWN_SIZE]; /* Big endian. */ uint16_t response_q_inpointer; uint16_t request_q_outpointer; uint16_t login_retry_count; uint16_t prio_request_q_outpointer; uint16_t response_q_length; uint16_t request_q_length; uint16_t link_down_timeout; /* Milliseconds. */ uint16_t prio_request_q_length; uint32_t request_q_address[2]; uint32_t response_q_address[2]; uint32_t prio_request_q_address[2]; uint8_t reserved_2[8]; uint16_t atio_q_inpointer; uint16_t atio_q_length; uint32_t atio_q_address[2]; uint16_t interrupt_delay_timer; /* 100us increments. */ uint16_t login_timeout; /* * BIT 0 = Enable Hard Loop Id * BIT 1 = Enable Fairness * BIT 2 = Enable Full-Duplex * BIT 3 = Reserved * BIT 4 = Enable Target Mode * BIT 5 = Disable Initiator Mode * BIT 6 = Reserved * BIT 7 = Reserved * * BIT 8 = Reserved * BIT 9 = Non Participating LIP * BIT 10 = Descending Loop ID Search * BIT 11 = Acquire Loop ID in LIPA * BIT 12 = Reserved * BIT 13 = Full Login after LIP * BIT 14 = Node Name Option * BIT 15-31 = Reserved */ uint32_t firmware_options_1; /* * BIT 0 = Operation Mode bit 0 * BIT 1 = Operation Mode bit 1 * BIT 2 = Operation Mode bit 2 * BIT 3 = Operation Mode bit 3 * BIT 4 = Connection Options bit 0 * BIT 5 = Connection Options bit 1 * BIT 6 = Connection Options bit 2 * BIT 7 = Enable Non part on LIHA failure * * BIT 8 = Enable Class 2 * BIT 9 = Enable ACK0 * BIT 10 = Reserved * BIT 11 = Enable FC-SP Security * BIT 12 = FC Tape Enable * BIT 13-31 = Reserved */ uint32_t firmware_options_2; /* * BIT 0 = Reserved * BIT 1 = Soft ID only * BIT 2 = Reserved * BIT 3 = Reserved * BIT 4 = FCP RSP Payload bit 0 * BIT 5 = FCP RSP Payload bit 1 * BIT 6 = Enable Receive Out-of-Order data frame handling * BIT 7 = Disable Automatic PLOGI on Local Loop * * BIT 8 = Reserved * BIT 9 = Enable Out-of-Order FCP_XFER_RDY relative offset handling * BIT 10 = Reserved * BIT 11 = Reserved * BIT 12 = Reserved * BIT 13 = Data Rate bit 0 * BIT 14 = Data Rate bit 1 * BIT 15 = Data Rate bit 2 * BIT 16-31 = Reserved */ uint32_t firmware_options_3; uint8_t reserved_3[24];};/* * ISP queue - command entry structure definition. */#define COMMAND_TYPE_6 0x48 /* Command Type 6 entry */struct cmd_type_6 { uint8_t entry_type; /* Entry type. */ uint8_t entry_count; /* Entry count. */ uint8_t sys_define; /* System defined. */ uint8_t entry_status; /* Entry Status. */ uint32_t handle; /* System handle. */ uint16_t nport_handle; /* N_PORT handle. */ uint16_t timeout; /* Command timeout. */ uint16_t dseg_count; /* Data segment count. */ uint16_t fcp_rsp_dsd_len; /* FCP_RSP DSD length. */ struct scsi_lun lun; /* FCP LUN (BE). */ uint16_t control_flags; /* Control flags. */#define CF_DATA_SEG_DESCR_ENABLE BIT_2#define CF_READ_DATA BIT_1#define CF_WRITE_DATA BIT_0 uint16_t fcp_cmnd_dseg_len; /* Data segment length. */ uint32_t fcp_cmnd_dseg_address[2]; /* Data segment address. */ uint32_t fcp_rsp_dseg_address[2]; /* Data segment address. */ uint32_t byte_count; /* Total byte count. */ uint8_t port_id[3]; /* PortID of destination port. */ uint8_t vp_index; uint32_t fcp_data_dseg_address[2]; /* Data segment address. */ uint16_t fcp_data_dseg_len; /* Data segment length. */ uint16_t reserved_1; /* MUST be set to 0. */};#define COMMAND_TYPE_7 0x18 /* Command Type 7 entry */struct cmd_type_7 { uint8_t entry_type; /* Entry type. */ uint8_t entry_count; /* Entry count. */ uint8_t sys_define; /* System defined. */ uint8_t entry_status; /* Entry Status. */ uint32_t handle; /* System handle. */ uint16_t nport_handle; /* N_PORT handle. */ uint16_t timeout; /* Command timeout. */#define FW_MAX_TIMEOUT 0x1999 uint16_t dseg_count; /* Data segment count. */ uint16_t reserved_1; struct scsi_lun lun; /* FCP LUN (BE). */ uint16_t task_mgmt_flags; /* Task management flags. */#define TMF_CLEAR_ACA BIT_14#define TMF_TARGET_RESET BIT_13#define TMF_LUN_RESET BIT_12#define TMF_CLEAR_TASK_SET BIT_10#define TMF_ABORT_TASK_SET BIT_9#define TMF_READ_DATA BIT_1#define TMF_WRITE_DATA BIT_0 uint8_t task;#define TSK_SIMPLE 0#define TSK_HEAD_OF_QUEUE 1#define TSK_ORDERED 2#define TSK_ACA 4#define TSK_UNTAGGED 5 uint8_t crn; uint8_t fcp_cdb[MAX_CMDSZ]; /* SCSI command words. */ uint32_t byte_count; /* Total byte count. */ uint8_t port_id[3]; /* PortID of destination port. */ uint8_t vp_index; uint32_t dseg_0_address[2]; /* Data segment 0 address. */ uint32_t dseg_0_len; /* Data segment 0 length. */};/* * ISP queue - status entry structure definition. */#define STATUS_TYPE 0x03 /* Status entry. */struct sts_entry_24xx { uint8_t entry_type; /* Entry type. */ uint8_t entry_count; /* Entry count. */ uint8_t sys_define; /* System defined. */ uint8_t entry_status; /* Entry Status. */ uint32_t handle; /* System handle. */ uint16_t comp_status; /* Completion status. */ uint16_t ox_id; /* OX_ID used by the firmware. */ uint32_t residual_len; /* Residual transfer length. */ uint16_t reserved_1; uint16_t state_flags; /* State flags. */#define SF_TRANSFERRED_DATA BIT_11#define SF_FCP_RSP_DMA BIT_0 uint16_t reserved_2; uint16_t scsi_status; /* SCSI status. */#define SS_CONFIRMATION_REQ BIT_12 uint32_t rsp_residual_count; /* FCP RSP residual count. */ uint32_t sense_len; /* FCP SENSE length. */ uint32_t rsp_data_len; /* FCP response data length. */ uint8_t data[28]; /* FCP response/sense information. */};/* * Status entry completion status */#define CS_DATA_REASSEMBLY_ERROR 0x11 /* Data Reassembly Error.. */#define CS_ABTS_BY_TARGET 0x13 /* Target send ABTS to abort IOCB. */#define CS_FW_RESOURCE 0x2C /* Firmware Resource Unavailable. */#define CS_TASK_MGMT_OVERRUN 0x30 /* Task management overrun (8+). */#define CS_ABORT_BY_TARGET 0x47 /* Abort By Target. *//* * ISP queue - marker entry structure definition. */#define MARKER_TYPE 0x04 /* Marker entry. */struct mrk_entry_24xx { uint8_t entry_type; /* Entry type. */ uint8_t entry_count; /* Entry count. */ uint8_t handle_count; /* Handle count. */ uint8_t entry_status; /* Entry Status. */ uint32_t handle; /* System handle. */ uint16_t nport_handle; /* N_PORT handle. */ uint8_t modifier; /* Modifier (7-0). */#define MK_SYNC_ID_LUN 0 /* Synchronize ID/LUN */#define MK_SYNC_ID 1 /* Synchronize ID */#define MK_SYNC_ALL 2 /* Synchronize all ID/LUN */ uint8_t reserved_1; uint8_t reserved_2; uint8_t vp_index; uint16_t reserved_3; uint8_t lun[8]; /* FCP LUN (BE). */ uint8_t reserved_4[40];};/* * ISP queue - CT Pass-Through entry structure definition. */#define CT_IOCB_TYPE 0x29 /* CT Pass-Through IOCB entry */struct ct_entry_24xx { uint8_t entry_type; /* Entry type. */ uint8_t entry_count; /* Entry count. */ uint8_t sys_define; /* System Defined. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -