aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.h
diff options
context:
space:
mode:
authorbrking@us.ibm.com <brking@us.ibm.com>2005-11-01 18:02:22 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2005-11-06 14:09:47 -0500
commitee0a90fa3efffcaccffea5a9c1599f4c59ca55d4 (patch)
tree3d0ac366068cfa5c2925645634bde1a6b87538b3 /drivers/scsi/ipr.h
parentee0f05b863df0a623792eaa46703019c100be2de (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.h18
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 **/
1307static 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 *