Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −43
Original line number Diff line number Diff line
@@ -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));

/* ---------- 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 */
+74 −0
Original line number Diff line number Diff line
@@ -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 {