Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Aug 1998 12:16:02 -0700 (PDT)
From:      Bill Paul <wpaul>
To:        dwhite@resnet.uoregon.edu, wpaul, freebsd-bugs
Subject:   Re: kern/6197
Message-ID:  <199808161916.MAA08937@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Synopsis: 3com905 Seriously broken

State-Changed-From-To: open-closed
State-Changed-By: wpaul
State-Changed-When: Sun Aug 16 11:59:08 PDT 1998
State-Changed-Why: 

The 3c905B NIC is now supported by the XL driver (if_xl) which has
just been committed to FreeBSD-current. It should be merged to the
RELENG_2_2 branch in a week or so, once I'm sure there are no serious
problems still pending.

The vortex driver will not work with the 3c905B. Ever. Period. The
Etherlink III series of 3Com chips use a programmed I/O mechanism for
transfering packets to and from the NIC's memory. This involves reading
or writing the packet data 32-bits at a time to a FIFO register.
The early Etherlink XL NICs (3c900, 3c905) also support this mode
for backwards compatibility, but also support a bus-master DMA
mechanism that uses TX and RX descriptors much like the Intel 82557/8,
LANCE and ThunderLAN NICs. The bus-master mechanism is much faster and
more efficent for 100Mbps adapters like the 3c905-TX. 3Com notes in
their literature that the PIO mechansim would be dropped in future
silicon reivsions, and starting with the 3c905B, the PIO support has
been dropped.

The vortex driver has enough brains to be able to detect, configure
and initialize a 3c905B adapter, but it can't actually do any transmit
or receive operations. The reason the system hangs when you try to
use the vortex driver is that the chip starts generting interrupts
when the first packet is received and never stops because the driver
doesn't handle them correctly. The chip keeps interrupting and the
driver keeps mishandling the interrupts, which gets the system caught
in a very tight loop. Also, the driver allocates an mbuf each time
through the loop, which it does not free. Eventually, this triggers
the message about running out of mbufs.

The XL driver properly supports the bus-master DMA mechanism available
on all the 3c90x adapters including the 3c905B. The XL driver is now
used for the 3c900 and 3c905 instead of the vortex driver; for the
3c905, the vortex driver did not properly support all the modes and
autonegotiation capabilities of the 3c905-TX adapter. It also supports
the hardware multicast filter on the 3c905B.

You can add the XL driver to an existing FreeBSD 3.0 or 2.2.x system
by downloading the driver from http://www.freebsd.org/~wpaul/3Com.
There are instructions there for compiling a new kernel image with
the driver included.

-Bill

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808161916.MAA08937>