[SLUG] Compile the driver source files!

Mark Feather akwe-xavante at firenet.uk.net
Sun Jul 27 09:02:01 BST 2003


Hi,

Please help......

I am trying to install a driver for a D-Link DFE-530TX PCI Fast Ethernet
Adapter and get as far Step 4 in the process.

The first few words of Step 4 read "Compile the driver source files" How do
i do this? i have used the command chmod 777 * before i ran the ./Makefile
command.

I have tried ./Makefile, i get a series of errors do i have to name a
specific file after "./Makefile? if so which one?

The list of files here is the result of the UNTAR proccess in Step 3

Mark


total 189
drwxr-xr-x    2 root     root          375 Jan 14  2003 .
drwxr-xr-x    3 root     root           96 Jul 23 00:33 ..
-rw-r--r--    1 root     root          225 Jun 24  2002 .depend
-rw-r--r--    1 root     root           67 Jun 24  2002 .depend.mak
-rw-r--r--    1 root     root         5135 Jun 24  2002 Makefile
-rw-r--r--    1 root     root         7973 Jun 24  2002 kcompat.h
-rw-r--r--    1 root     root        11210 Jan 14  2003 linux.txt
-rw-r--r--    1 root     root        38296 Jun 26  2002 rhine.h
-rw-r--r--    1 root     root         3131 Jun 26  2002 rhine_cfg.h
-rw-r--r--    1 root     root        70285 Jun 26  2002 rhine_main.c
-rw-r--r--    1 root     root         4315 Jun 24  2002 rhine_proc.c
-rw-r--r--    1 root     root         2324 Jun 24  2002 rhine_proc.h
-rw-r--r--    1 root     root        10475 Jun 24  2002 rhine_vmns.c
-rw-r--r--    1 root     root         2419 Jun 24  2002 rhine_vmns.h
-rw-r--r--    1 root     root         8117 Jun 24  2002 vmns_drv.h


 Contents of the Linux Help file that came with the Installation CD BELOW.



    D-Link DFE-530TX PCI Fast Ethernet Adapter Installation

                                     for Linux



                        v4.16  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.

    rhinefet.h              The linux core driver header file

    rhinefet.c              The linux core driver source code file

    Makefile                Makefile for generating driver object file

    rhine_vmns.c            The vmns driver support source file

    rhine_vmns.h            The vmns driver support header file

    rhine_cfg.h             The vmns driver support header file

    vmns_drv.h              The vmns driver support header 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 (dlkfet-4.16.tar.gz) from released CD, (If you didn't
mount

       CD drive before, you can type

       'mkdir /cdrom'

       'mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom' and use

       'cp /cdrom/LINUX/dlkfet-4.16.tar.gz /temp'

       command to copy the driver to the temporary directory):

       cp /<cdrom_mount_point>/LINUX/dlkfet-4.16.tar.gz .



    3) untar the archive file:



        tar xzvf dlkfet-4.16.tar.gz

        cd dlkfet-4.16



    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 dlkfet-4.16.tar.gz file.
They

       must be the source code text files (5 files), dlkfet-4.16.tar.gz 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 (For management adapter only)

   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 (For management adapter only)

   VID_setting[] is used for setting the VLAN ID of NIC.

   Value:

       0: default VID.

       1-4094: other VIDs.



4) csum_offload (For management adapter only)

   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)





More information about the Scarborough mailing list