2003-06-19 20:02:06

by Jurgen Kramer

[permalink] [raw]
Subject: Which driver for the 3C940 / 3C2000?

Hi,

I am a bit confused about which driver a need for my onboard (Asus
P4C800 mobo) 3Com gigabit Ethernet controller. It should be a 3C940 but
sometimes it's called 3C2000. I found a driver at the asus site which
compiles and works with some kernel versions. Is there a proper (open
source) kernel driver for this chip? It seems that the tg3 driver
support some type of 3C940 but not mine.

lspci -n gives:

02:05.0 Class 0200: 10b7:1700 (rev 12)

This chip is also currently not defined in pci_ids.h (2.4 and 2.5)


Thanks,

Jurgen


2003-06-22 04:51:51

by Karim Yaghmour

[permalink] [raw]
Subject: Re: Which driver for the 3C940 / 3C2000?


Hello Jurgen,

Jurgen Kramer wrote:
> I am a bit confused about which driver a need for my onboard (Asus
> P4C800 mobo) 3Com gigabit Ethernet controller. It should be a 3C940 but
> sometimes it's called 3C2000. I found a driver at the asus site which
> compiles and works with some kernel versions. Is there a proper (open
> source) kernel driver for this chip? It seems that the tg3 driver
> support some type of 3C940 but not mine.
>
> lspci -n gives:
>
> 02:05.0 Class 0200: 10b7:1700 (rev 12)
>
> This chip is also currently not defined in pci_ids.h (2.4 and 2.5)

