All of lore.kernel.org
 help / color / mirror / Atom feed
From: Douglas Gilbert <dgilbert@interlog.com>
To: SCSI development list <linux-scsi@vger.kernel.org>,
	IDE/ATA development list <linux-ide@vger.kernel.org>
Cc: "James.Bottomley@HansenPartnership.com"
	<James.Bottomley@HansenPartnership.com>,
	jgarzik@redhat.com, Tejun Heo <tj@kernel.org>
Subject: [PATCH] libata SATL: WWN for device id VPD page
Date: Fri, 13 May 2011 23:16:50 -0400	[thread overview]
Message-ID: <4DCDF422.5060109@interlog.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 544 bytes --]

libata implements a SCSI to ATA Translation Layer and
should comply with the SAT (ANSI INCITS 431-2007) and
SAT-2 (ANSI INCITS 465-2010).

Both standards require that if an ATA device supplies
a World Wide Name (WWN) then it should appear in the
corresponding SCSI device identification VPD page.

Changelog:
   - add NAA descriptor to the device identification VPD
     page for the addressed logical unit. ATA's WWN is
     in NAA(5) format.

The attached patch is against lk 2.6.38 .


Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>

[-- Attachment #2: libata-scsi_vpd83.patch --]
[-- Type: text/x-patch, Size: 1112 bytes --]

--- linux/drivers/ata/libata-scsi.c	2011-03-16 06:47:24.647997871 -0400
+++ linux/drivers/ata/libata-scsi.c_vpd83a	2011-05-13 19:35:40.601635269 -0400
@@ -2028,12 +2028,29 @@ static unsigned int ata_scsiop_inq_80(st
 static unsigned int ata_scsiop_inq_83(struct ata_scsi_args *args, u8 *rbuf)
 {
 	const int sat_model_serial_desc_len = 68;
-	int num;
+	int num, k;
+	unsigned char wwn_arr[8];
 
 	rbuf[1] = 0x83;			/* this page code */
 	num = 4;
 
-	/* piv=0, assoc=lu, code_set=ACSII, designator=vendor */
+	/* WWN starts at word 108 in IDENTIFY response */
+	ata_id_string(args->id, wwn_arr, 108, 8);
+	/* SPL(SAS-2.1) checks for zeros rather than checking supported bit */
+	for (k = 0; (k < 8) && (0 == wwn_arr[k]); ++k)
+		;
+	if (k < 8) {	/* found non-zero WWN */
+		/* piv=0, assoc=lu, code_set=binary, designator=naa */
+		rbuf[num + 0] = 1;
+		rbuf[num + 1] = 3;
+		rbuf[num + 2] = 0;
+		rbuf[num + 3] = 8;
+		num += 4;
+		memcpy(rbuf + num, wwn_arr, 8);
+		num += 8;
+	}
+
+	/* piv=0, assoc=lu, code_set=ASCII, designator=vendor */
 	rbuf[num + 0] = 2;
 	rbuf[num + 3] = ATA_ID_SERNO_LEN;
 	num += 4;

             reply	other threads:[~2011-05-14  3:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-14  3:16 Douglas Gilbert [this message]
2011-05-14  3:28 ` [PATCH] libata SATL: WWN for device id VPD page Douglas Gilbert

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=4DCDF422.5060109@interlog.com \
    --to=dgilbert@interlog.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=jgarzik@redhat.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=tj@kernel.org \
    /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.