diff options
author | Anirban Chakraborty <anirban.chakraborty@qlogic.com> | 2009-04-07 01:33:40 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-05-20 18:21:07 -0400 |
commit | 2afa19a9377ca61b9489e44bf50029574fbe63be (patch) | |
tree | cdfa3878eb04d833bbcd9ce92196bc4456b5ccf5 /drivers/scsi/qla2xxx/qla_def.h | |
parent | 7640335ea5b1a2da0d64303e6003012c619ae01a (diff) |
[SCSI] qla2xxx: Add QoS support.
Set the number of request queues to the module paramater
ql2xmaxqueues. Each vport gets a request queue. The QoS value
set to the request queues determines priority control for queued
IOs. If QoS value is not specified, the vports use the default
queue 0.
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_def.h')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 645cfd9e6cf6..57d659cf99ee 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 | ||
@@ -2008,7 +2010,8 @@ typedef struct vport_params { | |||
2008 | #define VP_RET_CODE_NOT_FOUND 6 | 2010 | #define VP_RET_CODE_NOT_FOUND 6 |
2009 | 2011 | ||
2010 | struct qla_hw_data; | 2012 | struct qla_hw_data; |
2011 | 2013 | struct req_que; | |
2014 | struct rsp_que; | ||
2012 | /* | 2015 | /* |
2013 | * ISP operations | 2016 | * ISP operations |
2014 | */ | 2017 | */ |
@@ -2030,10 +2033,9 @@ struct isp_operations { | |||
2030 | void (*enable_intrs) (struct qla_hw_data *); | 2033 | void (*enable_intrs) (struct qla_hw_data *); |
2031 | void (*disable_intrs) (struct qla_hw_data *); | 2034 | void (*disable_intrs) (struct qla_hw_data *); |
2032 | 2035 | ||
2033 | int (*abort_command) (struct scsi_qla_host *, srb_t *, | 2036 | int (*abort_command) (srb_t *); |
2034 | struct req_que *); | 2037 | int (*target_reset) (struct fc_port *, unsigned int, int); |
2035 | int (*target_reset) (struct fc_port *, unsigned int); | 2038 | 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, | 2039 | int (*fabric_login) (struct scsi_qla_host *, uint16_t, uint8_t, |
2038 | uint8_t, uint8_t, uint16_t *, uint8_t); | 2040 | uint8_t, uint8_t, uint16_t *, uint8_t); |
2039 | int (*fabric_logout) (struct scsi_qla_host *, uint16_t, uint8_t, | 2041 | int (*fabric_logout) (struct scsi_qla_host *, uint16_t, uint8_t, |
@@ -2079,7 +2081,6 @@ struct isp_operations { | |||
2079 | #define QLA_PCI_MSIX_CONTROL 0xa2 | 2081 | #define QLA_PCI_MSIX_CONTROL 0xa2 |
2080 | 2082 | ||
2081 | struct scsi_qla_host; | 2083 | struct scsi_qla_host; |
2082 | struct rsp_que; | ||
2083 | 2084 | ||
2084 | struct qla_msix_entry { | 2085 | struct qla_msix_entry { |
2085 | int have_irq; | 2086 | int have_irq; |
@@ -2140,7 +2141,6 @@ struct qla_statistics { | |||
2140 | #define MBC_INITIALIZE_MULTIQ 0x1f | 2141 | #define MBC_INITIALIZE_MULTIQ 0x1f |
2141 | #define QLA_QUE_PAGE 0X1000 | 2142 | #define QLA_QUE_PAGE 0X1000 |
2142 | #define QLA_MQ_SIZE 32 | 2143 | #define QLA_MQ_SIZE 32 |
2143 | #define QLA_MAX_HOST_QUES 16 | ||
2144 | #define QLA_MAX_QUEUES 256 | 2144 | #define QLA_MAX_QUEUES 256 |
2145 | #define ISP_QUE_REG(ha, id) \ | 2145 | #define ISP_QUE_REG(ha, id) \ |
2146 | ((ha->mqenable) ? \ | 2146 | ((ha->mqenable) ? \ |
@@ -2170,6 +2170,7 @@ struct rsp_que { | |||
2170 | struct qla_hw_data *hw; | 2170 | struct qla_hw_data *hw; |
2171 | struct qla_msix_entry *msix; | 2171 | struct qla_msix_entry *msix; |
2172 | struct req_que *req; | 2172 | struct req_que *req; |
2173 | srb_t *status_srb; /* status continuation entry */ | ||
2173 | }; | 2174 | }; |
2174 | 2175 | ||
2175 | /* Request queue data structure */ | 2176 | /* Request queue data structure */ |
@@ -2246,7 +2247,8 @@ struct qla_hw_data { | |||
2246 | struct rsp_que **rsp_q_map; | 2247 | struct rsp_que **rsp_q_map; |
2247 | unsigned long req_qid_map[(QLA_MAX_QUEUES / 8) / sizeof(unsigned long)]; | 2248 | 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)]; | 2249 | unsigned long rsp_qid_map[(QLA_MAX_QUEUES / 8) / sizeof(unsigned long)]; |
2249 | uint16_t max_queues; | 2250 | uint8_t max_req_queues; |
2251 | uint8_t max_rsp_queues; | ||
2250 | struct qla_npiv_entry *npiv_info; | 2252 | struct qla_npiv_entry *npiv_info; |
2251 | uint16_t nvram_npiv_size; | 2253 | uint16_t nvram_npiv_size; |
2252 | 2254 | ||
@@ -2532,6 +2534,7 @@ struct qla_hw_data { | |||
2532 | uint16_t num_vsans; /* number of vsan created */ | 2534 | uint16_t num_vsans; /* number of vsan created */ |
2533 | uint16_t max_npiv_vports; /* 63 or 125 per topoloty */ | 2535 | uint16_t max_npiv_vports; /* 63 or 125 per topoloty */ |
2534 | int cur_vport_count; | 2536 | int cur_vport_count; |
2537 | uint16_t flex_port_count; | ||
2535 | 2538 | ||
2536 | struct qla_chip_state_84xx *cs84xx; | 2539 | struct qla_chip_state_84xx *cs84xx; |
2537 | struct qla_statistics qla_stats; | 2540 | struct qla_statistics qla_stats; |
@@ -2591,8 +2594,6 @@ typedef struct scsi_qla_host { | |||
2591 | #define SWITCH_FOUND BIT_0 | 2594 | #define SWITCH_FOUND BIT_0 |
2592 | #define DFLG_NO_CABLE BIT_1 | 2595 | #define DFLG_NO_CABLE BIT_1 |
2593 | 2596 | ||
2594 | srb_t *status_srb; /* Status continuation entry. */ | ||
2595 | |||
2596 | /* ISP configuration data. */ | 2597 | /* ISP configuration data. */ |
2597 | uint16_t loop_id; /* Host adapter loop id */ | 2598 | uint16_t loop_id; /* Host adapter loop id */ |
2598 | 2599 | ||
@@ -2648,7 +2649,7 @@ typedef struct scsi_qla_host { | |||
2648 | #define VP_ERR_FAB_LOGOUT 4 | 2649 | #define VP_ERR_FAB_LOGOUT 4 |
2649 | #define VP_ERR_ADAP_NORESOURCES 5 | 2650 | #define VP_ERR_ADAP_NORESOURCES 5 |
2650 | struct qla_hw_data *hw; | 2651 | struct qla_hw_data *hw; |
2651 | int req_ques[QLA_MAX_HOST_QUES]; | 2652 | struct req_que *req; |
2652 | } scsi_qla_host_t; | 2653 | } scsi_qla_host_t; |
2653 | 2654 | ||
2654 | /* | 2655 | /* |