I've got a P4C800DX-2.4GH-HT and have run into similar issues. I tried
using the 3C2000 driver shipped by ASUS on their "driver" CD, but that was
a weird experience. The driver built and installed fine with the SMP
kernel shipped with RedHat9. HOWEVER ... I could browse some web sites
and not others (I'm still trying to figure out how this could be ...)
Somehow, I could point konqueror to slashdot.org, kernel.org, motorola.com,
yahoo.com, lwn.net, etc. and see the pages, but I was unable to visit intel.com,
google.com, or amazon.com. I couldn't imagine this being a driver problem, so I
tried all sorts of different things, but still had this weird behavior. Finally, I
decided to put an 8139 with the same config, and that worked right away ... !?!

During my research about the 3C2000, I discovered that the driver
shipped with the board is actually a variant of the code in
drivers/net/sk98lin, with modified printks to display 3Com text instead of
SysKonnect information:
/* 2002 12 24 JMA begin
* Change to 3Com names.
static const char SysKonnectFileId[] = "@(#) (C) SysKonnect GmbH.";
static const char SysKonnectBuildNumber[] =
"@(#)SK-BUILD: 6.01 beta 01 PL: 01";

#define BOOT_STRING "sk98lin: Network Device Driver v6.01 beta 01\n" \
"Copyright (C) 2000-2002 SysKonnect GmbH."

#define VER_STRING "6.01 beta 01"
*/

static const char SysKonnectFileId[] = "@(#) (C) 3Com Corporation.";
static const char SysKonnectBuildNumber[] =
"@(#)SK-BUILD: A10 PL: 01";

#define BOOT_STRING "3C2000: 3Com Gigabit NIC Driver Version A10\n" \
"Copyright (C) 2003 3Com Corporation.\n" \
"Copyright (C) 2003 Marvell."

#define VER_STRING "A10"

Another header has:
#define SK_PCI_ISCOMPLIANT(result, pdev) { \
result = SK_FALSE; /* default */ \
/* 3Com (0x10b7) */ \
if (pdev->vendor == 0x10b7) { \
/* Gigabit Ethernet Adapter (0x1700) */ \
if ((pdev->device == 0x1700)) { \
result = SK_TRUE; \
} \
/* SysKonnect (0x1148) */ \
} else if (pdev->vendor == 0x1148) { \
/* SK-98xx Gigabit Ethernet Server Adapter (0x4300) */ \
/* SK-98xx Gigabit Ethernet Adapter (0x4320) */ \
if ((pdev->device == 0x4300) || \
(pdev->device == 0x4320)) { \
result = SK_TRUE; \
} \
/* D-Link (0x1186) */ \
} else if (pdev->vendor == 0x1186) { \
...
And it goes on for CNET and Linksys. Apparently, all these devices rely
on the same core. However, a trivial adding of the appropriate vendor ID
and device ID to the sk98lin in 2.4.21 resulted in an ooops at load time,
so it isn't as straight forward as I would have liked it to be ...

It'd be nice that the sk98lin driver already in Linux be modified to add
support to the 3C940, albeit without the browsing weirdness ...

Karim

--
Author, Speaker, Developer, Consultant
Pushing Embedded and Real-Time Linux Systems Beyond the Limits
http://www.opersys.com || [email protected] || 514-812-4145

2003-06-22 11:36:12

by Martin Schlemmer

[permalink] [raw]
Subject: Re: Which driver for the 3C940 / 3C2000?

Hi

Karim wrote:
> Jurgen Kramer wrote:
> > I am a bit confused about which driver a need for my onboard (Asus
> > P4C800 mobo) 3Com gigabit Ethernet controller. It should be a 3C940 but
> > sometimes it's called 3C2000. I found a driver at the asus site which
> > compiles and works with some kernel versions. Is there a proper (open
> > source) kernel driver for this chip? It seems that the tg3 driver
> > support some type of 3C940 but not mine.
> >
> > lspci -n gives:
> >
> > 02:05.0 Class 0200: 10b7:1700 (rev 12)
> >
> > This chip is also currently not defined in pci_ids.h (2.4 and 2.5)
>
> I've got a P4C800DX-2.4GH-HT and have run into similar issues. I tried

I have similar setup.

> using the 3C2000 driver shipped by ASUS on their "driver" CD, but that was
> a weird experience. The driver built and installed fine with the SMP
> kernel shipped with RedHat9. HOWEVER ... I could browse some web sites
> and not others (I'm still trying to figure out how this could be ...)
> Somehow, I could point konqueror to slashdot.org, kernel.org, motorola.com,
> yahoo.com, lwn.net, etc. and see the pages, but I was unable to visit intel.com,
> google.com, or amazon.com. I couldn't imagine this being a driver problem, so I
> tried all sorts of different things, but still had this weird behavior. Finally, I
> decided to put an 8139 with the same config, and that worked right away ... !?!
>

Ditto

> During my research about the 3C2000, I discovered that the driver
> shipped with the board is actually a variant of the code in
> drivers/net/sk98lin, with modified printks to display 3Com text instead of
> SysKonnect information:
> ...

Yep, its a SysKonnect chip.

> And it goes on for CNET and Linksys. Apparently, all these devices rely
> on the same core. However, a trivial adding of the appropriate vendor ID
> and device ID to the sk98lin in 2.4.21 resulted in an ooops at load time,
> so it isn't as straight forward as I would have liked it to be ...
>

Problem is rather that the drivers in the kernel really outdated.

> It'd be nice that the sk98lin driver already in Linux be modified to add
> support to the 3C940, albeit without the browsing weirdness ...
>

You can find the latest SysKonnect driver here:

http://www.syskonnect.de/syskonnect/support/driver/htm/sk98lin.htm


It is only for 2.2 and 2.4 though.

I have 'ported' the latest version (6.10) and a previous version or two
to 2.5, but I had similar issues as you .... I could ping the boxen on
my network, but cannot ssh for instance - basically its as if it only
do icmp and rarely actually send/receive other data.

I have also mailed SysKonnect, but they told me to speak to 3COM :/

Anyhow, if somebody want my efforts in the 2.5 port to get it working,
ask. I however do not have time to struggle with it currently.


Regards,

--

Martin Schlemmer




Attachments:
signature.asc (189.00 B)
This is a digitally signed message part