1
0
Fork 0

scsi: Centralise ssp frame information units

The xfer_rdy, command, and task frame's iu structures are not available
in <scsi/sas.h>, but only aic94xx driver folder.  Add them to
include/scsi/sas.h

Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
John Garry 2015-11-18 00:50:28 +08:00 committed by Martin K. Petersen
parent 4190230edb
commit c15d75bec6
2 changed files with 80 additions and 43 deletions

View file

@ -327,46 +327,9 @@ struct scb_header {
#define LUN_SIZE 8
/* See SAS spec, task IU
*/
struct ssp_task_iu {
u8 lun[LUN_SIZE]; /* BE */
u16 _r_a;
u8 tmf;
u8 _r_b;
__be16 tag; /* BE */
u8 _r_c[14];
} __attribute__ ((packed));
/* See SAS spec, command IU
*/
struct ssp_command_iu {
u8 lun[LUN_SIZE];
u8 _r_a;
u8 efb_prio_attr; /* enable first burst, task prio & attr */
#define EFB_MASK 0x80
#define TASK_PRIO_MASK 0x78
#define TASK_ATTR_MASK 0x07
u8 _r_b;
u8 add_cdb_len; /* in dwords, since bit 0,1 are reserved */
union {
u8 cdb[16];
struct {
__le64 long_cdb_addr; /* bus address, LE */
__le32 long_cdb_size; /* LE */
u8 _r_c[3];
u8 eol_ds; /* eol:6,6, ds:5,4 */
} long_cdb; /* sequencer extension */
};
} __attribute__ ((packed));
struct xfer_rdy_iu {
__be32 requested_offset; /* BE */
__be32 write_data_len; /* BE */
__be32 _r_a;
} __attribute__ ((packed));
#define EFB_MASK 0x80
#define TASK_PRIO_MASK 0x78
#define TASK_ATTR_MASK 0x07
/* ---------- SCB tasks ---------- */
/* This is both ssp_task and long_ssp_task
@ -511,7 +474,7 @@ struct abort_task {
u8 proto_conn_rate;
__le32 _r_a;
struct ssp_frame_hdr ssp_frame;
struct ssp_task_iu ssp_task;
struct ssp_tmf_iu ssp_task;
__le16 sister_scb;
__le16 conn_handle;
u8 flags; /* ovrd_itnl_timer:3,3, suspend_data_trans:2,2 */
@ -549,7 +512,7 @@ struct clear_nexus {
u8 _r_b[3];
u8 conn_mask;
u8 _r_c[19];
struct ssp_task_iu ssp_task; /* LUN and TAG */
struct ssp_tmf_iu ssp_task; /* LUN and TAG */
__le16 _r_d;
__le16 conn_handle;
__le64 _r_e;
@ -562,7 +525,7 @@ struct initiate_ssp_tmf {
u8 proto_conn_rate;
__le32 _r_a;
struct ssp_frame_hdr ssp_frame;
struct ssp_task_iu ssp_task;
struct ssp_tmf_iu ssp_task;
__le16 sister_scb;
__le16 conn_handle;
u8 flags; /* itnl override and suspend data tx */

View file

@ -344,6 +344,43 @@ struct ssp_response_iu {
u8 sense_data[0];
} __attribute__ ((packed));
struct ssp_command_iu {
u8 lun[8];
u8 _r_a;
union {
struct {
u8 attr:3;
u8 prio:4;
u8 efb:1;
};
u8 efb_prio_attr;
};
u8 _r_b;
u8 _r_c:2;
u8 add_cdb_len:6;
u8 cdb[16];
u8 add_cdb[0];
} __attribute__ ((packed));
struct xfer_rdy_iu {
__be32 requested_offset;
__be32 write_data_len;
__be32 _r_a;
} __attribute__ ((packed));
struct ssp_tmf_iu {
u8 lun[8];
u16 _r_a;
u8 tmf;
u8 _r_b;
__be16 tag;
u8 _r_c[14];
} __attribute__ ((packed));
/* ---------- SMP ---------- */
struct report_general_resp {
@ -538,6 +575,43 @@ struct ssp_response_iu {
u8 sense_data[0];
} __attribute__ ((packed));
struct ssp_command_iu {
u8 lun[8];
u8 _r_a;
union {
struct {
u8 efb:1;
u8 prio:4;
u8 attr:3;
};
u8 efb_prio_attr;
};
u8 _r_b;
u8 add_cdb_len:6;
u8 _r_c:2;
u8 cdb[16];
u8 add_cdb[0];
} __attribute__ ((packed));
struct xfer_rdy_iu {
__be32 requested_offset;
__be32 write_data_len;
__be32 _r_a;
} __attribute__ ((packed));
struct ssp_tmf_iu {
u8 lun[8];
u16 _r_a;
u8 tmf;
u8 _r_b;
__be16 tag;
u8 _r_c[14];
} __attribute__ ((packed));
/* ---------- SMP ---------- */
struct report_general_resp {