home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 March / PCWorld_2004-03_cd.bin / Hardware / VIAeth / LINUX / linux.txt next >
Text File  |  2003-02-07  |  12KB  |  296 lines

  1. **
  2. **
  3. **  VIA Rhine Family Fast Ethernet Adapter
  4. **
  5. **  Linux Driver
  6. **
  7. **  v4.24  Jan. 2003
  8. **
  9. **
  10.                  
  11.          
  12. Introduction:
  13. =============
  14.  
  15.     The instructions listed below are for linux driver installation. You must
  16.     compile the source code to generate rhinefet.o and use insmod command to
  17.     insert rhinefet.o as module.
  18.  
  19.  
  20. Contents of the Subdirectory:
  21. =============================
  22.  
  23.     linux.txt               This file.
  24.     rhine_main.c            The linux core driver source code file
  25.     rhine_proc.c            The /proc support driver source file
  26.     rhine_vmns.c            The vmns driver support source file
  27.     rhine_wol.c             The Wake on Lan support source file
  28.     vmns_drv.c              The vmns driver support source file
  29.     rhine_wol.h             The Wake on Lan support header file    
  30.     rhine_vmns.h            The vmns driver support header file
  31.     rhine_proc.h            The /proc support driver header file
  32.     rhine_cfg.h             The driver constants header file
  33.     rhine.h                 The linux core driver header file
  34.     kcompat.h               The linux core driver header file
  35.     Makefile                Makefile for generating driver object file
  36.  
  37. Kernel Supported
  38. ================
  39.     This driver support linux kernel version 2.2.x and 2.4.x now.
  40.  
  41. Installation
  42. ============
  43.     Please enter the following commands at the UNIX prompt. Remember, UNIX is
  44.     case sensitive.
  45.  
  46.     1) Create a temporary directory:
  47.         mkdir /temp
  48.  
  49.     2) Change to the temporary directory:
  50.         cd /temp
  51.  
  52.     2) Copy driver (rhinefet.tgz) from DOS disk, (mcopy below is one tool in
  53.        mtools, if you didn't install mtools, you can type 
  54.        'mount -t msdos /dev/fd0 /mnt' and use 'cp /mnt/rhinefet.tgz /temp'
  55.        command to copy the driver to the temporary directory):
  56.         mcopy a:rhinefet.tgz .
  57.  
  58.     3) untar the archive file:
  59.  
  60.         tar xzvf rhinefet.tgz
  61.         cd rhinefet
  62.                          
  63.     4) Compile the driver source files and it will generate rhinefet.o, and
  64.        copy it to correct driver installation path (The installation directory
  65.        is different in different kernel versions. In 2.4.x kernel, the path is 
  66.        /lib/modules/KERNEL_VERSION/kernel/drivers/net/, and in 2.2.x kernel,
  67.        the path is /lib/modules/KERNEL_VERSION/net/, the KERNEL_VERSION (see
  68.        above) means the kernel version of your Linux distribution. If you don't
  69.        know your kernel version , please run 'uname -r' command in command 
  70.        line. The kernel version will look like '2.2.16', '2.4.2-2smp' etc.) :
  71.         make install
  72.  
  73.     5) Check configuration file (/etc/modules.conf or /etc/conf.modules,it 
  74.        depend on your Linux distribution) for loading kernel modules. Make sure
  75.        there is the following content in the configuration file, where # is 
  76.        interface number (eg: alias eth0 rhinefet):
  77.         alias eth# rhinefet
  78.  
  79.     6) Reboot now:
  80.         shutdown -r now
  81.  
  82.     7) Install your driver module (If the driver module is in the wrong place,
  83.        an error message will appear, and say that can't find the driver 
  84.        module):
  85.         insmod rhinefet
  86.  
  87.     8) Use ifconfig command to assign the IP address, where # is network 
  88.        interface number:
  89.         ifconfig eth# <IP>
  90.  
  91.     9) Check the interface works:
  92.         ping <remote_host_IP>
  93.  
  94.  
  95. Uninstallation
  96. ==============
  97.     Please enter the following commands to uninstall your driver:
  98.         make uninstall
  99.  
  100. Note 
  101. ====
  102.     1) Make sure the link file /usr/src/linux (or /usr/src/linux-2.4) is linked
  103.        to correctly kernel sources directory (eg: if you run 'uname -r', it
  104.        appears "2.4.2-2", then the link file must be linked to 
  105.        /usr/src/linux-2.4.2 directory, or you will fail in compiling),
  106.        and make sure there are kernel header files in /usr/src/linux/include
  107.        directory (or /usr/src/linux-2.4/include), we need kernel header files
  108.        in compling.
  109.  
  110.     2) If you can't install driver in SUSE Linux using insmod or modprobe
  111.        commands, and error messages appear (see below), please run 'uname -r'
  112.        in command line. And make sure the result of 'uname -r' (eg: 2.4.2-4GB)
  113.        is the same with the definition of UTS_RELEASE in 
  114.        /usr/src/linux/include/linux/version.h. If not, please modify the 
  115.        definition of UTS_RELEASE in /usr/src/linux/include/linux/version.h.
  116.  
  117.          rhinefet.o: kernel-module version mismatch
  118.              rhinefet.o was compiled for kernel version 2.4.2
  119.              while this kernel is version 2.4.2-4GB.
  120.  
  121.     3) Make sure that your kernel is built with network, fast_ethernet
  122.        and module support. Otherwise, you have to rebuild your kernel (see
  123.        below).
  124.         1. Go to /usr/src/linux (or /usr/src/linux-2.4) directory:
  125.             cd /usr/src/linux
  126.         2: Run 'make menuconfig' or 'make config' in text mode, or 'make 
  127.            xconfig' in graphic mode.
  128.         3: Mark the options list above.
  129.         4: Exit and rebuild your kernel:
  130.             make dep;make clean;make bzImage
  131.            The file 'bzImage' will be at /usr/src/linux/arch/i386/boot/bzImage
  132.         5: Modify /etc/lilo.conf.(this file specifies where kernel image is)
  133.         6: Run 'lilo'
  134.         7: Reboot, and select the correct kernel image to boot your system.
  135.  
  136.     4) You can use the utility (like netconfig, linuxconf) in your Linux 
  137.        distribution to set your network parameters(like ip,gateway). These
  138.        parameters will be used at boot time. The following is the demonstration
  139.        to show how to use linuxconf (it's a utitlity in RedHat Linux 6.x) set
  140.        the network paramters.
  141.        1. Run linuxconf:
  142.            linuxconf
  143.        2. Enter setting in the Config/Networking/Client tasks/Basic host information/
  144.           and fill out the following information. Where 'xxx' is the IP address
  145.           what you have.
  146.                     IP address:    xxx.xxx.xxx.xxx
  147.                     Netmask:       255.255.255.xxx
  148.                     Net device:    eth0
  149.                     Kernel module: rhinefet
  150.         
  151.     5) If you can't install driver at boot time.
  152.        If you can install your driver using insmod command, but you can't
  153.        install it at boot time, please check whether the driver is in the
  154.        correct directory (eg: /lib/modules/2.2.XXX/net/), and check the
  155.        /lib/modules/2.2.XXX/modules.dep file, it must include the following
  156.        line:
  157.             /lib/modules/2.2.XXX/net/rhinefet.o:
  158.  
  159.        You can insert this line using depmod command or insert it manually.
  160.        Also, you must consult your Linux distribution installation guide
  161.        and learn how to set the IP address of your network interface and 
  162.        up it at boot time.
  163.  
  164.     6) If you can't compile this driver, and parse error messages appear,
  165.        please make sure your source code text format is right. You must convert
  166.        your source code text format from MS-DOS to UNIX, as show below (see
  167.        Solution 1 and 2).
  168.        Make sure the files in floppy disk are not rhinefet.tgz file. They must
  169.        be the source code text files (5 files), rhinefet.tgz is not a text file
  170.        , so it can't be converted.
  171.  
  172.         Solution1:
  173.             If you use mcopy command to copy your driver from floppy disk to
  174.             linux, you can type:
  175.                 mcopy -t a:\* .
  176.             then it will convert the format for you. 
  177.  
  178.         Solution2:
  179.             If you use mount command to mount floppy disk to linux, you can
  180.             type:
  181.                 mount -t vfat -o conv=t /dev/fd0 /mnt/floppy
  182.             then, when you copy files from /mnt/floppy, these files format will
  183.             be right.
  184.  
  185. Module Parameter:
  186. =================
  187. The following parameters can be set when we install the driver module. You can add this parameters when
  188. you execute 'insmod' or 'modprobe' command to install the driver (as below).
  189.     insmod rhinefet.o parameter=value1,value2,value3,...
  190. For example, if you have 3 NIC cards, and you want to set the speed_duplex paramter value of them .
  191. You can type the following command to set it.
  192.     insmod rhinefet.o speed_duplex=1,2,3
  193. Then, the parameter value of first card will be 1 (100Mbps half duplex mode), the second card will
  194. be 2 (100Mbps full duplex mode), and the third card will be 3 (10Mbps half duplex mode).
  195. Remember, our driver only support 8 cards parameter setting. 
  196.  
  197. 1) speed_duplex
  198.    speed_duplex[] is used for setting the speed and duplex mode of NIC.
  199.    Value:
  200.        0: indicate autonegotiation for both speed and duplex mode (Default).
  201.        1: indicate 100Mbps half duplex mode
  202.        2: indicate 100Mbps full duplex mode
  203.        3: indicate 10Mbps half duplex mode
  204.        4: indicate 10Mbps full duplex mode
  205.  
  206. 2) enable_tagging
  207.    enable_tagging[] is used for enabling VLAN ID setting and enabling
  208.    priority transmit.
  209.    Value:
  210.        0: disable VID setting and priority transmit (Default).
  211.        1: enable VID setting and priority transmit.
  212.  
  213. 3) VID_setting
  214.    VID_setting[] is used for setting the VLAN ID of NIC.
  215.    Value:
  216.        0: default VID.
  217.        1-4094: other VIDs.
  218.  
  219. 4) csum_offload
  220.    csum_offload[] is used for setting the checksum offload ability of NIC.
  221.    Value:
  222.        0: disable csum_offload (Default).
  223.        1: enable checksum offload. (We only support RX checksum offload now)
  224.  
  225. 5) txcsum_offload (For management adapter only) 
  226.    csum_offload[] is used for setting the checksum offload ability of NIC.
  227.    Value:
  228.        0: disable (default)
  229.        1: enable
  230.  
  231.  
  232. 6) flow_control
  233.    flow_control[] is used for setting the flow control ability of NIC.
  234.    Value:
  235.        1: hardware deafult (Default). Use Hardware default value in ANAR.
  236.        2: disable PAUSE in ANAR.
  237.        3: enable PAUSE in ANAR.
  238.  
  239.  
  240. 7) IP_byte_align
  241.    IP_byte_align[] is used for IP header DWORD byte aligned (For IPVS environment).
  242.    (In some enviroment, the IP header should be DWORD byte aligned,or the packet
  243.    will be droped when we receive it. (eg: IPVS))
  244.    Value:
  245.        0: indicate the IP header won't be DWORD byte aligned (Default).
  246.        1: indicate the IP header will be DWORD byte aligned.
  247.  
  248.  
  249. 8) tx_thresh
  250.    tx_thresh[] is used for controlling the transmit fifo threshold.
  251.    Value:
  252.        0: indicate the txfifo threshold is 128 bytes (Default).
  253.        1: indicate the txfifo threshold is 256 bytes.
  254.        2: indicate the txfifo threshold is 512 bytes.
  255.        3: indicate the txfifo threshold is 1024 bytes.
  256.        4: indicate that we use store and forward
  257.  
  258. 9) rx_thresh
  259.    rx_thresh[] is used for controlling the receive fifo threshold.
  260.    Value:
  261.        0: indicate the rxfifo threshold is 64 bytes (Default).
  262.        1: indicate the rxfifo threshold is 32 bytes.
  263.        2: indicate the rxfifo threshold is 128 bytes.
  264.        3: indicate the rxfifo threshold is 256 bytes.
  265.        4: indicate the rxfifo threshold is 512 bytes.
  266.        5: indicate the rxfifo threshold is 768 bytes.
  267.        6: indicate the rxfifo threshold is 1024 bytes.   
  268.        7: indicate that we use store and forward
  269.        
  270. 10) DMA_length
  271.    DMA_length[] is used for controlling the DMA length.
  272.    Value:
  273.        0: 8 DWORDs
  274.        1: 16 DWORDs (Deafult)
  275.        2: 32 DWORDs
  276.        3: 64 DWORDs
  277.        4: 128 DWORDs
  278.        5: 256 DWORDs
  279.        6: SF(flush till emply)
  280.        7: SF(flush till emply)
  281.  
  282. 11) ValPktLen
  283.     ValPktLen[] is used for controlling driver to receive or drop
  284.     the frame with invalid layer 2 length.
  285.     Value:
  286.         0: Receive frame with invalid layer 2 length.
  287.         1: Drop frame with invalid layer 2 length.
  288.  
  289. 12) wol_opts
  290.     wol_opts[] is used for controlling wake on lan behavior of NIC.
  291.     0: Wake up if recevied a magic packet. (Default)
  292.     1: Wake up if link status is on/off.
  293.     2: Wake up if recevied an arp packet.
  294.     4: Wake up if recevied any unicast packet.
  295.     Those value can be sumed up to support more than one option.
  296.