cvs commit: src/sys/dev/fxp if_fxp.c
Andre Albsmeier
andre.albsmeier at siemens.com
Fri Dec 31 07:39:38 PST 2004
This broke my two 10MBit Intel NICs...
On Tue, 28-Dec-2004 at 22:49:24 +0000, Maxime Henrion wrote:
> mux 2004-12-28 22:49:24 UTC
>
> FreeBSD src repository
>
> Modified files: (Branch: RELENG_4)
> sys/dev/fxp if_fxp.c
> Log:
> Merge if_fxp.c:1.220 from HEAD to RELENG_4:
>
> date: 2004/12/20 10:18:21; author: mux; state: Exp; lines: +2 -2
> Only try to use the 82503 serial interface for the 82557 chipsets. The
> datasheet says it is only valid for such chipsets and shouldn't be used
> with others. This fixes some 82559 based cards which otherwise only
> work at 10Mbit.
>
> MFC after: 5 days
> Tested by: krion
>
> Revision Changes Path
> 1.110.2.35 +2 -2 src/sys/dev/fxp/if_fxp.c
This one works (100MBit):
fxp0: <Intel 82550 Pro/100 Ethernet> port 0xd000-0xd03f mem 0xe1000000-0xe101ffff,0xe1800000-0xe1800fff irq 12 at device 10.0 on pci0
fxp0: Ethernet address 00:02:b3:1f:25:dc
inphy0: <i82555 10/100 media interface> on miibus0
inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
The first broken one:
fxp1: <Intel 82557 Pro/100 Ethernet> port 0xb800-0xb81f mem 0xe0800000-0xe08fffff,0xe3800000-0xe3800fff irq 10 at device 11.0 on pci0
fxp1: Ethernet address 00:a0:c9:a9:1d:06
fxp1: MII without any PHY!
device_probe_and_attach: fxp1 attach returned 6
The other broken one (It got named fxp1 as well -- probably
because the first one couldn't be attached before)
fxp1: <Intel 82557 Pro/100 Ethernet> port 0xb400-0xb41f mem 0xe0000000-0xe00fffff,0xe2800000-0xe2800fff irq 11 at device 12.0 on pci0
fxp1: Ethernet address 00:a0:c9:a9:1d:23
fxp1: MII without any PHY!
device_probe_and_attach: fxp1 attach returned 6
They have an INTEL S82557 and a SEEQ NQ80C24 chip on them.
I could make them work again with this patch:
--- if_fxp.c.ORI Fri Dec 31 12:03:42 2004
+++ if_fxp.c Fri Dec 31 15:24:01 2004
@@ -511,7 +511,7 @@
* Determine whether we must use the 503 serial interface.
*/
fxp_read_eeprom(sc, &data, 6, 1);
- if (sc->revision == FXP_REV_82557 && (data & FXP_PHY_DEVICE_MASK) != 0
+ if ((sc->revision == 0 || sc->revision == FXP_REV_82557) && (data & FXP_PHY_DEVICE_MASK) != 0
&& (data & FXP_PHY_SERIAL_ONLY))
sc->flags |= FXP_FLAG_SERIAL_MEDIA;
Hope this gets fixed properly. If you want diagnostics data, tell me.
-Andre
More information about the cvs-all
mailing list