Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Jun 2008 20:32:42 -0700
From:      Sean Bruno <sbruno@miralink.com>
To:        freebsd-firewire@freebsd.org, Hidetoshi Shimokawa <simokawa@FreeBSD.ORG>
Subject:   Re: [RELENG_7] SBP Drives not recognized
Message-ID:  <48645F5A.6000209@miralink.com>
In-Reply-To: <485AFC6D.4050107@miralink.com>
References:  <485AFC6D.4050107@miralink.com>

next in thread | previous in thread | raw e-mail | index | archive | help

>
>
> This looks an awful lot like my issues with sbp_targ from previous 
> emails and may indicate a more serious failure in fwohci.c or firewire.c
>
> Or, it may indicate that I have no idea what I am doing.  :)
>
> This SBP-2 device is a external 2 disk enclosure with an Oxford 
> Semicondoctor F/W controller.  It seems to work just fine with linux 
> and windows.
>
> [sean@home-test ~]$ sudo fwcontrol -t
> crc_len: 4 generation:8 node_count:2 sid_count:2
> id link gap_cnt speed delay cIRM power port0 port1 port2 ini more
> 00    1       5  S800     0    0   -1W     -     -     P   0    0
> 01    1       5  S800     0    1   -1W     C     -     -   1    0
>
> [sean@home-test ~]$ sudo fwcontrol -p
> === base register ===
> 0x07 0x85 0xe3 0xe2 0xc4 0x03 0x50 0x00
> Physical_ID:1  R:1  CPS:1
> RHB:1  IBR:0  Gap_Count:5
> Extended:7 Num_Ports:3
> PHY_Speed:7 Delay:2
> LCtrl:1 C:1 Jitter:0 Pwr_Class:4
> WDIE:0 ISBR:0 CTOI:0 CPSI:0 STOI:0 PEI:0 EAA:1 EMC:1
> Max_Legacy_SPD:2 BLINK:1 Bridge:0
> Page_Select:0 Port_Select0
>
> === page 0 port 0 ===
> 0xfe 0x40 0xbb 0x00 0x00 0x00 0x00 0x00
> Astat:3 BStat:3 Ch:1 Con:1 RXOK:1 Dis:0
> Negotiated_speed:2 PIE:0 Fault:0 Stanby_fault:0 Disscrm:0 B_Only:0
> DC_connected:1 Max_port_speed:3 LPP:1 Cable_speed:3
> Connection_unreliable:0 Beta_mode:0
> Port_error:0x0
> Loop_disable:0 In_standby:0 Hard_disable:0
>
> === page 0 port 1 ===
> 0xf8 0x60 0x3b 0x00 0x00 0x00 0x00 0x00
> Astat:3 BStat:3 Ch:1 Con:0 RXOK:0 Dis:0
> Negotiated_speed:3 PIE:0 Fault:0 Stanby_fault:0 Disscrm:0 B_Only:0
> DC_connected:0 Max_port_speed:3 LPP:1 Cable_speed:3
> Connection_unreliable:0 Beta_mode:0
> Port_error:0x0
> Loop_disable:0 In_standby:0 Hard_disable:0
>
> === page 0 port 2 ===
> 0xf8 0x60 0x3b 0x00 0x00 0x00 0x00 0x00
> Astat:3 BStat:3 Ch:1 Con:0 RXOK:0 Dis:0
> Negotiated_speed:3 PIE:0 Fault:0 Stanby_fault:0 Disscrm:0 B_Only:0
> DC_connected:0 Max_port_speed:3 LPP:1 Cable_speed:3
> Connection_unreliable:0 Beta_mode:0
> Port_error:0x0
> Loop_disable:0 In_standby:0 Hard_disable:0
>
> === page 1 ===
> 0x02 0x00 0x08 0x00 0x28 0x83 0x13 0x04
> Compliance:2
> Vendor_ID:0x080028
> Product_ID:0x831304
>
> _______________________________________________
> freebsd-firewire@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-firewire
> To unsubscribe, send any mail to 
> "freebsd-firewire-unsubscribe@freebsd.org"

Ok, the failure case is that the firewire/sbp code is using the "max" 
speed instead of the negotiated speed.

So, since "fwdev->spd" is what is being used to determine the speed, is 
it appropriate to mimic "fwcontrol" and grab the phy_page_0 to figure 
out the negotiated speed?

Is it appropriate to check the phy_page during fw_sidrcv() when the 
driver creates the "speed map"?



Sean



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48645F5A.6000209>