From: Chris Boot <bootc@bootc.net>
To: linux1394-devel@lists.sourceforge.net
Cc: linux-kernel@vger.kernel.org, Chris Boot <bootc@bootc.net>,
Stefan Richter <stefanr@s5r6.in-berlin.de>,
Clemens Ladisch <clemens@ladisch.de>
Subject: [PATCH v2 1/3] firewire-sbp2: Take into account Unit_Unique_ID
Date: Wed, 15 Feb 2012 14:59:08 +0000 [thread overview]
Message-ID: <1329317950-101579-2-git-send-email-bootc@bootc.net> (raw)
In-Reply-To: <1329317950-101579-1-git-send-email-bootc@bootc.net>
If the target's unit directory contains a Unit_Unique_ID entry, we
should use that as the target's GUID for identification purposes. The
SBP-2 standards document says:
"Although the node unique ID (EUI-64) present in the bus information
block is sufficient to uniquely identify nodes attached to Serial Bus,
it is insufficient to identify a target when a vendor implements a
device with multiple Serial Bus node connections. In this case initiator
software requires information by which a particular target may be
uniquely identified, regardless of the Serial Bus access path used."
[ IEEE T10 P1155D Revision 4, Section 7.6 (page 51) ] and
[ IEEE T10 P1467D Revision 5, Section 7.9 (page 74) ]
Signed-off-by: Chris Boot <bootc@bootc.net>
Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: Clemens Ladisch <clemens@ladisch.de>
---
drivers/firewire/sbp2.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c
index 80e95aa..a8f43d2 100644
--- a/drivers/firewire/sbp2.c
+++ b/drivers/firewire/sbp2.c
@@ -211,6 +211,7 @@ static struct fw_device *target_device(struct sbp2_target *tgt)
#define SBP2_CSR_UNIT_CHARACTERISTICS 0x3a
#define SBP2_CSR_FIRMWARE_REVISION 0x3c
#define SBP2_CSR_LOGICAL_UNIT_NUMBER 0x14
+#define SBP2_CSR_UNIT_UNIQUE_ID 0x8d
#define SBP2_CSR_LOGICAL_UNIT_DIRECTORY 0xd4
/* Management orb opcodes */
@@ -997,6 +998,13 @@ static int sbp2_add_logical_unit(struct sbp2_target *tgt, int lun_entry)
return 0;
}
+static void sbp2_get_unit_unique_id(struct sbp2_target *tgt,
+ const u32 *leaf)
+{
+ if ((leaf[0] & 0xffff0000) == 0x00020000)
+ tgt->guid = (u64)leaf[1] << 32 | leaf[2];
+}
+
static int sbp2_scan_logical_unit_dir(struct sbp2_target *tgt,
const u32 *directory)
{
@@ -1048,6 +1056,10 @@ static int sbp2_scan_unit_dir(struct sbp2_target *tgt, const u32 *directory,
return -ENOMEM;
break;
+ case SBP2_CSR_UNIT_UNIQUE_ID:
+ sbp2_get_unit_unique_id(tgt, ci.p - 1 + value);
+ break;
+
case SBP2_CSR_LOGICAL_UNIT_DIRECTORY:
/* Adjust for the increment in the iterator */
if (sbp2_scan_logical_unit_dir(tgt, ci.p - 1 + value) < 0)
--
1.7.9
next prev parent reply other threads:[~2012-02-15 14:59 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <EE1CAC85-DF0C-4C21-B2BD-446C481C938F@bootc.net>
2012-02-10 13:41 ` [PATCH 0/3] firewire-sbp2: Various fixes Chris Boot
2012-02-10 13:41 ` [PATCH 1/3] firewire-sbp2: Take into account Unit_Unique_ID Chris Boot
2012-02-11 11:12 ` Stefan Richter
2012-02-11 11:12 ` Stefan Richter
2012-02-11 12:26 ` Chris Boot
2012-02-11 13:06 ` Stefan Richter
2012-02-10 13:41 ` [PATCH 2/3] firewire-sbp2: Ignore SBP-2 targets on the local node Chris Boot
2012-02-11 11:28 ` Stefan Richter
2012-02-11 12:16 ` Clemens Ladisch
2012-02-11 12:31 ` Chris Boot
2012-02-11 15:46 ` Clemens Ladisch
2012-02-11 15:49 ` Chris Boot
2012-02-11 11:56 ` Stefan Richter
2012-02-11 12:32 ` Chris Boot
2012-02-10 13:41 ` [PATCH 3/3] firewire-sbp2: Fix SCSI sense data mangling Chris Boot
2012-02-15 14:59 ` [PATCH v2 0/3] firewire-sbp2: Various fixes Chris Boot
2012-02-15 14:59 ` Chris Boot [this message]
2012-02-15 14:59 ` [PATCH v2 2/3] firewire-sbp2: Ignore SBP-2 targets on the local node Chris Boot
2012-02-15 14:59 ` [PATCH v2 3/3] firewire-sbp2: Fix SCSI sense data mangling Chris Boot
2012-02-22 22:17 ` [PATCH v2 0/3] firewire-sbp2: Various fixes Stefan Richter
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=1329317950-101579-2-git-send-email-bootc@bootc.net \
--to=bootc@bootc.net \
--cc=clemens@ladisch.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=stefanr@s5r6.in-berlin.de \
/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.