All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viswas G <Viswas.G@microsemi.com>
To: linux-scsi@vger.kernel.org
Cc: xjtuwjp@gmail.com, Vasanthalakshmi.Tharmarajan@microsemi.com,
	Viswas.G@microsemi.com
Subject: [PATCH 1/6] pm80xx : redefine sas_identify_frame structure
Date: Fri, 30 Jan 2015 11:36:40 +0530	[thread overview]
Message-ID: <20150130060645.23653-2-Viswas.G@microsemi.com> (raw)
In-Reply-To: <20150130060645.23653-1-Viswas.G@microsemi.com>

sas_identify structure defined by pm80xx doesn't have CRC field.
So added a new sas_identify structure without CRC.

Signed-off-by: Raj Dinesh <Raj.Dinesh@microsemi.com>
Signed-off-by: Viswas G <Viswas.G@microsemi.com>
---
 drivers/scsi/pm8001/pm8001_hwi.h |  2 +-
 drivers/scsi/pm8001/pm8001_sas.h | 95 ++++++++++++++++++++++++++++++++++++++++
 drivers/scsi/pm8001/pm80xx_hwi.h |  2 +-
 3 files changed, 97 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_hwi.h b/drivers/scsi/pm8001/pm8001_hwi.h
index e4867e690c84..f4331afe9b0b 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.h
+++ b/drivers/scsi/pm8001/pm8001_hwi.h
@@ -157,7 +157,7 @@ struct mpi_msg_hdr{
 struct phy_start_req {
 	__le32	tag;
 	__le32	ase_sh_lm_slr_phyid;
-	struct sas_identify_frame sas_identify;
+	struct sas_identify_frame_local sas_identify;
 	u32	reserved[5];
 } __attribute__((packed, aligned(4)));
 
diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
index e81a8fa7ef1a..2e17505ed5b8 100644
--- a/drivers/scsi/pm8001/pm8001_sas.h
+++ b/drivers/scsi/pm8001/pm8001_sas.h
@@ -118,6 +118,101 @@ extern const struct pm8001_dispatch pm8001_80xx_dispatch;
 struct pm8001_hba_info;
 struct pm8001_ccb_info;
 struct pm8001_device;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+struct sas_identify_frame_local {
+	/* Byte 0 */
+	u8  frame_type:4;
+	u8  dev_type:3;
+	u8  _un0:1;
+
+	/* Byte 1 */
+	u8  _un1;
+
+	/* Byte 2 */
+	union {
+		struct {
+			u8  _un20:1;
+			u8  smp_iport:1;
+			u8  stp_iport:1;
+			u8  ssp_iport:1;
+			u8  _un247:4;
+		};
+		u8 initiator_bits;
+	};
+
+	/* Byte 3 */
+	union {
+		struct {
+			u8  _un30:1;
+			u8 smp_tport:1;
+			u8 stp_tport:1;
+			u8 ssp_tport:1;
+			u8 _un347:4;
+		};
+		u8 target_bits;
+	};
+
+	/* Byte 4 - 11 */
+	u8 _un4_11[8];
+
+	/* Byte 12 - 19 */
+	u8 sas_addr[SAS_ADDR_SIZE];
+
+	/* Byte 20 */
+	u8 phy_id;
+
+	u8 _un21_27[7];
+
+} __packed;
+
+#elif defined(__BIG_ENDIAN_BITFIELD)
+struct sas_identify_frame_local {
+	/* Byte 0 */
+	u8  _un0:1;
+	u8  dev_type:3;
+	u8  frame_type:4;
+
+	/* Byte 1 */
+	u8  _un1;
+
+	/* Byte 2 */
+	union {
+		struct {
+			u8  _un247:4;
+			u8  ssp_iport:1;
+			u8  stp_iport:1;
+			u8  smp_iport:1;
+			u8  _un20:1;
+		};
+		u8 initiator_bits;
+	};
+
+	/* Byte 3 */
+	union {
+		struct {
+			u8 _un347:4;
+			u8 ssp_tport:1;
+			u8 stp_tport:1;
+			u8 smp_tport:1;
+			u8 _un30:1;
+		};
+		u8 target_bits;
+	};
+
+	/* Byte 4 - 11 */
+	u8 _un4_11[8];
+
+	/* Byte 12 - 19 */
+	u8 sas_addr[SAS_ADDR_SIZE];
+
+	/* Byte 20 */
+	u8 phy_id;
+
+	u8 _un21_27[7];
+} __packed;
+#else
+#error "Bitfield order not defined!"
+#endif
 /* define task management IU */
 struct pm8001_tmf_task {
 	u8	tmf;
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.h b/drivers/scsi/pm8001/pm80xx_hwi.h
index 7a443bad6163..1ee2ec210065 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.h
+++ b/drivers/scsi/pm8001/pm80xx_hwi.h
@@ -248,7 +248,7 @@ struct mpi_msg_hdr {
 struct phy_start_req {
 	__le32	tag;
 	__le32	ase_sh_lm_slr_phyid;
-	struct sas_identify_frame sas_identify; /* 28 Bytes */
+	struct sas_identify_frame_local sas_identify; /* 28 Bytes */
 	__le32 spasti;
 	u32	reserved[21];
 } __attribute__((packed, aligned(4)));
-- 
2.12.3

  reply	other threads:[~2017-08-25 17:12 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-30  6:06 [PATCH 0/6] pm80xx updates Viswas G
2015-01-30  6:06 ` Viswas G [this message]
2017-08-29 11:19   ` [PATCH 1/6] pm80xx : redefine sas_identify_frame structure Jack Wang
2017-08-30 15:41     ` Viswas G
2017-08-30 16:03       ` Jack Wang
2017-08-30 16:28         ` Viswas G
2015-01-30  6:06 ` [PATCH 2/6] pm80xx: ILA and inactive firmware version through sysfs Viswas G
2017-08-29 11:26   ` Jack Wang
2015-01-30  6:06 ` [PATCH 3/6] pm80xx : Different SAS addresses for phys Viswas G
2017-08-29 11:25   ` Jack Wang
2017-08-30 16:55     ` Viswas G
2017-09-01  8:52       ` Jack Wang
2015-01-30  6:06 ` [PATCH 4/6] pm80xx : Corrected SATA abort handling Viswas G
2017-08-29 11:46   ` Jack Wang
2017-08-30 15:48     ` Viswas G
2015-01-30  6:06 ` [PATCH 5/6] pm80xx : panic on ncq error cleaning up the read log Viswas G
2017-08-29 11:49   ` Jack Wang
2015-01-30  6:06 ` [PATCH 6/6] pm80xx : corrected linkrate value Viswas G
2017-08-29 11:08   ` Jack Wang
2017-08-30  1:32     ` Martin K. Petersen
2017-08-25 21:47 ` [PATCH 0/6] pm80xx updates Martin K. Petersen
2017-08-26  5:27   ` Viswas G

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150130060645.23653-2-Viswas.G@microsemi.com \
    --to=viswas.g@microsemi.com \
    --cc=Vasanthalakshmi.Tharmarajan@microsemi.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=xjtuwjp@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.