} __attribute__ ((packed));
struct zfcp_rec_dbf_record_thread {
- u32 sema;
u32 total;
u32 ready;
u32 running;
-} __attribute__ ((packed));
+};
struct zfcp_rec_dbf_record_target {
u64 ref;
u64 wwpn;
u64 fcp_lun;
u32 erp_count;
-} __attribute__ ((packed));
+};
struct zfcp_rec_dbf_record_trigger {
u8 want;
u64 action;
u64 wwpn;
u64 fcp_lun;
-} __attribute__ ((packed));
+};
struct zfcp_rec_dbf_record_action {
u32 status;
u32 step;
u64 action;
u64 fsf_req;
-} __attribute__ ((packed));
+};
struct zfcp_rec_dbf_record {
u8 id;
struct zfcp_rec_dbf_record_target target;
struct zfcp_rec_dbf_record_trigger trigger;
} u;
-} __attribute__ ((packed));
+};
enum {
ZFCP_REC_DBF_ID_ACTION,
u8 fsf_status_qual[FSF_STATUS_QUALIFIER_SIZE];
u32 fsf_req_status;
u8 sbal_first;
- u8 sbal_curr;
u8 sbal_last;
+ u8 sbal_response;
u8 pool;
u64 erp_action;
union {
struct {
- u64 scsi_cmnd;
- u64 scsi_serial;
- } send_fcp;
+ u64 cmnd;
+ u64 serial;
+ } fcp;
struct {
u64 wwpn;
u32 d_id;
struct {
u32 d_id;
u8 ls_code;
- } send_els;
- } data;
+ } els;
+ } u;
} __attribute__ ((packed));
struct zfcp_hba_dbf_record_status {
} __attribute__ ((packed));
struct zfcp_hba_dbf_record_qdio {
- u32 status;
u32 qdio_error;
- u32 siga_error;
u8 sbal_index;
u8 sbal_count;
} __attribute__ ((packed));
struct zfcp_hba_dbf_record_response response;
struct zfcp_hba_dbf_record_status status;
struct zfcp_hba_dbf_record_qdio qdio;
- } type;
+ } u;
} __attribute__ ((packed));
-struct zfcp_san_dbf_record_ct {
- union {
- struct {
- u16 cmd_req_code;
- u8 revision;
- u8 gs_type;
- u8 gs_subtype;
- u8 options;
- u16 max_res_size;
- } request;
- struct {
- u16 cmd_rsp_code;
- u8 revision;
- u8 reason_code;
- u8 reason_code_expl;
- u8 vendor_unique;
- } response;
- } type;
- u32 payload_size;
+struct zfcp_san_dbf_record_ct_request {
+ u16 cmd_req_code;
+ u8 revision;
+ u8 gs_type;
+ u8 gs_subtype;
+ u8 options;
+ u16 max_res_size;
+ u32 len;
#define ZFCP_DBF_CT_PAYLOAD 24
u8 payload[ZFCP_DBF_CT_PAYLOAD];
} __attribute__ ((packed));
+struct zfcp_san_dbf_record_ct_response {
+ u16 cmd_rsp_code;
+ u8 revision;
+ u8 reason_code;
+ u8 expl;
+ u8 vendor_unique;
+ u32 len;
+ u8 payload[ZFCP_DBF_CT_PAYLOAD];
+} __attribute__ ((packed));
+
struct zfcp_san_dbf_record_els {
u8 ls_code;
- u32 payload_size;
+ u32 len;
#define ZFCP_DBF_ELS_PAYLOAD 32
#define ZFCP_DBF_ELS_MAX_PAYLOAD 1024
u8 payload[ZFCP_DBF_ELS_PAYLOAD];
u32 s_id;
u32 d_id;
union {
- struct zfcp_san_dbf_record_ct ct;
+ struct zfcp_san_dbf_record_ct_request ct_req;
+ struct zfcp_san_dbf_record_ct_response ct_resp;
struct zfcp_san_dbf_record_els els;
- } type;
+ } u;
} __attribute__ ((packed));
struct zfcp_scsi_dbf_record {
u64 fsf_reqid;
u32 fsf_seqno;
u64 fsf_issued;
- union {
- u64 old_fsf_reqid;
- struct {
- u8 rsp_validity;
- u8 rsp_scsi_status;
- u32 rsp_resid;
- u8 rsp_code;
+ u64 old_fsf_reqid;
+ u8 rsp_validity;
+ u8 rsp_scsi_status;
+ u32 rsp_resid;
+ u8 rsp_code;
#define ZFCP_DBF_SCSI_FCP_SNS_INFO 16
#define ZFCP_DBF_SCSI_MAX_FCP_SNS_INFO 256
- u32 sns_info_len;
- u8 sns_info[ZFCP_DBF_SCSI_FCP_SNS_INFO];
- } fcp;
- } type;
+ u32 sns_info_len;
+ u8 sns_info[ZFCP_DBF_SCSI_FCP_SNS_INFO];
} __attribute__ ((packed));
#endif /* ZFCP_DBF_H */