#define IBMVFC_MAD_SUCCESS 0x00
#define IBMVFC_MAD_NOT_SUPPORTED 0xF1
+#define IBMVFC_MAD_VERSION_NOT_SUPP 0xF2
#define IBMVFC_MAD_FAILED 0xF7
#define IBMVFC_MAD_DRIVER_FAILED 0xEE
#define IBMVFC_MAD_CRQ_ERROR 0xEF
#define IBMVFC_CAN_MIGRATE 0x01
#define IBMVFC_CAN_USE_CHANNELS 0x02
#define IBMVFC_CAN_HANDLE_FPIN 0x04
+#define IBMVFC_CAN_USE_MAD_VERSION 0x08
+#define IBMVFC_CAN_SEND_VF_WWPN 0x10
__be64 node_name;
struct srp_direct_buf async;
u8 partition_name[IBMVFC_MAX_NAME];
__be64 capabilities;
#define IBMVFC_CAN_FLUSH_ON_HALT 0x08
#define IBMVFC_CAN_SUPPRESS_ABTS 0x10
-#define IBMVFC_CAN_SUPPORT_CHANNELS 0x20
+#define IBMVFC_MAD_VERSION_CAP 0x20
+#define IBMVFC_HANDLE_VF_WWPN 0x40
+#define IBMVFC_CAN_SUPPORT_CHANNELS 0x80
__be32 max_cmds;
__be32 scsi_id_sz;
__be64 max_dma_len;
__be32 reserved2;
struct ibmvfc_service_parms service_parms;
struct ibmvfc_service_parms service_parms_change;
- __be64 reserved3[2];
+ __be64 targetWWPN;
+ __be64 reserved3;
} __packed __aligned(8);
struct ibmvfc_move_login {
__be16 status;
__be16 error; /* also fc_reason */
__be32 reserved2;
- __be64 reserved3[2];
+ __be64 targetWWPN;
+ __be64 reserved3;
} __packed __aligned(8);
struct ibmvfc_query_tgt {
__be32 cancel_key;
__be32 my_cancel_key;
__be32 pad;
- __be64 reserved[2];
+ __be64 targetWWPN;
+ __be64 taskTag;
} __packed __aligned(8);
enum ibmvfc_fcp_rsp_info_codes {
__be64 correlation;
__be64 tgt_scsi_id;
__be64 tag;
- __be64 reserved3[2];
+ __be64 targetWWPN;
+ __be64 reserved3;
struct ibmvfc_fcp_cmd_iu iu;
struct ibmvfc_fcp_rsp rsp;
} __packed __aligned(8);
__be64 correlation;
__be64 scsi_id;
__be64 tag;
- __be64 reserved2[2];
+ __be64 targetWWPN;
+ __be64 reserved2;
} __packed __aligned(8);
struct ibmvfc_passthru_mad {