ieee1394: limit early node speed to host interface speed
authorPhilippe De Muyter <phdm@macqel.be>
Fri, 11 Apr 2008 14:27:59 +0000 (16:27 +0200)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Fri, 18 Apr 2008 15:55:31 +0000 (17:55 +0200)
The following patch limits the node speed to the host interface speed,
before using it.

Signed-off-by: Philippe De Muyter <phdm@macqel.be>
It should actually suffice to do this only for the local node's
speedcap[].  But there is another bug in the speed calculation:
The local node's speed is not correctly propagated to the speeds
which are to be used to access remote nodes.
http://thread.gmane.org/gmane.linux.kernel.firewire.devel/11772/focus=12024

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/ieee1394/ieee1394_core.c

index 942bf1f..dcdb71a 100644 (file)
@@ -373,6 +373,8 @@ static void build_speed_map(struct hpsb_host *host, int nodecount)
                        if (sid->port2 == SELFID_PORT_CHILD) cldcnt[n]++;
 
                        speedcap[n] = sid->speed;
+                       if (speedcap[n] > host->csr.lnk_spd)
+                               speedcap[n] = host->csr.lnk_spd;
                        n--;
                }
        }