diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_def.h')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 714ee67567e1..00aa48d975a6 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -93,6 +93,7 @@ | |||
93 | #define LSD(x) ((uint32_t)((uint64_t)(x))) | 93 | #define LSD(x) ((uint32_t)((uint64_t)(x))) |
94 | #define MSD(x) ((uint32_t)((((uint64_t)(x)) >> 16) >> 16)) | 94 | #define MSD(x) ((uint32_t)((((uint64_t)(x)) >> 16) >> 16)) |
95 | 95 | ||
96 | #define MAKE_HANDLE(x, y) ((uint32_t)((((uint32_t)(x)) << 16) | (uint32_t)(y))) | ||
96 | 97 | ||
97 | /* | 98 | /* |
98 | * I/O register | 99 | * I/O register |
@@ -179,6 +180,7 @@ | |||
179 | #define REQUEST_ENTRY_CNT_24XX 2048 /* Number of request entries. */ | 180 | #define REQUEST_ENTRY_CNT_24XX 2048 /* Number of request entries. */ |
180 | #define RESPONSE_ENTRY_CNT_2100 64 /* Number of response entries.*/ | 181 | #define RESPONSE_ENTRY_CNT_2100 64 /* Number of response entries.*/ |
181 | #define RESPONSE_ENTRY_CNT_2300 512 /* Number of response entries.*/ | 182 | #define RESPONSE_ENTRY_CNT_2300 512 /* Number of response entries.*/ |
183 | #define RESPONSE_ENTRY_CNT_MQ 128 /* Number of response entries.*/ | ||
182 | 184 | ||
183 | struct req_que; | 185 | struct req_que; |
184 | 186 | ||
@@ -186,7 +188,6 @@ struct req_que; | |||
186 | * SCSI Request Block | 188 | * SCSI Request Block |
187 | */ | 189 | */ |
188 | typedef struct srb { | 190 | typedef struct srb { |
189 | struct req_que *que; | ||
190 | struct fc_port *fcport; | 191 | struct fc_port *fcport; |
191 | 192 | ||
192 | struct scsi_cmnd *cmd; /* Linux SCSI command pkt */ | 193 | struct scsi_cmnd *cmd; /* Linux SCSI command pkt */ |
@@ -2008,7 +2009,7 @@ typedef struct vport_params { | |||
2008 | #define VP_RET_CODE_NOT_FOUND 6 | 2009 | #define VP_RET_CODE_NOT_FOUND 6 |
2009 | 2010 | ||
2010 | struct qla_hw_data; | 2011 | struct qla_hw_data; |
2011 | 2012 | struct rsp_que; | |
2012 | /* | 2013 | /* |
2013 | * ISP operations | 2014 | * ISP operations |
2014 | */ | 2015 | */ |
@@ -2030,10 +2031,9 @@ struct isp_operations { | |||
2030 | void (*enable_intrs) (struct qla_hw_data *); | 2031 | void (*enable_intrs) (struct qla_hw_data *); |
2031 | void (*disable_intrs) (struct qla_hw_data *); | 2032 | void (*disable_intrs) (struct qla_hw_data *); |
2032 | 2033 | ||
2033 | int (*abort_command) (struct scsi_qla_host *, srb_t *, | 2034 | int (*abort_command) (srb_t *); |
2034 | struct req_que *); | 2035 | int (*target_reset) (struct fc_port *, unsigned int, int); |
2035 | int (*target_reset) (struct fc_port *, unsigned int); | 2036 | int (*lun_reset) (struct fc_port *, unsigned int, int); |
2036 | int (*lun_reset) (struct fc_port *, unsigned int); | ||
2037 | int (*fabric_login) (struct scsi_qla_host *, uint16_t, uint8_t, | 2037 | int (*fabric_login) (struct scsi_qla_host *, uint16_t, uint8_t, |
2038 | uint8_t, uint8_t, uint16_t *, uint8_t); | 2038 | uint8_t, uint8_t, uint16_t *, uint8_t); |
2039 | int (*fabric_logout) (struct scsi_qla_host *, uint16_t, uint8_t, | 2039 | int (*fabric_logout) (struct scsi_qla_host *, uint16_t, uint8_t, |
@@ -2079,7 +2079,6 @@ struct isp_operations { | |||
2079 | #define QLA_PCI_MSIX_CONTROL 0xa2 | 2079 | #define QLA_PCI_MSIX_CONTROL 0xa2 |
2080 | 2080 | ||
2081 | struct scsi_qla_host; | 2081 | struct scsi_qla_host; |
2082 | struct rsp_que; | ||
2083 | 2082 | ||
2084 | struct qla_msix_entry { | 2083 | struct qla_msix_entry { |
2085 | int have_irq; | 2084 | int have_irq; |
@@ -2140,7 +2139,6 @@ struct qla_statistics { | |||
2140 | #define MBC_INITIALIZE_MULTIQ 0x1f | 2139 | #define MBC_INITIALIZE_MULTIQ 0x1f |
2141 | #define QLA_QUE_PAGE 0X1000 | 2140 | #define QLA_QUE_PAGE 0X1000 |
2142 | #define QLA_MQ_SIZE 32 | 2141 | #define QLA_MQ_SIZE 32 |
2143 | #define QLA_MAX_HOST_QUES 16 | ||
2144 | #define QLA_MAX_QUEUES 256 | 2142 | #define QLA_MAX_QUEUES 256 |
2145 | #define ISP_QUE_REG(ha, id) \ | 2143 | #define ISP_QUE_REG(ha, id) \ |
2146 | ((ha->mqenable) ? \ | 2144 | ((ha->mqenable) ? \ |
@@ -2170,6 +2168,8 @@ struct rsp_que { | |||
2170 | struct qla_hw_data *hw; | 2168 | struct qla_hw_data *hw; |
2171 | struct qla_msix_entry *msix; | 2169 | struct qla_msix_entry *msix; |
2172 | struct req_que *req; | 2170 | struct req_que *req; |
2171 | srb_t *status_srb; /* status continuation entry */ | ||
2172 | struct work_struct q_work; | ||
2173 | }; | 2173 | }; |
2174 | 2174 | ||
2175 | /* Request queue data structure */ | 2175 | /* Request queue data structure */ |
@@ -2222,6 +2222,8 @@ struct qla_hw_data { | |||
2222 | uint32_t fce_enabled :1; | 2222 | uint32_t fce_enabled :1; |
2223 | uint32_t fac_supported :1; | 2223 | uint32_t fac_supported :1; |
2224 | uint32_t chip_reset_done :1; | 2224 | uint32_t chip_reset_done :1; |
2225 | uint32_t port0 :1; | ||
2226 | uint32_t running_gold_fw :1; | ||
2225 | } flags; | 2227 | } flags; |
2226 | 2228 | ||
2227 | /* This spinlock is used to protect "io transactions", you must | 2229 | /* This spinlock is used to protect "io transactions", you must |
@@ -2246,7 +2248,8 @@ struct qla_hw_data { | |||
2246 | struct rsp_que **rsp_q_map; | 2248 | struct rsp_que **rsp_q_map; |
2247 | unsigned long req_qid_map[(QLA_MAX_QUEUES / 8) / sizeof(unsigned long)]; | 2249 | unsigned long req_qid_map[(QLA_MAX_QUEUES / 8) / sizeof(unsigned long)]; |
2248 | unsigned long rsp_qid_map[(QLA_MAX_QUEUES / 8) / sizeof(unsigned long)]; | 2250 | unsigned long rsp_qid_map[(QLA_MAX_QUEUES / 8) / sizeof(unsigned long)]; |
2249 | uint16_t max_queues; | 2251 | uint8_t max_req_queues; |
2252 | uint8_t max_rsp_queues; | ||
2250 | struct qla_npiv_entry *npiv_info; | 2253 | struct qla_npiv_entry *npiv_info; |
2251 | uint16_t nvram_npiv_size; | 2254 | uint16_t nvram_npiv_size; |
2252 | 2255 | ||
@@ -2255,6 +2258,9 @@ struct qla_hw_data { | |||
2255 | #define FLOGI_MID_SUPPORT BIT_10 | 2258 | #define FLOGI_MID_SUPPORT BIT_10 |
2256 | #define FLOGI_VSAN_SUPPORT BIT_12 | 2259 | #define FLOGI_VSAN_SUPPORT BIT_12 |
2257 | #define FLOGI_SP_SUPPORT BIT_13 | 2260 | #define FLOGI_SP_SUPPORT BIT_13 |
2261 | |||
2262 | uint8_t port_no; /* Physical port of adapter */ | ||
2263 | |||
2258 | /* Timeout timers. */ | 2264 | /* Timeout timers. */ |
2259 | uint8_t loop_down_abort_time; /* port down timer */ | 2265 | uint8_t loop_down_abort_time; /* port down timer */ |
2260 | atomic_t loop_down_timer; /* loop down timer */ | 2266 | atomic_t loop_down_timer; /* loop down timer */ |
@@ -2392,6 +2398,14 @@ struct qla_hw_data { | |||
2392 | dma_addr_t edc_data_dma; | 2398 | dma_addr_t edc_data_dma; |
2393 | uint16_t edc_data_len; | 2399 | uint16_t edc_data_len; |
2394 | 2400 | ||
2401 | #define XGMAC_DATA_SIZE PAGE_SIZE | ||
2402 | void *xgmac_data; | ||
2403 | dma_addr_t xgmac_data_dma; | ||
2404 | |||
2405 | #define DCBX_TLV_DATA_SIZE PAGE_SIZE | ||
2406 | void *dcbx_tlv; | ||
2407 | dma_addr_t dcbx_tlv_dma; | ||
2408 | |||
2395 | struct task_struct *dpc_thread; | 2409 | struct task_struct *dpc_thread; |
2396 | uint8_t dpc_active; /* DPC routine is active */ | 2410 | uint8_t dpc_active; /* DPC routine is active */ |
2397 | 2411 | ||
@@ -2510,6 +2524,7 @@ struct qla_hw_data { | |||
2510 | uint32_t flt_region_vpd; | 2524 | uint32_t flt_region_vpd; |
2511 | uint32_t flt_region_nvram; | 2525 | uint32_t flt_region_nvram; |
2512 | uint32_t flt_region_npiv_conf; | 2526 | uint32_t flt_region_npiv_conf; |
2527 | uint32_t flt_region_gold_fw; | ||
2513 | 2528 | ||
2514 | /* Needed for BEACON */ | 2529 | /* Needed for BEACON */ |
2515 | uint16_t beacon_blink_led; | 2530 | uint16_t beacon_blink_led; |
@@ -2536,6 +2551,7 @@ struct qla_hw_data { | |||
2536 | struct qla_chip_state_84xx *cs84xx; | 2551 | struct qla_chip_state_84xx *cs84xx; |
2537 | struct qla_statistics qla_stats; | 2552 | struct qla_statistics qla_stats; |
2538 | struct isp_operations *isp_ops; | 2553 | struct isp_operations *isp_ops; |
2554 | struct workqueue_struct *wq; | ||
2539 | }; | 2555 | }; |
2540 | 2556 | ||
2541 | /* | 2557 | /* |
@@ -2545,6 +2561,8 @@ typedef struct scsi_qla_host { | |||
2545 | struct list_head list; | 2561 | struct list_head list; |
2546 | struct list_head vp_fcports; /* list of fcports */ | 2562 | struct list_head vp_fcports; /* list of fcports */ |
2547 | struct list_head work_list; | 2563 | struct list_head work_list; |
2564 | spinlock_t work_lock; | ||
2565 | |||
2548 | /* Commonly used flags and state information. */ | 2566 | /* Commonly used flags and state information. */ |
2549 | struct Scsi_Host *host; | 2567 | struct Scsi_Host *host; |
2550 | unsigned long host_no; | 2568 | unsigned long host_no; |
@@ -2591,8 +2609,6 @@ typedef struct scsi_qla_host { | |||
2591 | #define SWITCH_FOUND BIT_0 | 2609 | #define SWITCH_FOUND BIT_0 |
2592 | #define DFLG_NO_CABLE BIT_1 | 2610 | #define DFLG_NO_CABLE BIT_1 |
2593 | 2611 | ||
2594 | srb_t *status_srb; /* Status continuation entry. */ | ||
2595 | |||
2596 | /* ISP configuration data. */ | 2612 | /* ISP configuration data. */ |
2597 | uint16_t loop_id; /* Host adapter loop id */ | 2613 | uint16_t loop_id; /* Host adapter loop id */ |
2598 | 2614 | ||
@@ -2618,6 +2634,11 @@ typedef struct scsi_qla_host { | |||
2618 | uint8_t node_name[WWN_SIZE]; | 2634 | uint8_t node_name[WWN_SIZE]; |
2619 | uint8_t port_name[WWN_SIZE]; | 2635 | uint8_t port_name[WWN_SIZE]; |
2620 | uint8_t fabric_node_name[WWN_SIZE]; | 2636 | uint8_t fabric_node_name[WWN_SIZE]; |
2637 | |||
2638 | uint16_t fcoe_vlan_id; | ||
2639 | uint16_t fcoe_fcf_idx; | ||
2640 | uint8_t fcoe_vn_port_mac[6]; | ||
2641 | |||
2621 | uint32_t vp_abort_cnt; | 2642 | uint32_t vp_abort_cnt; |
2622 | 2643 | ||
2623 | struct fc_vport *fc_vport; /* holds fc_vport * for each vport */ | 2644 | struct fc_vport *fc_vport; /* holds fc_vport * for each vport */ |
@@ -2643,7 +2664,7 @@ typedef struct scsi_qla_host { | |||
2643 | #define VP_ERR_FAB_LOGOUT 4 | 2664 | #define VP_ERR_FAB_LOGOUT 4 |
2644 | #define VP_ERR_ADAP_NORESOURCES 5 | 2665 | #define VP_ERR_ADAP_NORESOURCES 5 |
2645 | struct qla_hw_data *hw; | 2666 | struct qla_hw_data *hw; |
2646 | int req_ques[QLA_MAX_HOST_QUES]; | 2667 | struct req_que *req; |
2647 | } scsi_qla_host_t; | 2668 | } scsi_qla_host_t; |
2648 | 2669 | ||
2649 | /* | 2670 | /* |