diff options
author | brking@us.ibm.com <brking@us.ibm.com> | 2005-11-01 18:02:22 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-11-06 14:09:47 -0500 |
commit | ee0a90fa3efffcaccffea5a9c1599f4c59ca55d4 (patch) | |
tree | 3d0ac366068cfa5c2925645634bde1a6b87538b3 /drivers/scsi/ipr.h | |
parent | ee0f05b863df0a623792eaa46703019c100be2de (diff) |
[SCSI] ipr: Support new device queueing model
New ipr adapters support a new device queueing model in the
adapter firmware. The queueing model is the NACA queueing model,
but it does not mean use of NACA is required. The new model removes
some of the adapter firmware queue state that made handling QERR=0
almost impossible. The queueing model on older adapters included the
concept of a queue frozen state, which would freeze the response
queue in the adapter when a check condition occurred, requiring a
a primitive to resume the queue. The new queueing model removes this
complexity.
Signed-off-by: Brian King <brking@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/ipr.h')
-rw-r--r-- | drivers/scsi/ipr.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index f7fa8cd2ecad..c9cc40e5db24 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h | |||
@@ -302,6 +302,10 @@ struct ipr_config_table_entry { | |||
302 | #define IPR_SUBTYPE_GENERIC_SCSI 1 | 302 | #define IPR_SUBTYPE_GENERIC_SCSI 1 |
303 | #define IPR_SUBTYPE_VOLUME_SET 2 | 303 | #define IPR_SUBTYPE_VOLUME_SET 2 |
304 | 304 | ||
305 | #define IPR_QUEUEING_MODEL(res) ((((res)->cfgte.flags) & 0x70) >> 4) | ||
306 | #define IPR_QUEUE_FROZEN_MODEL 0 | ||
307 | #define IPR_QUEUE_NACA_MODEL 1 | ||
308 | |||
305 | struct ipr_res_addr res_addr; | 309 | struct ipr_res_addr res_addr; |
306 | __be32 res_handle; | 310 | __be32 res_handle; |
307 | __be32 reserved4[2]; | 311 | __be32 reserved4[2]; |
@@ -1294,6 +1298,20 @@ static inline int ipr_is_gscsi(struct ipr_resource_entry *res) | |||
1294 | } | 1298 | } |
1295 | 1299 | ||
1296 | /** | 1300 | /** |
1301 | * ipr_is_naca_model - Determine if a resource is using NACA queueing model | ||
1302 | * @res: resource entry struct | ||
1303 | * | ||
1304 | * Return value: | ||
1305 | * 1 if NACA queueing model / 0 if not NACA queueing model | ||
1306 | **/ | ||
1307 | static inline int ipr_is_naca_model(struct ipr_resource_entry *res) | ||
1308 | { | ||
1309 | if (ipr_is_gscsi(res) && IPR_QUEUEING_MODEL(res) == IPR_QUEUE_NACA_MODEL) | ||
1310 | return 1; | ||
1311 | return 0; | ||
1312 | } | ||
1313 | |||
1314 | /** | ||
1297 | * ipr_is_device - Determine if resource address is that of a device | 1315 | * ipr_is_device - Determine if resource address is that of a device |
1298 | * @res_addr: resource address struct | 1316 | * @res_addr: resource address struct |
1299 | * | 1317 | * |