diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index 71f625926ae1..89b859176b8b 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c @@ -220,6 +220,13 @@ void zfcp_dbf_hba_fsf_uss(char *tag, struct zfcp_fsf_req *req) rec->u.uss.lun = srb->fcp_lun; memcpy(&rec->u.uss.queue_designator, &srb->queue_designator, sizeof(rec->u.uss.queue_designator)); + rec->u.uss.length = srb->length; + rec->u.uss.res1 = srb->res1; + rec->u.uss.res2 = srb->res2; + rec->u.uss.class = srb->class; + rec->u.uss.res3 = srb->res3; + rec->u.uss.s_id = ntoh24(srb->s_id); + memcpy(&rec->u.uss.res4, &srb->res4, sizeof(rec->u.uss.res4)); /* status read buffer payload length */ rec->pl_len = (!srb->length) ? 0 : srb->length - diff --git a/drivers/s390/scsi/zfcp_dbf.h b/drivers/s390/scsi/zfcp_dbf.h index 4d1435c573bc..44ebad8c761c 100644 --- a/drivers/s390/scsi/zfcp_dbf.h +++ b/drivers/s390/scsi/zfcp_dbf.h @@ -149,6 +149,13 @@ struct zfcp_dbf_hba_res { * @d_id: destination ID * @lun: logical unit number * @queue_designator: queue designator + * @length: buffer length + * @res1: reserved field 1 + * @res2: reserved field 2 + * @class: class of service + * @res3: reserved field 3 + * @s_id: source ID + * @res4: reserved field 4 */ struct zfcp_dbf_hba_uss { u32 status_type; @@ -156,6 +163,13 @@ struct zfcp_dbf_hba_uss { u32 d_id; u64 lun; u64 queue_designator; + u32 length; + u32 res1; + u8 res2; + u32 class; + u8 res3; + u32 s_id; + u8 res4[20]; } __packed; /** diff --git a/drivers/s390/scsi/zfcp_fsf.h b/drivers/s390/scsi/zfcp_fsf.h index 5e6b601af980..4b92e85ec71d 100644 --- a/drivers/s390/scsi/zfcp_fsf.h +++ b/drivers/s390/scsi/zfcp_fsf.h @@ -246,7 +246,9 @@ struct fsf_status_read_buffer { u8 d_id[3]; u32 class; u64 fcp_lun; - u8 res3[24]; + u8 res3; + u8 s_id[3]; + u8 res4[20]; union { u8 data[FSF_STATUS_READ_PAYLOAD_SIZE]; u32 word[FSF_STATUS_READ_PAYLOAD_SIZE/sizeof(u32)];