diff options
author | Ben Collins <bcollins@ubuntu.com> | 2006-06-12 18:12:37 -0400 |
---|---|---|
committer | Ben Collins <bcollins@ubuntu.com> | 2006-06-12 18:12:37 -0400 |
commit | 647dcb5fae0ebb5da1272ed2773df0d3f152c303 (patch) | |
tree | 31d6a6ab3fd8acb2dc9335dfa181972f4433158a /drivers/ieee1394/hosts.h | |
parent | 57fdb58fa5a140bdd52cf4c4ffc30df73676f0a5 (diff) |
ieee1394: support for slow links or slow 1394b phy ports
Add support for the following types of hardware:
+ nodes that have a link speed < PHY speed
+ 1394b PHYs that are less than S800 capable
+ 1394b/1394a adapter cable between two 1394b PHYs
Also, S1600 and S3200 are now supported if IEEE1394_SPEED_MAX is raised.
A probing function is added to nodemgr's config ROM fetching routine
which adjusts the allowable speed if an access problem was encountered.
Pros and Cons of the approach:
+ minimum code footprint to support this less widely used hardware
+ nearly no overhead for unaffected hardware
- ineffective before nodemgr began to read the ROM of affected nodes
- ineffective if ieee1394 is loaded with disable_nodemgr=1
The speed map CSRs which are published to the bus are not touched by the
patch.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: Hakan Ardo <hakan@debian.org>
Cc: Calculex <linux@calculex.com>
Cc: Robert J. Kosinski <robk@cmcherald.com>
Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Diffstat (limited to 'drivers/ieee1394/hosts.h')
-rw-r--r-- | drivers/ieee1394/hosts.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/ieee1394/hosts.h b/drivers/ieee1394/hosts.h index 07d188ca8495..d1a47607cb89 100644 --- a/drivers/ieee1394/hosts.h +++ b/drivers/ieee1394/hosts.h | |||
@@ -30,12 +30,13 @@ struct hpsb_host { | |||
30 | 30 | ||
31 | unsigned char iso_listen_count[64]; | 31 | unsigned char iso_listen_count[64]; |
32 | 32 | ||
33 | int node_count; /* number of identified nodes on this bus */ | 33 | int node_count; /* number of identified nodes on this bus */ |
34 | int selfid_count; /* total number of SelfIDs received */ | 34 | int selfid_count; /* total number of SelfIDs received */ |
35 | int nodes_active; /* number of nodes that are actually active */ | 35 | int nodes_active; /* number of nodes with active link layer */ |
36 | u8 speed[63]; /* speed between each node and local node */ | ||
36 | 37 | ||
37 | nodeid_t node_id; /* node ID of this host */ | 38 | nodeid_t node_id; /* node ID of this host */ |
38 | nodeid_t irm_id; /* ID of this bus' isochronous resource manager */ | 39 | nodeid_t irm_id; /* ID of this bus' isochronous resource manager */ |
39 | nodeid_t busmgr_id; /* ID of this bus' bus manager */ | 40 | nodeid_t busmgr_id; /* ID of this bus' bus manager */ |
40 | 41 | ||
41 | /* this nodes state */ | 42 | /* this nodes state */ |