On Thu, Aug 18, 2005 at 10:48:15AM -0700, Michael Chan wrote:
> Grant, Please see if this patch fixes the problem.

It does! :^)


> It is for the latest tg3 in 2.6.13-rc. 

I applied it to tg3 v3.28 because the box happened to have
a working 2.6.12 kernel and v3.28 compiled without pci_ids.h update.

I'll pull down a 2.6.13-rc kernel and try it again but am
convinced this solves the problem.

> [TG3]: Fix SerDes detection
> 
> A problem was reported by Grant Grundler on an HP rx8620 system where
> the copper NIC was detected as SerDes.

Regular add-on HP NICs have correct bootcode.
The patch description should indicate which NIC has broken bootcode:

        Tigon3 [partno(A7109-6) rev 0105 PHY(5701)] (PCI:33MHz:64-bit)


A7109-60001 is also known as "IOX Core LAN".

(I noticed lspci -v doesn't call it that and I'll have to investigate
if 0x1300 SSID was used for several different LAN cards.)


> In this case, the eeprom had the
> SerDes bit mistakenly set, causing the driver to detect that it was
> SerDes.

May I suggest a clearer statement?

    The "IOX Core LAN" eeprom incorrectly set the "PHY_TYPE_FIBER" bit in
    the NIC_SRAM_DATA_CFG value leading tg3 to treat the NIC as if it
    had SerDes Phy.

> This patch will override the SerDes bit in the eeprom if a valid PHY ID

...override the PHY_TYPE_FIBER bit if a valid PHY ID...

> is read from the MII registers on older 570x chips where the MII
> interface is not used on SerDes chips. On newer chips such as the 5780
> that use MII for both copper and SerDes, SerDes detection must rely on
> the eeprom.
> 
> This patch will make the SerDes detection identical to versions 3.25 and
> older.


Acked-by: Grant Grundler <[EMAIL PROTECTED]>

thanks,
grant


> diff -urp a/drivers/net/tg3.c b/drivers/net/tg3.c
> --- a/drivers/net/tg3.c       2005-08-18 09:29:53.093304976 -0700
> +++ b/drivers/net/tg3.c       2005-08-18 09:33:03.123416008 -0700
> @@ -8970,6 +8970,8 @@ static int __devinit tg3_phy_probe(struc
>               tp->phy_id = hw_phy_id;
>               if (hw_phy_id_masked == PHY_ID_BCM8002)
>                       tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES;
> +             else
> +                     tp->tg3_flags2 &= ~TG3_FLG2_PHY_SERDES;
>       } else {
>               if (tp->phy_id != PHY_ID_INVALID) {
>                       /* Do nothing, phy ID already set up in
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to