svn commit: r188726 - head/sys/dev/firewire
Sean Bruno
sbruno at FreeBSD.org
Tue Feb 17 11:37:05 PST 2009
Author: sbruno
Date: Tue Feb 17 19:37:04 2009
New Revision: 188726
URL: http://svn.freebsd.org/changeset/base/188726
Log:
Introduce 1394a-2000 extended PHY Self ID packets.
Deprecate unused phy_delay Self ID field as it was removed
by 1394a-2000.
Attempt to parse extended Self ID PHY packets if they are detected
Reviewed by: scottl (mentor)
MFC after: 2 weeks
Modified:
head/sys/dev/firewire/firewire.c
head/sys/dev/firewire/firewire.h
Modified: head/sys/dev/firewire/firewire.c
==============================================================================
--- head/sys/dev/firewire/firewire.c Tue Feb 17 19:17:25 2009 (r188725)
+++ head/sys/dev/firewire/firewire.c Tue Feb 17 19:37:04 2009 (r188726)
@@ -1270,12 +1270,29 @@ fw_print_sid(uint32_t sid)
{
union fw_self_id *s;
s = (union fw_self_id *) &sid;
- printf("node:%d link:%d gap:%d spd:%d del:%d con:%d pwr:%d"
- " p0:%d p1:%d p2:%d i:%d m:%d\n",
- s->p0.phy_id, s->p0.link_active, s->p0.gap_count,
- s->p0.phy_speed, s->p0.phy_delay, s->p0.contender,
- s->p0.power_class, s->p0.port0, s->p0.port1,
- s->p0.port2, s->p0.initiated_reset, s->p0.more_packets);
+ if ( s->p0.sequel ) {
+ if ( s->p1.sequence_num == FW_SELF_ID_PAGE0 ) {
+ printf("node:%d p3:%d p4:%d p5:%d p6:%d p7:%d"
+ "p8:%d p9:%d p10:%d\n",
+ s->p1.phy_id, s->p1.port3, s->p1.port4,
+ s->p1.port5, s->p1.port6, s->p1.port7,
+ s->p1.port8, s->p1.port9, s->p1.port10);
+ } else if (s->p2.sequence_num == FW_SELF_ID_PAGE1 ){
+ printf("node:%d p11:%d p12:%d p13:%d p14:%d p15:%d\n",
+ s->p2.phy_id, s->p2.port11, s->p2.port12,
+ s->p2.port13, s->p2.port14, s->p2.port15);
+ } else {
+ printf("node:%d Unknown Self ID Page number %d\n",
+ s->p1.phy_id, s->p1.sequence_num);
+ }
+ } else {
+ printf("node:%d link:%d gap:%d spd:%d con:%d pwr:%d"
+ " p0:%d p1:%d p2:%d i:%d m:%d\n",
+ s->p0.phy_id, s->p0.link_active, s->p0.gap_count,
+ s->p0.phy_speed, s->p0.contender,
+ s->p0.power_class, s->p0.port0, s->p0.port1,
+ s->p0.port2, s->p0.initiated_reset, s->p0.more_packets);
+ }
}
/*
Modified: head/sys/dev/firewire/firewire.h
==============================================================================
--- head/sys/dev/firewire/firewire.h Tue Feb 17 19:17:25 2009 (r188725)
+++ head/sys/dev/firewire/firewire.h Tue Feb 17 19:37:04 2009 (r188726)
@@ -292,6 +292,10 @@ struct fw_devlstreq {
#define FW_SELF_ID_PORT_CONNECTED_TO_PARENT 2
#define FW_SELF_ID_PORT_NOT_CONNECTED 1
#define FW_SELF_ID_PORT_NOT_EXISTS 0
+
+#define FW_SELF_ID_PAGE0 0
+#define FW_SELF_ID_PAGE1 1
+
#if BYTE_ORDER == BIG_ENDIAN
union fw_self_id {
struct {
@@ -301,7 +305,7 @@ union fw_self_id {
link_active:1,
gap_count:6,
phy_speed:2,
- phy_delay:2,
+ reserved:2,
contender:1,
power_class:3,
port0:2,
@@ -353,7 +357,7 @@ union fw_self_id {
port0:2,
power_class:3,
contender:1,
- phy_delay:2,
+ reserved:2,
phy_speed:2,
gap_count:6,
link_active:1,
More information about the svn-src-all
mailing list