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>