netdev
[Top] [All Lists]

Re: Problem with 3c59x and 3C905B

To: Michael Illgner <fillg1@xxxxxx>
Subject: Re: Problem with 3c59x and 3C905B
From: Andrew Morton <andrewm@xxxxxxxxxx>
Date: Mon, 18 Dec 2000 21:05:23 +1100
Cc: netdev@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
References: <JDEJLKPAIGJAKBJPIALIIEKOCBAA.fillg1@xxxxxx>
Sender: owner-netdev@xxxxxxxxxxx
Michael Illgner wrote:
> 
> Hi folks,

Hello, Michael.  Good problem report.  You've done this before.

> ...
> Dec 17 19:44:48 ganerc kernel: Full duplex capable

Uh-oh.  Someone has set the `full duplex' bit in your
EEPROM.  Bit 15, word 0x0d.

>...
> Dec 17 19:59:15 ganerc kernel: eth0: MII #24 status 786d, link partner
> capability 40a1

40a1: the link partner is advertising only 10/100 half duplex.

> , setting half-duplex.

heh.  The driver lies.

> ...
>  MAC settings: full-duplex.

But vortex-diag doesn't.  You're running full-duplex.

> ...
> EEPROM contents (64 words, offset 0):
>  0x000: 0010 5ad8 25f1 9055 c579 0036 5051 6d50
>  0x008: 2971 0000 0010 5ad8 25f1 8010 0000 0022
                                   ^
                                  ^^^
> ...
> Options: force full-duplex.

And here is why - it's that EEPROM bit.

> ...
> Any idea what is going wrong here ?

You need to clear that bit - then the driver will run half-duplex.
If you have the 3com DOS-based config tool you can probably do
it with that.  Alternatively, see if you can get vortex-diag
(http://www.scyld.com/diag/) to do it - I find vortex-diag's
EEPROM writing a bit tricky to use.  So be careful to save the
output of `vortex-diag -ee' as a backup first.

You can probably kludge it in the driver with:

    /* Extract our information from the EEPROM data. */
    vp->info1 = eeprom[13];
+   vp->info1 &= ~0x8000;
    vp->info2 = eeprom[15];


Working out why your switch isn't talking full-duplex would
probably make things work too, but it's not a fix.

-

<Prev in Thread] Current Thread [Next in Thread>