diff options
author | Brian King <brking@linux.vnet.ibm.com> | 2009-05-28 17:17:30 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-06-08 14:07:45 -0400 |
commit | 497f9c504f76e7a751cd370604e1c8521743746d (patch) | |
tree | ba7c6a0bb9044d1d6b723c99c028b5d8121344e9 /drivers/scsi/ibmvscsi/ibmvfc.h | |
parent | 79111d0899a122fa3cf0a2921292c3e6a25452d0 (diff) |
[SCSI] ibmvfc: Add flush on halt support
The virtual I/O server controlling the NPIV adapter associated with
a virtual fibre channel adapter can send a HALT event to the client.
When this occurs, the client can no longer send commands until a RESUME
is received. By adding support for flush on halt, we will get all of
our outstanding commands flushed back before the Virtual I/O server
enters the halt state, eliminating potential command timeouts for
outstanding commands which might occur if we did not support this feature.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/ibmvscsi/ibmvfc.h')
-rw-r--r-- | drivers/scsi/ibmvscsi/ibmvfc.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h index 6adaad80565d..cf26380820fb 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.h +++ b/drivers/scsi/ibmvscsi/ibmvfc.h | |||
@@ -207,7 +207,8 @@ struct ibmvfc_npiv_login_resp { | |||
207 | #define IBMVFC_NATIVE_FC 0x01 | 207 | #define IBMVFC_NATIVE_FC 0x01 |
208 | #define IBMVFC_CAN_FLUSH_ON_HALT 0x08 | 208 | #define IBMVFC_CAN_FLUSH_ON_HALT 0x08 |
209 | u32 reserved; | 209 | u32 reserved; |
210 | u64 capabilites; | 210 | u64 capabilities; |
211 | #define IBMVFC_CAN_FLUSH_ON_HALT 0x08 | ||
211 | u32 max_cmds; | 212 | u32 max_cmds; |
212 | u32 scsi_id_sz; | 213 | u32 scsi_id_sz; |
213 | u64 max_dma_len; | 214 | u64 max_dma_len; |
@@ -547,9 +548,17 @@ struct ibmvfc_crq_queue { | |||
547 | dma_addr_t msg_token; | 548 | dma_addr_t msg_token; |
548 | }; | 549 | }; |
549 | 550 | ||
551 | enum ibmvfc_ae_link_state { | ||
552 | IBMVFC_AE_LS_LINK_UP = 0x01, | ||
553 | IBMVFC_AE_LS_LINK_BOUNCED = 0x02, | ||
554 | IBMVFC_AE_LS_LINK_DOWN = 0x04, | ||
555 | IBMVFC_AE_LS_LINK_DEAD = 0x08, | ||
556 | }; | ||
557 | |||
550 | struct ibmvfc_async_crq { | 558 | struct ibmvfc_async_crq { |
551 | volatile u8 valid; | 559 | volatile u8 valid; |
552 | u8 pad[3]; | 560 | u8 link_state; |
561 | u8 pad[2]; | ||
553 | u32 pad2; | 562 | u32 pad2; |
554 | volatile u64 event; | 563 | volatile u64 event; |
555 | volatile u64 scsi_id; | 564 | volatile u64 scsi_id; |