** ** ** VIA Networking Velocity Family Gigabit Ethernet Adapter ** ** FreeBSD driver ** ** v1.20 Dec. 2005 ** ** Introduction: ============= The Gigabit Ethernet 10/100M/1G 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 include the following file list if_getb.c The FreeBSD driver main source file if_getb.h The FreeBSD driver main header file if_getb_cfg.h Driver configuration header file if_getb_dbg.h Debug macro definition velocity_hw.c shared function for accessing and configurating Velocity series MAC velocity_hw.h The definiation of register access function velocity_desc.h TD/RD ring structures definition velocity_mac.h MAC register/macro definition velocity_mii.h MII register/macro definition osdep.h OS depended function and macro defined Makefile Makefile for driver installation 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) After FreeBSD 5.3, you need to perform below steps in order not to use the FreeBSD built-in driver, skip this step in FreeBSD version before 5.3: (a) "cd /usr/src/sys/i386/conf" (b) "cp GENERIC SERVER" (c) "ee SERVER" (d) find the line "device vge" and mask it as "#device vge" then save the file. (e) "config SERVER" (f) "cd /usr/src/sys/i386/compile/SERVER" (g) "make depend all install" 2.2) If you performed step 2.1, wait for the kernel build to complete. Then get to the driver file directory in step 1 and type the following commands to build the driver module: (a) "cd getb" (b) "make" (c) "make install" 2.3) Edit "/boot/loader.conf" file to add a line: if_getb_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) "cp -R getb /usr/src/sys/dev" => (3.x) or "cd getb;make install_getb" => (4.x/5.x) (b) "cd /usr/src/sys/conf" (c) "ee files" 3.2) Under editing file 'files' Please add one line as below: "dev/getb/if_getb.c optional getb device-driver" => (3.x) or "dev/getb/velocity_hw.c optional getb device-driver" "dev/getb/if_getb.c optional getb" => (4.x/5.x) "dev/getb/velocity_hw.c optional getb" If the FreeBSD version is 5.3 or later, also mask the line as below: "#dev/vge/if_vge.c optional vge" 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 insert one line as below: "device getb0" => (3.x) or "device getb" => (4.x/5.x) If the FreeBSD version is 5.3 or later, also mask the line as below: "#device vge" 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 getb0. 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 getb0 media 100baseTX" command to force NIC to 100Mbps half-duplex mode) 1) Auto Mode (Autonegotiation) ifconfig getb# media auto 2) 100Mbps full-duplex mode ifconfig getb# media 100baseTX mediaopt full-duplex 3) 100Mbps half-duplex mode ifconfig getb# media 100baseTX 4) 10Mbps full-duplex mode ifconfig getb# media 10baseT/UTP mediaopt full-duplex 5) 10Mbps half-duplex mode ifconfig getb# media 10baseT/UTP Driver Configuration Options (Experts Only): ============================================ You can set some driver options by modifying the pre-defined constants in header file if_getb_cfg.h. FLOW_CNTL_DEF: FLOW_CNTL_DEF is used for setting the flow control ability of NIC. 1: hardware deafult - AUTO (default). Use Hardware default value in ANAR. 2: enable TX flow control. 3: enable RX flow control. 4: enable RX/TX flow control. 5: disable VAL_PKTLEN_DEF: VAL_PKTLEN_DEF is used to drop 802.3 frame with invalid length. 0: Disable (Default) 1: Enable HWCSUM_OFFLOAD: HWCSUM_OFFLOAD is used for enabling rx/tx checksum offload ability of NIC. This option is supported after FreeBSD 4.0. 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. 0: Disable VID setting (Default) 1: Enable VID setting