From: Dave Marquardt <[email protected]> Defines the asynchronous sub-queue structure, modifies the existing channel setup structure, adds the asynchronous sub-queue to the channels structure, and adds flags needed to tell VIOS to use the sub-queue.
Signed-off-by: Dave Marquardt <[email protected]> --- drivers/scsi/ibmvscsi/ibmvfc.h | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h index adfd67e85af8..f38dfae9924c 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.h +++ b/drivers/scsi/ibmvscsi/ibmvfc.h @@ -182,6 +182,7 @@ struct ibmvfc_npiv_login { #define IBMVFC_CAN_USE_MAD_VERSION 0x008 #define IBMVFC_CAN_SEND_VF_WWPN 0x010 #define IBMVFC_YES_SCSI 0x040 +#define IBMVFC_USE_ASYNC_SUBQ 0x100 #define IBMVFC_CAN_USE_NOOP_CMD 0x200 __be64 node_name; struct srp_direct_buf async; @@ -230,6 +231,7 @@ struct ibmvfc_npiv_login_resp { #define IBMVFC_HANDLE_VF_WWPN 0x0040 #define IBMVFC_CAN_SUPPORT_CHANNELS 0x0080 #define IBMVFC_SUPPORT_SCSI 0x0200 +#define IBMVFC_SUPPORT_ASYNC_SUBQ 0x0800 #define IBMVFC_SUPPORT_NOOP_CMD 0x1000 __be32 max_cmds; __be32 scsi_id_sz; @@ -564,7 +566,7 @@ struct ibmvfc_channel_setup_mad { struct srp_direct_buf buffer; } __packed __aligned(8); -#define IBMVFC_MAX_CHANNELS 502 +#define IBMVFC_MAX_CHANNELS 501 struct ibmvfc_channel_setup { __be32 flags; @@ -579,6 +581,7 @@ struct ibmvfc_channel_setup { struct srp_direct_buf buffer; __be64 reserved2[5]; __be64 channel_handles[IBMVFC_MAX_CHANNELS]; + __be64 async_subq_handle; } __packed __aligned(8); struct ibmvfc_connection_info { @@ -715,6 +718,25 @@ struct ibmvfc_async_work { struct work_struct async_work_s; }; +struct ibmvfc_async_subq { + volatile u8 valid; +#define IBMVFC_ASYNC_ID_IS_ASSOC_ID 0x01 +#define IBMVFC_FC_EEH 0x04 +#define IBMVFC_FC_FW_UPDATE 0x08 +#define IBMVFC_FC_FW_DUMP 0x10 + u8 flags; + u8 link_state; + u8 fpin_status; + __be16 event; + __be16 pad; + volatile __be64 wwpn; + volatile __be64 nport_id; + union { + __be64 node_name; + __be64 assoc_id; + } id; +} __packed __aligned(8); + union ibmvfc_iu { struct ibmvfc_mad_common mad_common; struct ibmvfc_npiv_login_mad npiv_login; @@ -854,6 +876,7 @@ struct ibmvfc_queue { struct ibmvfc_channels { struct ibmvfc_queue *scrqs; + struct ibmvfc_queue *async_scrq; enum ibmvfc_protocol protocol; unsigned int active_queues; unsigned int desired_queues; -- 2.54.0
