This directory contains drivers for PCI network adapters based on the Alteon Networks Tigon 1 and Tigon 2 gigabit ethernet chipset. The following Tigon-based boards have been tested: - Alteon AceNIC (Tigon 1 and Tigon 2) - 3Com 3c985-SX (Tigon 1 and Tigon 2) - Netgear GA620 (Tigon 2) The following boards may also work but have not been tested since I don't actually have any of them to try: - NEC Gigabit Ethernet - DEC/Compaq EtherWORKS 1000SX - SGI PCI Gigabit Ethernet - IBM Gigabit Ethernet SX adapter - First generation Sun PCI gigabit ethernet adapters Most new adapters should be using the Tigon 2 chip. The Tigon 1 is supported but isn't as fast as the Tigon 2. Many older 3Com boards use the Tigon 1. The drivers available from this location are for FreeBSD 2.2.5, 2.2.6, 2.2.7, 2.2.8, 3.0 and 3.1. Driver support has already been merged into the FreeBSD-STABLE and FreeBSD-CURRENT development branches, and will be included with all releases starting with FreeBSD 3.2-RELEASE, due to become available by mid-May '99. Translation: if you are using a FreeBSD release prior to 3.2 and want to add driver support for the Tigon, get the driver from here. For 3.2 and later, the driver is already in the system and you don't need anything from this site. Note: for users of FreeBSD 3.1 or later, this driver will also work with FreeBSD/alpha. To add the driver to an existing system, do the following: - Download the correct version of tigon.tar.gz for your version of FreeBSD. For FreeBSD 2.2.x, download 2.2/tigon.tar.gz. For 3.x download 3.0/tigon.tar.gz. Unpack the files into a temporary directory. - Copy the supplied if_media.h file to /sys/net and /usr/include/net. (Back up the original if_media.h if you wish.) The new if_media.h file is necessary because it includes the 1000baseSX media type which the driver needs, but which is not present in the older version. If you're running 3.1-STABLE or 4.0-CURRENT then you probably don't need to do this: if_media.h has already been updated. - OPTIONAL: recompile ifconfig to use the new if_media.h file so that it recognizes the 1000baseSX media type. The driver defaults to autoselection and should work without having to manually specify the 1000baseSX media mode, so you can probably skip this step if you're in a rush. If you're running 3.1-STABLE or 4.0-CURRENT then you probably don't need to do this: if_media.h has already been updated. - Copy ti.4 to /usr/share/man/man4/man4.i386/ti.4. - Copy everything else (if_ti.c, if_tireg.h, ti_fw.h and ti_fw2.h) to /sys/pci. - Edit /sys/conf/files and add a line that says: pci/if_ti.c optional ti device-driver - Edit your kernel config file (e.g. /sys/i386/conf/GENERIC) and add a line that says: device ti0 - Compile a new kernel and boot it. Interfaces should be detected as ti0, ti1, etc... You should edit /etc/rc.conf to have the interface brought up automatically when the system boots. Frequently asked questions: Q: "What kind of hardware should I use with these gigabit cards?" A: The more CPU you have, the better. My test machines use Pentium II 450Mhz processors (uniprocessor, not SMP) with 128MB of RAM and Intel 82443BX PCI chipsets. This hardware does have enough bus bandwidth for gigabit speeds. Generally, anything less than a 300Mhz CPU will probably yield less than optimal performance. Note that the driver can consume a lot of memory; you should have at least 32MB of RAM (hopefully more). If you don't use jumbo frames, you can probably make due with 16MB. Q: "What kind of speed should I expect from this driver?" A: With the test hardware mentioned above, I can get about 502Mbps with TCP using a 64K window size and the normal 1500 byte MTU. Using jumbo frames, I can get 595Mbps. UDP transmit speed is up around 620Mbps with normal MTU and 820Mbps with jumbo frames, but UDP receive speed is not as good due to inefficiencies in FreeBSD's networking stack. (The driver can actually receive frames at 600 or 800Mbps, but the network code drops them because it isn't fast enough to process them and hand them off to the application.) Q: "How do I use jumbo frames?" A: Use the ifconfig command to specify an MTU larger than 1500 bytes, e.g.: ifconfig ti0 mtu 9000 NOTE: If the interface is already up and you change the MTU, you should probably do 'ifconfig ti0 down; ifconfig ti0 up' afterwards, otherwise TCP connections may continue to use the old MTU. This is because the MTU is sometimes cached and may not be updated when you change the interface's MTU setting with ifconfig. Q: "How much do these adapters cost?" A: The Netgear GA620 is the cheapest one, and has been known to sell for around $320US. The 3Com 3c985 sells for around $500US. The SGI and IBM boards are the most expensive and sell for around $2100, however part of this cost includes device drivers for IRIX/AIX. SGI may also have a gigabit card available now for their Visual PC systems that run Windows NT which might cost less than the boards intended for their MIPS-based servers and workstations. Q: "Do these cards work over cat5 cable?" A: No. They all use multimode fiber and have SC connectors. Avoid looking directly into the optics when the board is powered up: lasers and eyeballs don't mix. Q: "When I got my gigabit adapter for my PC, the manual didn't say anything about jumbo frames. Do they really work with my card?" A: Yes. All Tigon 1 and Tigon 2 chips support jumbo frames, although not every vendor's driver supports them. The 9K frame size is not yet officially standardized and at this point only it only works with other Alteon NICs and switches (it may also work with devices from other vendors which support large frames). Q: "I have a Windows NT host with a Tigon-based board and, I can talk to it just fine with my FreeBSD system using the normal MTU, but when I change the MTU to 9000, it doesn't work. Why?" A: Again, not all vendors supply drivers with their boards which support jumbo frames. Check your owner's manual for your card. If it mentions jumbo frames and tells you how to enable them, do so. If it doesn't say anything about them, then I'm afraid your out of luck. Q: "Does the driver support hardware checksum offloading?" A: Not yet. I'm working on it. Part of the problem with this is that it isn't enough for the driver to support checksum offloading: the TCP/IP code has to be modified to support it as well. Q: "Does the driver support hardware multicast filtering?" A: Yes. The Tigon 1 has only a 32-bit hash table however, whereas the Tigon 2 has a 128-bit table. Q: "What are these ti_fw.h and ti_fw2.h files for?" A: That's the firmware for the Tigon 1 and Tigon 2 chips. The Tigon has an embedded R4000 CPU (the Tigon 2 has two R4000 CPUs) and needs to have firmware loaded before it will work. Q: "Where can I find out more about the Tigon chip?" A: http://www.alteon.com/support/openkits Q: "Why doesn't the controller chip on my 3Com/Netgear/etc... card actually say 'Alteon' or 'Tigon' on it?" A: In some cases, the OEM agreements between Alteon and the other vendors are supposed to be a secret. Shhhh. Q: "What if this thing don't work?" A: 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_ti.c you're using - The type of system you have (CPU type and speed) - The exact type of NIC you have - 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.