From: Dave Marquardt <[email protected]> Define data structures for asynchronous sub-queue support required for full and extended FPIN functionality.
Add ibmvfc_async_subq structure to represent async events received via the sub-queue, including FPIN status, link state, event type, and WWPN information. Update ibmvfc_channel_setup structure to include async_subq_handle field and reduce IBMVFC_MAX_CHANNELS from 502 to 501 to accommodate the async sub-queue. Add async_scrq pointer to ibmvfc_channels structure. Add capability flags IBMVFC_USE_ASYNC_SUBQ and IBMVFC_SUPPORT_ASYNC_SUBQ for negotiating async sub-queue support with VIOS during login. Signed-off-by: Dave Marquardt <[email protected]> --- drivers/scsi/ibmvscsi/ibmvfc.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h index e8ca0d30f483..3711be4b6748 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.h +++ b/drivers/scsi/ibmvscsi/ibmvfc.h @@ -791,6 +791,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; @@ -935,6 +954,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.55.0
