home *** CD-ROM | disk | FTP | other *** search
- **
- **
- ** VIA Rhine Family Fast Ethernet Adapter
- **
- ** Linux Driver
- **
- ** v4.24 Jan. 2003
- **
- **
-
-
- Introduction:
- =============
-
- The instructions listed below are for linux driver installation. You must
- compile the source code to generate rhinefet.o and use insmod command to
- insert rhinefet.o as module.
-
-
- Contents of the Subdirectory:
- =============================
-
- linux.txt This file.
- rhine_main.c The linux core driver source code file
- rhine_proc.c The /proc support driver source file
- rhine_vmns.c The vmns driver support source file
- rhine_wol.c The Wake on Lan support source file
- vmns_drv.c The vmns driver support source file
- rhine_wol.h The Wake on Lan support header file
- rhine_vmns.h The vmns driver support header file
- rhine_proc.h The /proc support driver header file
- rhine_cfg.h The driver constants header file
- rhine.h The linux core driver header file
- kcompat.h The linux core driver header file
- Makefile Makefile for generating driver object file
-
- Kernel Supported
- ================
- This driver support linux kernel version 2.2.x and 2.4.x now.
-
- Installation
- ============
- Please enter the following commands at the UNIX prompt. Remember, UNIX is
- case sensitive.
-
- 1) Create a temporary directory:
- mkdir /temp
-
- 2) Change to the temporary directory:
- cd /temp
-
- 2) Copy driver (rhinefet.tgz) from DOS disk, (mcopy below is one tool in
- mtools, if you didn't install mtools, you can type
- 'mount -t msdos /dev/fd0 /mnt' and use 'cp /mnt/rhinefet.tgz /temp'
- command to copy the driver to the temporary directory):
- mcopy a:rhinefet.tgz .
-
- 3) untar the archive file:
-
- tar xzvf rhinefet.tgz
- cd rhinefet
-
- 4) Compile the driver source files and it will generate rhinefet.o, and
- copy it to correct driver installation path (The installation directory
- is different in different kernel versions. In 2.4.x kernel, the path is
- /lib/modules/KERNEL_VERSION/kernel/drivers/net/, and in 2.2.x kernel,
- the path is /lib/modules/KERNEL_VERSION/net/, the KERNEL_VERSION (see
- above) means the kernel version of your Linux distribution. If you don't
- know your kernel version , please run 'uname -r' command in command
- line. The kernel version will look like '2.2.16', '2.4.2-2smp' etc.) :
- make install
-
- 5) Check configuration file (/etc/modules.conf or /etc/conf.modules,it
- depend on your Linux distribution) for loading kernel modules. Make sure
- there is the following content in the configuration file, where # is
- interface number (eg: alias eth0 rhinefet):
- alias eth# rhinefet
-
- 6) Reboot now:
- shutdown -r now
-
- 7) Install your driver module (If the driver module is in the wrong place,
- an error message will appear, and say that can't find the driver
- module):
- insmod rhinefet
-
- 8) Use ifconfig command to assign the IP address, where # is network
- interface number:
- ifconfig eth# <IP>
-
- 9) Check the interface works:
- ping <remote_host_IP>
-
-
- Uninstallation
- ==============
- Please enter the following commands to uninstall your driver:
- make uninstall
-
- Note
- ====
- 1) Make sure the link file /usr/src/linux (or /usr/src/linux-2.4) is linked
- to correctly kernel sources directory (eg: if you run 'uname -r', it
- appears "2.4.2-2", then the link file must be linked to
- /usr/src/linux-2.4.2 directory, or you will fail in compiling),
- and make sure there are kernel header files in /usr/src/linux/include
- directory (or /usr/src/linux-2.4/include), we need kernel header files
- in compling.
-
- 2) If you can't install driver in SUSE Linux using insmod or modprobe
- commands, and error messages appear (see below), please run 'uname -r'
- in command line. And make sure the result of 'uname -r' (eg: 2.4.2-4GB)
- is the same with the definition of UTS_RELEASE in
- /usr/src/linux/include/linux/version.h. If not, please modify the
- definition of UTS_RELEASE in /usr/src/linux/include/linux/version.h.
-
- rhinefet.o: kernel-module version mismatch
- rhinefet.o was compiled for kernel version 2.4.2
- while this kernel is version 2.4.2-4GB.
-
- 3) Make sure that your kernel is built with network, fast_ethernet
- and module support. Otherwise, you have to rebuild your kernel (see
- below).
- 1. Go to /usr/src/linux (or /usr/src/linux-2.4) directory:
- cd /usr/src/linux
- 2: Run 'make menuconfig' or 'make config' in text mode, or 'make
- xconfig' in graphic mode.
- 3: Mark the options list above.
- 4: Exit and rebuild your kernel:
- make dep;make clean;make bzImage
- The file 'bzImage' will be at /usr/src/linux/arch/i386/boot/bzImage
- 5: Modify /etc/lilo.conf.(this file specifies where kernel image is)
- 6: Run 'lilo'
- 7: Reboot, and select the correct kernel image to boot your system.
-
- 4) You can use the utility (like netconfig, linuxconf) in your Linux
- distribution to set your network parameters(like ip,gateway). These
- parameters will be used at boot time. The following is the demonstration
- to show how to use linuxconf (it's a utitlity in RedHat Linux 6.x) set
- the network paramters.
- 1. Run linuxconf:
- linuxconf
- 2. Enter setting in the Config/Networking/Client tasks/Basic host information/
- and fill out the following information. Where 'xxx' is the IP address
- what you have.
- IP address: xxx.xxx.xxx.xxx
- Netmask: 255.255.255.xxx
- Net device: eth0
- Kernel module: rhinefet
-
- 5) If you can't install driver at boot time.
- If you can install your driver using insmod command, but you can't
- install it at boot time, please check whether the driver is in the
- correct directory (eg: /lib/modules/2.2.XXX/net/), and check the
- /lib/modules/2.2.XXX/modules.dep file, it must include the following
- line:
- /lib/modules/2.2.XXX/net/rhinefet.o:
-
- You can insert this line using depmod command or insert it manually.
- Also, you must consult your Linux distribution installation guide
- and learn how to set the IP address of your network interface and
- up it at boot time.
-
- 6) If you can't compile this driver, and parse error messages appear,
- please make sure your source code text format is right. You must convert
- your source code text format from MS-DOS to UNIX, as show below (see
- Solution 1 and 2).
- Make sure the files in floppy disk are not rhinefet.tgz file. They must
- be the source code text files (5 files), rhinefet.tgz is not a text file
- , so it can't be converted.
-
- Solution1:
- If you use mcopy command to copy your driver from floppy disk to
- linux, you can type:
- mcopy -t a:\* .
- then it will convert the format for you.
-
- Solution2:
- If you use mount command to mount floppy disk to linux, you can
- type:
- mount -t vfat -o conv=t /dev/fd0 /mnt/floppy
- then, when you copy files from /mnt/floppy, these files format will
- be right.
-
- Module Parameter:
- =================
- The following parameters can be set when we install the driver module. You can add this parameters when
- you execute 'insmod' or 'modprobe' command to install the driver (as below).
- insmod rhinefet.o parameter=value1,value2,value3,...
- For example, if you have 3 NIC cards, and you want to set the speed_duplex paramter value of them .
- You can type the following command to set it.
- insmod rhinefet.o speed_duplex=1,2,3
- Then, the parameter value of first card will be 1 (100Mbps half duplex mode), the second card will
- be 2 (100Mbps full duplex mode), and the third card will be 3 (10Mbps half duplex mode).
- Remember, our driver only support 8 cards parameter setting.
-
- 1) speed_duplex
- speed_duplex[] is used for setting the speed and duplex mode of NIC.
- Value:
- 0: indicate autonegotiation for both speed and duplex mode (Default).
- 1: indicate 100Mbps half duplex mode
- 2: indicate 100Mbps full duplex mode
- 3: indicate 10Mbps half duplex mode
- 4: indicate 10Mbps full duplex mode
-
- 2) enable_tagging
- enable_tagging[] is used for enabling VLAN ID setting and enabling
- priority transmit.
- Value:
- 0: disable VID setting and priority transmit (Default).
- 1: enable VID setting and priority transmit.
-
- 3) VID_setting
- VID_setting[] is used for setting the VLAN ID of NIC.
- Value:
- 0: default VID.
- 1-4094: other VIDs.
-
- 4) csum_offload
- csum_offload[] is used for setting the checksum offload ability of NIC.
- Value:
- 0: disable csum_offload (Default).
- 1: enable checksum offload. (We only support RX checksum offload now)
-
- 5) txcsum_offload (For management adapter only)
- csum_offload[] is used for setting the checksum offload ability of NIC.
- Value:
- 0: disable (default)
- 1: enable
-
-
- 6) flow_control
- flow_control[] is used for setting the flow control ability of NIC.
- Value:
- 1: hardware deafult (Default). Use Hardware default value in ANAR.
- 2: disable PAUSE in ANAR.
- 3: enable PAUSE in ANAR.
-
-
- 7) IP_byte_align
- IP_byte_align[] is used for IP header DWORD byte aligned (For IPVS environment).
- (In some enviroment, the IP header should be DWORD byte aligned,or the packet
- will be droped when we receive it. (eg: IPVS))
- Value:
- 0: indicate the IP header won't be DWORD byte aligned (Default).
- 1: indicate the IP header will be DWORD byte aligned.
-
-
- 8) tx_thresh
- tx_thresh[] is used for controlling the transmit fifo threshold.
- Value:
- 0: indicate the txfifo threshold is 128 bytes (Default).
- 1: indicate the txfifo threshold is 256 bytes.
- 2: indicate the txfifo threshold is 512 bytes.
- 3: indicate the txfifo threshold is 1024 bytes.
- 4: indicate that we use store and forward
-
- 9) rx_thresh
- rx_thresh[] is used for controlling the receive fifo threshold.
- Value:
- 0: indicate the rxfifo threshold is 64 bytes (Default).
- 1: indicate the rxfifo threshold is 32 bytes.
- 2: indicate the rxfifo threshold is 128 bytes.
- 3: indicate the rxfifo threshold is 256 bytes.
- 4: indicate the rxfifo threshold is 512 bytes.
- 5: indicate the rxfifo threshold is 768 bytes.
- 6: indicate the rxfifo threshold is 1024 bytes.
- 7: indicate that we use store and forward
-
- 10) DMA_length
- DMA_length[] is used for controlling the DMA length.
- Value:
- 0: 8 DWORDs
- 1: 16 DWORDs (Deafult)
- 2: 32 DWORDs
- 3: 64 DWORDs
- 4: 128 DWORDs
- 5: 256 DWORDs
- 6: SF(flush till emply)
- 7: SF(flush till emply)
-
- 11) ValPktLen
- ValPktLen[] is used for controlling driver to receive or drop
- the frame with invalid layer 2 length.
- Value:
- 0: Receive frame with invalid layer 2 length.
- 1: Drop frame with invalid layer 2 length.
-
- 12) wol_opts
- wol_opts[] is used for controlling wake on lan behavior of NIC.
- 0: Wake up if recevied a magic packet. (Default)
- 1: Wake up if link status is on/off.
- 2: Wake up if recevied an arp packet.
- 4: Wake up if recevied any unicast packet.
- Those value can be sumed up to support more than one option.
-