This directory contains drivers for network adapters based on the Lite-On 82c168/82c169 PNIC fast ethernet controller chips, including the following: - LinkSys LNE100TX - NetGear FA310TX revision D1 - Matrox Networks FastNIC 10/100 Older revisions of the NetGear cards had DEC 'tulip' chips. This driver is still undergoing testing and has not yet been integrated into the FreeBSD source tree, however it will be eventually (probably after FreeBSD 3.0 is released). So far I have only perform tests with the LinkSys LNE100TX adapter, however I have had reports that the NetGear and Matrox cards work as well. I now believe the driver to be relatively stable; in the past week I've been wrestling with some unusual loop conditions in the interrupt handler but I think I've finally squashed them all. NOTE: In some cases, the controller chip on an adapter may not actually bear the 82c168 or 82c169 part number. The LinkSys contollers have the LinkSys brand on the chip but do have the 82c169 on it, however the NetGear adapter may not. You may still recognize the chip if it says '169' or '169B' on it anywhere. Even though the chip may have the NetGear logo on it and not explcitly say 82c169, it is still a PNIC. NOTE2: Although the PNIC has a built-in transceiver, I do not have a card which uses it for testing. Therefore, the driver only supports cards with an external PHY attached to the PNIC's MII bus. I expect to add support for the internal transceiver once I have the appropriate hardware for testing. I have been told that older LinkSys boards have the 82c168 in this configuration, however they are no longer sold (all new LinkSys cards have the 82c169 and a Myson 100BaseTX PHY chip). If somebody has one of these older cards and would care to donate it (or loan it out for a while), please let me know. Here are instructions on how to add the PNIC driver to an existing FreeBSD system: - Download the version of if_pn.c and if_pnreg.h that goes with your version of FreeBSD. The 3.0 directory contains code for FreeBSD 3.0. The 2.2 directory is for FreeBSD 2.2.5, 2.2.6, 2.2.7 and 2.2.8. - Make sure you have the kernel source unpacked under /usr/src. - Copy if_pn.c and if_pnreg.h to /sys/pci. - Edit /sys/conf/files and add a line that says: pci/if_pn.c optional pn device-driver - Edit your kernel config file (e.g. /sys/i386/conf/GENERIC) and add a line that says: device pn0 - config and compile a new kernel - copy the kernel to the root directory, then reboot. Interfaces should be detected as pn0, pn1, etc... You should edit /etc/rc.conf to have the interface brought up automatically when the system boots. If you experience problems with the driver, please send mail to wpaul@skynet.ctr.columbia.edu with the following information: - The version of FreeBSD you're using - The rcsid string from the version of if_pn.c you're using - The type of system you have (CPU type and speed) - The exact type of NIC you have - Whether you have an add-in PCI card or if the NIC is built into your system somehow (integrated on motherboard or docking station) - A copy of the dmesg output for your system showing the messages where your card is probed - A complete description of the problem, with error messages if any. - Optionally, boot your system with the -v flag to obtain verbose boot messages and include all the messages related to the pn device. The copies of the code here may be updated to add fixes. Notices of new versions will be posted to hackers@freebsd.org. Questions which may be frequently asked: Q: "Who actually manufactures the PNIC chip?" A: The company is called Lite-On (http://www.ltnlcc.com.tw). Lite-On sells the chips to board vendors such as LinkSys, D-Link, Matrox etc... and apparently labels the chips differently for each vendor, which can make them tough to spot. Q: "What kind of performance should I expect from the PNIC chip?" A: In my experience, the PNIC is not the fastest of the fast, however you should be able to achieve 10MB/sec or close to it at 100Mbps, full-duplex mode. At 10Mbps, it can easily saturate the link. Note than on one of my test systems, a Dell PowerEdge 2300/400 (dual PII 400Mhz), there is a difference in performance between running FreeBSD 3.0/SMP and FreeBSD 3.0/UP. With a multiprocessor kernel, transmit speed seems to max out at around 8.5MB/sec, but with a uniprocessor kernel on the same system, I just about hit 10MB/sec. I'm not sure why this is, though I suspect it may have to do with more complex interrupt handling in the SMP case. Q: "Why are so many vendors using the PNIC chip these days?" A: The PNIC is basically a clone of the DEC 21140 'tulip' chip. There were several vendors using the tulip, however DEC's networking division was sold recently to Intel, and Intel has decided to discontinue production of the DEC fast ethernet PCI chips. (This is probably because Intel makes its own fast ethernet chips and doesn't want to compete with itself.) As a result, vendors previously using the DEC chips were forced to look for alternative controllers, and some of them have settled on the PNIC since it has a very similar programming interface as the 2114x chips. Q: "Are there any serious problems with the PNIC?" A: I've been told that the built-in NWAY support on the 82c168 was very broken and required serious software workarounds to make it function correctly, if at all.