Loading drivers/scsi/qla2xxx/qla_attr.c +1 −1 Original line number Diff line number Diff line Loading @@ -1291,7 +1291,7 @@ qla2x00_init_host_attr(scsi_qla_host_t *ha) if (IS_QLA25XX(ha)) speed = FC_PORTSPEED_8GBIT | FC_PORTSPEED_4GBIT | FC_PORTSPEED_2GBIT | FC_PORTSPEED_1GBIT; else if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) else if (IS_QLA24XX_TYPE(ha)) speed = FC_PORTSPEED_4GBIT | FC_PORTSPEED_2GBIT | FC_PORTSPEED_1GBIT; else if (IS_QLA23XX(ha)) Loading drivers/scsi/qla2xxx/qla_dbg.h +8 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ /* #define QL_DEBUG_LEVEL_13 */ /* Output fdmi function trace msgs */ /* #define QL_DEBUG_LEVEL_14 */ /* Output RSCN trace msgs */ /* #define QL_DEBUG_LEVEL_15 */ /* Output NPIV trace msgs */ /* #define QL_DEBUG_LEVEL_16 */ /* Output ISP84XX trace msgs */ /* * Macros use for debugging the driver. Loading @@ -41,6 +42,7 @@ #define DEBUG2_9_10(x) do { if (ql2xextended_error_logging) { x; } } while (0) #define DEBUG2_11(x) do { if (ql2xextended_error_logging) { x; } } while (0) #define DEBUG2_13(x) do { if (ql2xextended_error_logging) { x; } } while (0) #define DEBUG2_16(x) do { if (ql2xextended_error_logging) { x; } } while (0) #if defined(QL_DEBUG_LEVEL_3) #define DEBUG3(x) do {x;} while (0) Loading Loading @@ -120,6 +122,12 @@ #define DEBUG15(x) do {} while (0) #endif #if defined(QL_DEBUG_LEVEL_16) #define DEBUG16(x) do {x;} while (0) #else #define DEBUG16(x) do {} while (0) #endif /* * Firmware Dump structure definition */ Loading drivers/scsi/qla2xxx/qla_def.h +25 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <linux/workqueue.h> #include <linux/firmware.h> #include <linux/aer.h> #include <linux/mutex.h> #include <asm/semaphore.h> #include <scsi/scsi.h> Loading Loading @@ -2142,6 +2143,21 @@ struct qla_work_evt { } u; }; struct qla_chip_state_84xx { struct list_head list; struct kref kref; void *bus; spinlock_t access_lock; struct mutex fw_update_mutex; uint32_t fw_update; uint32_t op_fw_version; uint32_t op_fw_size; uint32_t op_fw_seq_size; uint32_t diag_fw_version; uint32_t gold_fw_version; }; /* * Linux Host Adapter structure */ Loading Loading @@ -2230,6 +2246,7 @@ typedef struct scsi_qla_host { #define DFLG_NO_CABLE BIT_4 #define PCI_DEVICE_ID_QLOGIC_ISP2532 0x2532 #define PCI_DEVICE_ID_QLOGIC_ISP8432 0x8432 uint32_t device_type; #define DT_ISP2100 BIT_0 #define DT_ISP2200 BIT_1 Loading @@ -2243,7 +2260,8 @@ typedef struct scsi_qla_host { #define DT_ISP5422 BIT_9 #define DT_ISP5432 BIT_10 #define DT_ISP2532 BIT_11 #define DT_ISP_LAST (DT_ISP2532 << 1) #define DT_ISP8432 BIT_12 #define DT_ISP_LAST (DT_ISP8432 << 1) #define DT_IIDMA BIT_26 #define DT_FWI2 BIT_27 Loading @@ -2265,12 +2283,16 @@ typedef struct scsi_qla_host { #define IS_QLA5422(ha) (DT_MASK(ha) & DT_ISP5422) #define IS_QLA5432(ha) (DT_MASK(ha) & DT_ISP5432) #define IS_QLA2532(ha) (DT_MASK(ha) & DT_ISP2532) #define IS_QLA8432(ha) (DT_MASK(ha) & DT_ISP8432) #define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \ IS_QLA6312(ha) || IS_QLA6322(ha)) #define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha)) #define IS_QLA54XX(ha) (IS_QLA5422(ha) || IS_QLA5432(ha)) #define IS_QLA25XX(ha) (IS_QLA2532(ha)) #define IS_QLA84XX(ha) (IS_QLA8432(ha)) #define IS_QLA24XX_TYPE(ha) (IS_QLA24XX(ha) || IS_QLA54XX(ha) || \ IS_QLA84XX(ha)) #define IS_IIDMA_CAPABLE(ha) ((ha)->device_type & DT_IIDMA) #define IS_FWI2_CAPABLE(ha) ((ha)->device_type & DT_FWI2) Loading Loading @@ -2575,6 +2597,8 @@ typedef struct scsi_qla_host { #define VP_ERR_ADAP_NORESOURCES 5 uint16_t max_npiv_vports; /* 63 or 125 per topoloty */ int cur_vport_count; struct qla_chip_state_84xx *cs84xx; } scsi_qla_host_t; Loading drivers/scsi/qla2xxx/qla_fw.h +123 −0 Original line number Diff line number Diff line Loading @@ -1218,4 +1218,127 @@ struct qla_fdt_layout { uint8_t protect_sec_cmd; uint8_t unused2[65]; }; /* 84XX Support **************************************************************/ #define MBA_ISP84XX_ALERT 0x800f /* Alert Notification. */ #define A84_PANIC_RECOVERY 0x1 #define A84_OP_LOGIN_COMPLETE 0x2 #define A84_DIAG_LOGIN_COMPLETE 0x3 #define A84_GOLD_LOGIN_COMPLETE 0x4 #define MBC_ISP84XX_RESET 0x3a /* Reset. */ #define FSTATE_REMOTE_FC_DOWN BIT_0 #define FSTATE_NSL_LINK_DOWN BIT_1 #define FSTATE_IS_DIAG_FW BIT_2 #define FSTATE_LOGGED_IN BIT_3 #define FSTATE_WAITING_FOR_VERIFY BIT_4 #define VERIFY_CHIP_IOCB_TYPE 0x1B struct verify_chip_entry_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t options; #define VCO_DONT_UPDATE_FW BIT_0 #define VCO_FORCE_UPDATE BIT_1 #define VCO_DONT_RESET_UPDATE BIT_2 #define VCO_DIAG_FW BIT_3 #define VCO_END_OF_DATA BIT_14 #define VCO_ENABLE_DSD BIT_15 uint16_t reserved_1; uint16_t data_seg_cnt; uint16_t reserved_2[3]; uint32_t fw_ver; uint32_t exchange_address; uint32_t reserved_3[3]; uint32_t fw_size; uint32_t fw_seq_size; uint32_t relative_offset; uint32_t dseg_address[2]; uint32_t dseg_length; }; struct verify_chip_rsp_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t comp_status; #define CS_VCS_CHIP_FAILURE 0x3 #define CS_VCS_BAD_EXCHANGE 0x8 #define CS_VCS_SEQ_COMPLETEi 0x40 uint16_t failure_code; #define VFC_CHECKSUM_ERROR 0x1 #define VFC_INVALID_LEN 0x2 #define VFC_ALREADY_IN_PROGRESS 0x8 uint16_t reserved_1[4]; uint32_t fw_ver; uint32_t exchange_address; uint32_t reserved_2[6]; }; #define ACCESS_CHIP_IOCB_TYPE 0x2B struct access_chip_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t options; #define ACO_DUMP_MEMORY 0x0 #define ACO_LOAD_MEMORY 0x1 #define ACO_CHANGE_CONFIG_PARAM 0x2 #define ACO_REQUEST_INFO 0x3 uint16_t reserved1; uint16_t dseg_count; uint16_t reserved2[3]; uint32_t parameter1; uint32_t parameter2; uint32_t parameter3; uint32_t reserved3[3]; uint32_t total_byte_cnt; uint32_t reserved4; uint32_t dseg_address[2]; uint32_t dseg_length; }; struct access_chip_rsp_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t comp_status; uint16_t failure_code; uint32_t residual_count; uint32_t reserved[12]; }; #endif drivers/scsi/qla2xxx/qla_gbl.h +8 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *); extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *); extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *); extern void qla84xx_put_chip(struct scsi_qla_host *); /* * Global Data in qla_os.c source file. */ Loading Loading @@ -149,6 +151,10 @@ qla2x00_verify_checksum(scsi_qla_host_t *, uint32_t); extern int qla2x00_issue_iocb(scsi_qla_host_t *, void *, dma_addr_t, size_t); extern int qla2x00_issue_iocb_timeout(scsi_qla_host_t *, void *, dma_addr_t, size_t, uint32_t); extern int qla2x00_abort_command(scsi_qla_host_t *, srb_t *); Loading Loading @@ -249,6 +255,8 @@ qla2x00_read_sfp(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t, uint16_t); extern int qla2x00_set_idma_speed(scsi_qla_host_t *, uint16_t, uint16_t, uint16_t *); extern int qla84xx_verify_chip(struct scsi_qla_host *, uint16_t *); /* * Global Function Prototypes in qla_isr.c source file. */ Loading Loading
drivers/scsi/qla2xxx/qla_attr.c +1 −1 Original line number Diff line number Diff line Loading @@ -1291,7 +1291,7 @@ qla2x00_init_host_attr(scsi_qla_host_t *ha) if (IS_QLA25XX(ha)) speed = FC_PORTSPEED_8GBIT | FC_PORTSPEED_4GBIT | FC_PORTSPEED_2GBIT | FC_PORTSPEED_1GBIT; else if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) else if (IS_QLA24XX_TYPE(ha)) speed = FC_PORTSPEED_4GBIT | FC_PORTSPEED_2GBIT | FC_PORTSPEED_1GBIT; else if (IS_QLA23XX(ha)) Loading
drivers/scsi/qla2xxx/qla_dbg.h +8 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ /* #define QL_DEBUG_LEVEL_13 */ /* Output fdmi function trace msgs */ /* #define QL_DEBUG_LEVEL_14 */ /* Output RSCN trace msgs */ /* #define QL_DEBUG_LEVEL_15 */ /* Output NPIV trace msgs */ /* #define QL_DEBUG_LEVEL_16 */ /* Output ISP84XX trace msgs */ /* * Macros use for debugging the driver. Loading @@ -41,6 +42,7 @@ #define DEBUG2_9_10(x) do { if (ql2xextended_error_logging) { x; } } while (0) #define DEBUG2_11(x) do { if (ql2xextended_error_logging) { x; } } while (0) #define DEBUG2_13(x) do { if (ql2xextended_error_logging) { x; } } while (0) #define DEBUG2_16(x) do { if (ql2xextended_error_logging) { x; } } while (0) #if defined(QL_DEBUG_LEVEL_3) #define DEBUG3(x) do {x;} while (0) Loading Loading @@ -120,6 +122,12 @@ #define DEBUG15(x) do {} while (0) #endif #if defined(QL_DEBUG_LEVEL_16) #define DEBUG16(x) do {x;} while (0) #else #define DEBUG16(x) do {} while (0) #endif /* * Firmware Dump structure definition */ Loading
drivers/scsi/qla2xxx/qla_def.h +25 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <linux/workqueue.h> #include <linux/firmware.h> #include <linux/aer.h> #include <linux/mutex.h> #include <asm/semaphore.h> #include <scsi/scsi.h> Loading Loading @@ -2142,6 +2143,21 @@ struct qla_work_evt { } u; }; struct qla_chip_state_84xx { struct list_head list; struct kref kref; void *bus; spinlock_t access_lock; struct mutex fw_update_mutex; uint32_t fw_update; uint32_t op_fw_version; uint32_t op_fw_size; uint32_t op_fw_seq_size; uint32_t diag_fw_version; uint32_t gold_fw_version; }; /* * Linux Host Adapter structure */ Loading Loading @@ -2230,6 +2246,7 @@ typedef struct scsi_qla_host { #define DFLG_NO_CABLE BIT_4 #define PCI_DEVICE_ID_QLOGIC_ISP2532 0x2532 #define PCI_DEVICE_ID_QLOGIC_ISP8432 0x8432 uint32_t device_type; #define DT_ISP2100 BIT_0 #define DT_ISP2200 BIT_1 Loading @@ -2243,7 +2260,8 @@ typedef struct scsi_qla_host { #define DT_ISP5422 BIT_9 #define DT_ISP5432 BIT_10 #define DT_ISP2532 BIT_11 #define DT_ISP_LAST (DT_ISP2532 << 1) #define DT_ISP8432 BIT_12 #define DT_ISP_LAST (DT_ISP8432 << 1) #define DT_IIDMA BIT_26 #define DT_FWI2 BIT_27 Loading @@ -2265,12 +2283,16 @@ typedef struct scsi_qla_host { #define IS_QLA5422(ha) (DT_MASK(ha) & DT_ISP5422) #define IS_QLA5432(ha) (DT_MASK(ha) & DT_ISP5432) #define IS_QLA2532(ha) (DT_MASK(ha) & DT_ISP2532) #define IS_QLA8432(ha) (DT_MASK(ha) & DT_ISP8432) #define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \ IS_QLA6312(ha) || IS_QLA6322(ha)) #define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha)) #define IS_QLA54XX(ha) (IS_QLA5422(ha) || IS_QLA5432(ha)) #define IS_QLA25XX(ha) (IS_QLA2532(ha)) #define IS_QLA84XX(ha) (IS_QLA8432(ha)) #define IS_QLA24XX_TYPE(ha) (IS_QLA24XX(ha) || IS_QLA54XX(ha) || \ IS_QLA84XX(ha)) #define IS_IIDMA_CAPABLE(ha) ((ha)->device_type & DT_IIDMA) #define IS_FWI2_CAPABLE(ha) ((ha)->device_type & DT_FWI2) Loading Loading @@ -2575,6 +2597,8 @@ typedef struct scsi_qla_host { #define VP_ERR_ADAP_NORESOURCES 5 uint16_t max_npiv_vports; /* 63 or 125 per topoloty */ int cur_vport_count; struct qla_chip_state_84xx *cs84xx; } scsi_qla_host_t; Loading
drivers/scsi/qla2xxx/qla_fw.h +123 −0 Original line number Diff line number Diff line Loading @@ -1218,4 +1218,127 @@ struct qla_fdt_layout { uint8_t protect_sec_cmd; uint8_t unused2[65]; }; /* 84XX Support **************************************************************/ #define MBA_ISP84XX_ALERT 0x800f /* Alert Notification. */ #define A84_PANIC_RECOVERY 0x1 #define A84_OP_LOGIN_COMPLETE 0x2 #define A84_DIAG_LOGIN_COMPLETE 0x3 #define A84_GOLD_LOGIN_COMPLETE 0x4 #define MBC_ISP84XX_RESET 0x3a /* Reset. */ #define FSTATE_REMOTE_FC_DOWN BIT_0 #define FSTATE_NSL_LINK_DOWN BIT_1 #define FSTATE_IS_DIAG_FW BIT_2 #define FSTATE_LOGGED_IN BIT_3 #define FSTATE_WAITING_FOR_VERIFY BIT_4 #define VERIFY_CHIP_IOCB_TYPE 0x1B struct verify_chip_entry_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t options; #define VCO_DONT_UPDATE_FW BIT_0 #define VCO_FORCE_UPDATE BIT_1 #define VCO_DONT_RESET_UPDATE BIT_2 #define VCO_DIAG_FW BIT_3 #define VCO_END_OF_DATA BIT_14 #define VCO_ENABLE_DSD BIT_15 uint16_t reserved_1; uint16_t data_seg_cnt; uint16_t reserved_2[3]; uint32_t fw_ver; uint32_t exchange_address; uint32_t reserved_3[3]; uint32_t fw_size; uint32_t fw_seq_size; uint32_t relative_offset; uint32_t dseg_address[2]; uint32_t dseg_length; }; struct verify_chip_rsp_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t comp_status; #define CS_VCS_CHIP_FAILURE 0x3 #define CS_VCS_BAD_EXCHANGE 0x8 #define CS_VCS_SEQ_COMPLETEi 0x40 uint16_t failure_code; #define VFC_CHECKSUM_ERROR 0x1 #define VFC_INVALID_LEN 0x2 #define VFC_ALREADY_IN_PROGRESS 0x8 uint16_t reserved_1[4]; uint32_t fw_ver; uint32_t exchange_address; uint32_t reserved_2[6]; }; #define ACCESS_CHIP_IOCB_TYPE 0x2B struct access_chip_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t options; #define ACO_DUMP_MEMORY 0x0 #define ACO_LOAD_MEMORY 0x1 #define ACO_CHANGE_CONFIG_PARAM 0x2 #define ACO_REQUEST_INFO 0x3 uint16_t reserved1; uint16_t dseg_count; uint16_t reserved2[3]; uint32_t parameter1; uint32_t parameter2; uint32_t parameter3; uint32_t reserved3[3]; uint32_t total_byte_cnt; uint32_t reserved4; uint32_t dseg_address[2]; uint32_t dseg_length; }; struct access_chip_rsp_84xx { uint8_t entry_type; uint8_t entry_count; uint8_t sys_defined; uint8_t entry_status; uint32_t handle; uint16_t comp_status; uint16_t failure_code; uint32_t residual_count; uint32_t reserved[12]; }; #endif
drivers/scsi/qla2xxx/qla_gbl.h +8 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *); extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *); extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *); extern void qla84xx_put_chip(struct scsi_qla_host *); /* * Global Data in qla_os.c source file. */ Loading Loading @@ -149,6 +151,10 @@ qla2x00_verify_checksum(scsi_qla_host_t *, uint32_t); extern int qla2x00_issue_iocb(scsi_qla_host_t *, void *, dma_addr_t, size_t); extern int qla2x00_issue_iocb_timeout(scsi_qla_host_t *, void *, dma_addr_t, size_t, uint32_t); extern int qla2x00_abort_command(scsi_qla_host_t *, srb_t *); Loading Loading @@ -249,6 +255,8 @@ qla2x00_read_sfp(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t, uint16_t); extern int qla2x00_set_idma_speed(scsi_qla_host_t *, uint16_t, uint16_t, uint16_t *); extern int qla84xx_verify_chip(struct scsi_qla_host *, uint16_t *); /* * Global Function Prototypes in qla_isr.c source file. */ Loading