Commit c15d75be authored by John Garry's avatar John Garry Committed by Martin K. Petersen

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: default avatarJohn Garry <john.garry@huawei.com>
Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 4190230e
...@@ -327,46 +327,9 @@ struct scb_header { ...@@ -327,46 +327,9 @@ struct scb_header {
#define LUN_SIZE 8 #define LUN_SIZE 8
/* See SAS spec, task IU #define EFB_MASK 0x80
*/ #define TASK_PRIO_MASK 0x78
struct ssp_task_iu { #define TASK_ATTR_MASK 0x07
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));
/* ---------- SCB tasks ---------- */ /* ---------- SCB tasks ---------- */
/* This is both ssp_task and long_ssp_task /* This is both ssp_task and long_ssp_task
...@@ -511,7 +474,7 @@ struct abort_task { ...@@ -511,7 +474,7 @@ struct abort_task {
u8 proto_conn_rate; u8 proto_conn_rate;
__le32 _r_a; __le32 _r_a;
struct ssp_frame_hdr ssp_frame; struct ssp_frame_hdr ssp_frame;
struct ssp_task_iu ssp_task; struct ssp_tmf_iu ssp_task;
__le16 sister_scb; __le16 sister_scb;
__le16 conn_handle; __le16 conn_handle;
u8 flags; /* ovrd_itnl_timer:3,3, suspend_data_trans:2,2 */ u8 flags; /* ovrd_itnl_timer:3,3, suspend_data_trans:2,2 */
...@@ -549,7 +512,7 @@ struct clear_nexus { ...@@ -549,7 +512,7 @@ struct clear_nexus {
u8 _r_b[3]; u8 _r_b[3];
u8 conn_mask; u8 conn_mask;
u8 _r_c[19]; 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 _r_d;
__le16 conn_handle; __le16 conn_handle;
__le64 _r_e; __le64 _r_e;
...@@ -562,7 +525,7 @@ struct initiate_ssp_tmf { ...@@ -562,7 +525,7 @@ struct initiate_ssp_tmf {
u8 proto_conn_rate; u8 proto_conn_rate;
__le32 _r_a; __le32 _r_a;
struct ssp_frame_hdr ssp_frame; struct ssp_frame_hdr ssp_frame;
struct ssp_task_iu ssp_task; struct ssp_tmf_iu ssp_task;
__le16 sister_scb; __le16 sister_scb;
__le16 conn_handle; __le16 conn_handle;
u8 flags; /* itnl override and suspend data tx */ u8 flags; /* itnl override and suspend data tx */
......
...@@ -344,6 +344,43 @@ struct ssp_response_iu { ...@@ -344,6 +344,43 @@ struct ssp_response_iu {
u8 sense_data[0]; u8 sense_data[0];
} __attribute__ ((packed)); } __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 ---------- */ /* ---------- SMP ---------- */
struct report_general_resp { struct report_general_resp {
...@@ -538,6 +575,43 @@ struct ssp_response_iu { ...@@ -538,6 +575,43 @@ struct ssp_response_iu {
u8 sense_data[0]; u8 sense_data[0];
} __attribute__ ((packed)); } __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 ---------- */ /* ---------- SMP ---------- */
struct report_general_resp { struct report_general_resp {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment