Skip to contentSkip to conversation

staging/fwserial: use correct vendor/version IDs

PATCH In review Clemens Ladisch 4 participants 7 messages Jan 28, 2015 – Feb 7, 2015 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

PATCH 1/1 staging/fwserial: use correct vendor/version IDs

The driver was using the vendor ID 0xd00d1e from the FireWire core. However, this ID was not registered, and invalid.

Instead, use the vendor/version IDs that now are officially assigned to firewire-serial:
https://ieee1394.wiki.kernel.org/index.php/IEEE_OUI_Assignments

---
 drivers/staging/fwserial/TODO       |    5 ++---
 drivers/staging/fwserial/fwserial.c |    4 ++--
 2 files changed, 4 insertions(+), 5 deletions(-)
drivers/staging/fwserial/TODO +2 -3
index 382a795..c3d1d3a 100644
@@ -9,6 +9,5 @@ TODOs prior to this driver moving out of staging
    GUID-to-port matching/whitelist/blacklist.
 
 -- Issues with firewire stack --
-1. This driver uses the same unregistered vendor id that the firewire core does
-     (0xd00d1e). Perhaps this could be exposed as a define in
-     firewire.h?
+1. This driver uses the same ids that the firewire core does (001f11:0239xx).
+   Perhaps this could be exposed as a define in firewire.h?
drivers/staging/fwserial/fwserial.c +2 -2
index 73deae3..2964366 100644
@@ -30,8 +30,8 @@
 
 #define be32_to_u64(hi, lo)  ((u64)be32_to_cpu(hi) << 32 | be32_to_cpu(lo))
 
-#define LINUX_VENDOR_ID   0xd00d1eU  /* same id used in card root directory   */
-#define FWSERIAL_VERSION  0x00e81cU  /* must be unique within LINUX_VENDOR_ID */
+#define LINUX_VENDOR_ID   0x001f11U  /* same id used in card root directory   */
+#define FWSERIAL_VERSION  0x023953U  /* must be unique within LINUX_VENDOR_ID */
 
 /* configurable options */
 static int num_ttys = 4;	    /* # of std ttys to create per fw_card    */
#2 lore raw
Quoted 9 lines · On Jan 28 Clemens Ladisch wrote:

The driver was using the vendor ID 0xd00d1e from the FireWire core. However, this ID was not registered, and invalid.

Instead, use the vendor/version IDs that now are officially assigned to firewire-serial:
https://ieee1394.wiki.kernel.org/index.php/IEEE_OUI_Assignments

---

[...]

drivers/staging/fwserial/fwserial.c line 34

Quoted 10 lines
drivers/staging/fwserial/fwserial.c +2 -2
@@ -30,8 +30,8 @@
 
 #define be32_to_u64(hi, lo)  ((u64)be32_to_cpu(hi) << 32 | be32_to_cpu(lo))
 
-#define LINUX_VENDOR_ID   0xd00d1eU  /* same id used in card root directory   */
-#define FWSERIAL_VERSION  0x00e81cU  /* must be unique within LINUX_VENDOR_ID */
+#define LINUX_VENDOR_ID   0x001f11U  /* same id used in card root directory   */
+#define FWSERIAL_VERSION  0x023953U  /* must be unique within LINUX_VENDOR_ID */

(Bikeshedding: Per IEEE Registration Authority's list, 001f11 is not a "Linux vendor ID" but Openmoko, Inc.'s vendor ID.)

Greg,
just FYI, the comment "same id used in card root directory" will remain true only once a corresponding change to firewire-core was merged. Proposed patch: http://marc.info/?l=linux1394-devel&m=142247554618207
(If I receive no substantial objections, this will go in in the next merge window.)

Date: Wed, 28 Jan 2015 21:04:48 +0100
From: Clemens Ladisch <[email protected]>
To: Stefan Richter <[email protected]>
CC: [email protected]
Subject: [PATCH] firewire: core: use correct vendor/model IDs

The kernel was using the vendor ID 0xd00d1e, which was inherited from the old ieee1394 driver stack. However, this ID was not registered, and invalid.

Instead, use the vendor/model IDs that are now officially assigned to the kernel:
https://ieee1394.wiki.kernel.org/index.php/IEEE_OUI_Assignments

---
 drivers/firewire/core-transaction.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/firewire/core-transaction.c +2 -2
index 60f6963..99d9d8c7 100644
@@ -1271,14 +1271,14 @@ static u32 model_textual_descriptor[3 + 64/4] = {
 
 static struct fw_descriptor vendor_id_descriptor = {
 	.length = ARRAY_SIZE(vendor_textual_descriptor),
-	.immediate = 0x03d00d1e,
+	.immediate = 0x03001f11,
 	.key = 0x81000000,
 	.data = vendor_textual_descriptor,
 };
 
 static struct fw_descriptor model_id_descriptor = {
 	.length = ARRAY_SIZE(model_textual_descriptor),
-	.immediate = 0x17000001,
+	.immediate = 0x17023901,
 	.key = 0x81000000,
 	.data = model_textual_descriptor,
 };
Signature · 3 lines
Stefan Richter
-=====-===== ---= ===-=
http://arcgraph.de/sr/
#3 lore raw
In reply to Clemens Ladisch
Quoted 6 lines · Clemens Ladisch

The driver was using the vendor ID 0xd00d1e from the FireWire core. However, this ID was not registered, and invalid.

Instead, use the vendor/version IDs that now are officially assigned to firewire-serial:
https://ieee1394.wiki.kernel.org/index.php/IEEE_OUI_Assignments

That's great that we have official OUIs now, but I have to NACK this patch as is.

The problem is a host with the old OUIs will not recognize a remote unit with the new OUIs, and vice versa.

Even though the new ids could be added to the unit driver's id_table, (which would let hosts with the new OUI connect to either OUI remote), it wouldn't let 3.19- hosts connect to 3.20+ hosts.

Regards,
Peter Hurley

#4 lore raw
Quoted 11 lines · On Feb 02 Peter Hurley wrote:
Quoted 6 lines · Clemens Ladisch

The driver was using the vendor ID 0xd00d1e from the FireWire core. However, this ID was not registered, and invalid.

Instead, use the vendor/version IDs that now are officially assigned to firewire-serial:
https://ieee1394.wiki.kernel.org/index.php/IEEE_OUI_Assignments

That's great that we have official OUIs now, but I have to NACK this patch as is.

Quoted 6 lines

The problem is a host with the old OUIs will not recognize a remote unit with the new OUIs, and vice versa.

Even though the new ids could be added to the unit driver's id_table, (which would let hosts with the new OUI connect to either OUI remote), it wouldn't let 3.19- hosts connect to 3.20+ hosts.

Actually there are no 3.19- hosts that speak fwserial; there are only staging hosts that do so. So, with this patch added, certain staging hosts would become unable to talk with certain other staging hosts (and with future Linux hosts, once fwserial gets merged upstream).

Both fwserial-the-implementation and fwserial-the-protocol are your own, and as yet unmerged. (In addition, there does not yet exist a second implementation, AFAIK.) So I'd say there is still opportunity to improve the protocol even in incompatible ways if justified. Switching to valid identifiers may very well be such a justifiable change.

Signature · 3 lines
Stefan Richter
-=====-===== --=- ---==
http://arcgraph.de/sr/
#5 lore raw
Quoted 15 lines · Stefan Richter
Quoted 14 lines · On Feb 02 Peter Hurley wrote:
Quoted 6 lines · Clemens Ladisch

The driver was using the vendor ID 0xd00d1e from the FireWire core. However, this ID was not registered, and invalid.

Instead, use the vendor/version IDs that now are officially assigned to firewire-serial:
https://ieee1394.wiki.kernel.org/index.php/IEEE_OUI_Assignments

That's great that we have official OUIs now, but I have to NACK this patch as is.

The problem is a host with the old OUIs will not recognize a remote unit with the new OUIs, and vice versa.

Quoted 8 lines
Quoted 3 lines

Even though the new ids could be added to the unit driver's id_table, (which would let hosts with the new OUI connect to either OUI remote), it wouldn't let 3.19- hosts connect to 3.20+ hosts.

Actually there are no 3.19- hosts that speak fwserial; there are only staging hosts that do so. So, with this patch added, certain staging hosts would become unable to talk with certain other staging hosts (and with future Linux hosts, once fwserial gets merged upstream).

The breakage seems gratuitous especially considering the existing OUI has been in use for a decade.

Quoted 2 lines

Both fwserial-the-implementation and fwserial-the-protocol are your own, and as yet unmerged.

I've been waiting for you to work through the patch backlog from Feb and Mar of last year before sending you more patches to merge fwserial.

Quoted 4 lines

(In addition, there does not yet exist a second
implementation, AFAIK.) So I'd say there is still opportunity to improve the protocol even in incompatible ways if justified. Switching to valid identifiers may very well be such a justifiable change.

I would appreciate you sharing any suggestions for improving the protocol.

While I concede the protocol is not perfect, I'm struggling to see how changing the OUI improves it.

Regards,
Peter Hurley

#6 lore raw
Quoted 2 lines · On Feb 03 Peter Hurley wrote:
Quoted 1 line · Stefan Richter

On Feb 02 Peter Hurley wrote:

[...]

Quoted 7 lines
Quoted 7 lines
Quoted 6 lines

The problem is a host with the old OUIs will not recognize a remote unit with the new OUIs, and vice versa.

Even though the new ids could be added to the unit driver's id_table, (which would let hosts with the new OUI connect to either OUI remote), it wouldn't let 3.19- hosts connect to 3.20+ hosts.

Quoted 7 lines
Quoted 4 lines

Actually there are no 3.19- hosts that speak fwserial; there are only staging hosts that do so. So, with this patch added, certain staging hosts would become unable to talk with certain other staging hosts (and with future Linux hosts, once fwserial gets merged upstream).

The breakage seems gratuitous especially considering the existing OUI has been in use for a decade.

This ID has never been in use to identify the specifier of a unit architecture though, nor has it been used otherwise in any protocol. And the way how the ID /was/ used doesn't make it an OUI.

[Since 7.5 years ago the new firewire-core puts a fixed, unregistered value into the config ROM's root dir's vendor ID leaf, whereas until 4 years ago ieee1394 has been copying the upper 24 bits of the node's EUI-64 there. Years counted according to mainline Linux releases. As another historical note, 7.5 years ago the occupied OUI space consisted of 10456 IDs from 0…acde48, now it is 19896 IDs from 0…fcffaa.]

Quoted 5 lines
Quoted 2 lines

Both fwserial-the-implementation and fwserial-the-protocol are your own, and as yet unmerged.

I've been waiting for you to work through the patch backlog from Feb and Mar of last year before sending you more patches to merge fwserial.

If there is one or another patch among them which directly blocks your work on fwserial, ping me so that I can reconsider priorities. Though if you were just expressing dissatisfaction with the subsystem's maintenance progress, well, then that's noted and quite agreed.

Quoted 9 lines
Quoted 4 lines

(In addition, there does not yet exist a second
implementation, AFAIK.) So I'd say there is still opportunity to improve the protocol even in incompatible ways if justified. Switching to valid identifiers may very well be such a justifiable change.

I would appreciate you sharing any suggestions for improving the protocol.

While I concede the protocol is not perfect, I'm struggling to see how changing the OUI improves it.

The difference of course is nothing more than that the interoperability of the specifier_ID:software_version tuple either depends on made-up IDs, or on IDs whose uniqueness is based on a proper chain of registrations.

Signature · 3 lines
Stefan Richter
-=====-===== --=- ---==
http://arcgraph.de/sr/
#7 lore raw
In reply to Clemens Ladisch
Quoted 7 lines · Clemens Ladisch

The driver was using the vendor ID 0xd00d1e from the FireWire core. However, this ID was not registered, and invalid.

Instead, use the vendor/version IDs that now are officially assigned to firewire-serial:
https://ieee1394.wiki.kernel.org/index.php/IEEE_OUI_Assignments

Quoted 5 lines
---
 drivers/staging/fwserial/TODO       |    5 ++---
 drivers/staging/fwserial/fwserial.c |    4 ++--
 2 files changed, 4 insertions(+), 5 deletions(-)

I'm dropping this from my queue until you all agree that I can apply it.

thanks,

greg k-h