> The 3C90x cards use the vx0 device driver. Just look in the LINT kernel
> config. I use a 3Com 3C900 for my setup and it works like a dream!
I tried this and failed. Perhaps someone can help. The facts:
The computer has an ASUS SP3G motherboeard and an AMD 5x86 CPU. I have a
NE2000 clone and the 3C900, both connected to a 10BaseT hub. Everything
runs fine when the 3C900 is just installed in the machine, but not used.
The other NIC works fine as the primary ethernet interface with IP and
Appletalk. The hub indicates the link to both cards as up after the
3C900 has been configured by FreeBSD. (The NE2000 link is up since power
on.)
The 3C900 is configured for "normal" driver optimization, full duplex
disabled, boot PROM disabled, media type 10BaseT, I/O port 0xe400,
interrupt level 0 with the configuration and diagnostic program. All
tests of the program run fine, but to my confusion the hub indicates the
link down when running the program.
I configured my NICs in the kernel like this:
device vx0
device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr
The kernel recognizes the 3C900 as
vx0 <3COM 3C900 Etherlink XL PCI> rev 0 int a irq ?? on pci0:4
utp/aui/bnc[*utp*] address 00:60:97:52:7e:f4
int line register not set by bios
Does the message "int line register not set by bios" indicate a problem?
The interfaces are configured like this:
ifconfig ed0 inet 10.0.0.2 netmask 0xffffff00
ifconfig vx0 inet 10.0.0.5 netmask 0xffffff00
in start_if.ed0 and start_if.vx0, respectively. These are invoked
through the entries in rc.conf:
network_interfaces="lo0 ed0 vx0"
At this point the first error occurs:
ifconfig: ioctl (SIOAIFADDR): File exists
Several processes hang on startup and have to be interrupted by Ctrl-C
(mountd, rpc.statd, sendmail), nfsd complains "can't register with udp
portmap", other NFS errors occur (of course).
The resulting configuration of the interfaces (as shown with ifconfig
-a) looks correct, though:
vx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.5 netmask 0xffffff00 broadcast 10.0.0.255
ether 00:60:97:52:7e:f4
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.2 netmask 0xffffff00 broadcast 10.0.0.255
atalk 65280.46 range 0-65534 phase 2 broadcast 0.255
ether 00:80:ad:18:8d:9e
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
atalk 0.0 range 0-0 phase 2
Routing is thus (Appletalk stuff omitted):
Internet:
Destination Gateway Flags Refs Use Netif Expire
10/24 link#2 UC 0 0
10.0.0.2 0:80:ad:18:8d:9e UHLW 1 23 lo0
10.0.0.5 link#2 UHRLW 1 23 ed0 12
127.0.0.1 127.0.0.1 UH 0 6 lo0
From the same machine I can ping the first interface (10.0.0.2), but TCP
connections time out. TCP connections to 10.0.0.2 from other machines
work. The locally running DNS server can not be reached from the same
machine, but from an other one. When I try to ping the 3C900 (10.0.0.5),
I get "Host is down".
When I configure only the 3C900 as the primary interface with 10.0.0.2
and don't configure the NE2000, everything seems to be fine locally, but
ping times from or to another machine are extremely long (~ 400 ms).
What is going on here? Is there a problem with the 3C900? Am I doing
something wrong?
(Sorry for the long posting, but I tried to include all possibly
relevant information. If you need anything else, I'll be happy to
provide it.)
--
Juergen Nickelsen