** ** ** VIA Rhine Family Fast Ethernet Adapter ** ** FreeBSD driver ** ** v3.24 Jan. 2005 ** ** Introduction: ============= The Fast Ethernet 10/100M FreeBSD driver is enclosed. This document shows you how to setup the driver. The driver supports FreeBSD version 3.x/4.x/5.x. Contents of the Subdirectory: ============================= freebsd.txt This file. freebsd.tgz Compressed file including the following file list. if_fet.c The FreeBSD driver source code. if_fet.h The FreeBSD driver header file. Makefile The FreeBSD driver Makefile. Building and Installation: ========================== NOTE: The driver can be installed as a dynamic loadable kernel module or compiled into the kernel. You must have kernel sources installed in order to compile the driver module. NOTE: FreeBSD 3.x and 5.x-AMD64 version do not support dynamic loadable kernel module for now. Please compile the driver into the kernel. 1) Put the driver disc in Drive A. Under the prompt, type: "mount_msdos /dev/fd0 /mnt" => (3.x/4.x) or "mount_msdosfs /dev/fd0 /mnt" => (5.x) Then move the driver file to the directory of your choice. For example, "cp /mnt/freebsd.tgz /tmp". Untar/unzip the archive. "tar xvfz freebsd.tgz" 2) If you want to install the driver as a dynamic loadable kernel module, perform the following steps: 2.1) In order not to use the old FreeBSD built-in driver, perform below steps to build the kernel for not using the built-in driver: (a) "cd /usr/src/sys/i386/conf" (b) "cp GENERIC SERVER" (c) "ee SERVER" (d) find the line "device vr" and mask it as "#device vr" then save the file. (e) "config SERVER" (f) "cd /usr/src/sys/compile/SERVER" => (4.x) or "cd /usr/src/sys/i386/compile/SERVER" => (5.x) (g) "make depend all install" 2.2) After the kernel build completes, return to the driver file directory in step 1 and type the following commands to build the driver module: (a) "cd src" (b) "make" (c) "make install" 2.3) Edit "/boot/loader.conf" file to add a line: if_fet_load="YES" 2.4) Perform step 3.6 if you want to configure network-related files in /etc. 2.5) Perform steps 3.7, 3.8 to reboot and confirm if the driver is working. 3) If you want to compile the driver into the kernel, perform the following steps: 3.1) Get to the driver file directory in step 1 and type the following commands: (a) "cd src" (b) "cp if_fet.* /usr/src/sys/pci" (c) "cd /usr/src/sys/conf" (d) "ee files" 3.2) Under editing file 'files' (a) In FREEBSD 3.x , please add one line as below: "pci/if_fet.c optional fet device-driver" and mark this line as below: "#pci/if_vr.c optional vr device-driver" (b) In FREEBSD 4.x/5.x , please add one line as below: "pci/if_fet.c optional fet" and mark this line as below: "#pci/if_vr.c optional vr" Then, save the file. It's important to mark if_vr.c, or you will use the old driver. 3.3) Type the following commands: (a) "cd /usr/src/sys/i386/conf" => (i386) or "cd /usr/src/sys/amd64/conf" => (amd64) (b) "cp GENERIC SERVER" (c) "ee SERVER" 3.4) Under editing file 'SERVER', finding the division of NIC setting, and modify as below: (a) In FREEBSD 3.x: Insert a line "device fet0" and mask "device vr0" as "#device vr0". (b) In FREEBSD 4.x/5.x: Insert a line "device fet" and mask "device vr" as "#device vr". Then, save the file. It's important to mask device vr0/vr, or you will use the old driver. 3.5) Now, it's ready to recompile kernel; type the following commands: (a) "cd /usr/src/sys/i386/conf" => (i386) or "cd /usr/src/sys/amd64/conf" => (amd64) (b) "config SERVER" (c) "cd /usr/src/sys/compile/SERVER" => (3.x/4.x) or "cd /usr/src/sys/i386/compile/SERVER" => (5.x i386) or "cd /usr/src/sys/amd64/compile/SERVER" => (5.x amd64) (d) "make depend all install" 3.6) Before rebooting, make sure the network-related files under /etc are well-configured. The files are listed below: (a) /etc/hosts (b) /etc/resolv.conf (c) /etc/host.conf (d) /etc/rc.conf 3.7) Now, get ready to reboot, type "sync;sync;sync", and "shutdown -r now". 3.8) Under the newly compiled kernel, type "ifconfig -a", and you can see a new device fet0 (not vr0). Speed and Duplex Mode Setting: ============================== You can use ifconfig command to force speed and duplex mode of NIC, where # below is network interface number. We only support this function in FreeBSD 4.x/5.x now. (eg: Use "ifconfig fet0 media 100baseTX" command to force NIC to 100Mbps half-duplex mode) 1) Auto Mode (Autonegotiation) ifconfig fet# media auto 2) 100Mbps full-duplex mode ifconfig fet# media 100baseTX mediaopt full-duplex 3) 100Mbps half-duplex mode ifconfig fet# media 100baseTX 4) 10Mbps full-duplex mode ifconfig fet# media 10baseT/UTP mediaopt full-duplex 5) 10Mbps half-duplex mode ifconfig fet# media 10baseT/UTP Driver Configuration Options (Experts Only): ============================================ You can set some driver options by modifying the pre-defined constants in header file if_fet.h. QPACKET_DEF: QPACKET_DEF is used for controlling the enable/disable the transmit status write back queue. 0: Disable 1: Enable (Default) VAL_PKT_LEN: VAL_PKT_LEN is used to drop 802.3 frame with invalid length. 0: Disable (Default) 1: Enable FLOW_CTRL: FLOW_CTRL is used for setting the flow control ability of NIC. 1: hardware deafult. Use Hardware default value in ANAR. 2: disable PAUSE in ANAR (Default) 3: enable PAUSE in ANAR HWCSUM_OFFLOAD: HWCSUM_OFFLOAD is used for enabling rx/tx checksum offload ability of NIC. This option is supported after FreeBSD 4.0 and only for VT6105M. 0: Disable 1: Enable (Default) VLAN_TAGGING: VLAN_TAGGING is used for enabling 802.1Q VID tagging ability of NIC. This option is supported after FreeBSD 5.0 and only for VT6105M. 0: Disable VID setting (Default) 1: Enable VID setting