**
**
**  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

