123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- D-Link DL2000-based Gigabit Ethernet Adapter Installation
- for Linux
- May 23, 2002
- Contents
- ========
- - Compatibility List
- - Quick Install
- - Compiling the Driver
- - Installing the Driver
- - Option parameter
- - Configuration Script Sample
- - Troubleshooting
- Compatibility List
- =================
- Adapter Support:
- D-Link DGE-550T Gigabit Ethernet Adapter.
- D-Link DGE-550SX Gigabit Ethernet Adapter.
- D-Link DL2000-based Gigabit Ethernet Adapter.
- The driver support Linux kernel 2.4.7 later. We had tested it
- on the environments below.
- . Red Hat v6.2 (update kernel to 2.4.7)
- . Red Hat v7.0 (update kernel to 2.4.7)
- . Red Hat v7.1 (kernel 2.4.7)
- . Red Hat v7.2 (kernel 2.4.7-10)
- Quick Install
- =============
- Install linux driver as following command:
- 1. make all
- 2. insmod dl2k.ko
- 3. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.0
- ^^^^^^^^^^^^^^^\ ^^^^^^^^\
- IP NETMASK
- Now eth0 should active, you can test it by "ping" or get more information by
- "ifconfig". If tested ok, continue the next step.
- 4. cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net
- 5. Add the following line to /etc/modprobe.d/dl2k.conf:
- alias eth0 dl2k
- 6. Run depmod to updated module indexes.
- 7. Run "netconfig" or "netconf" to create configuration script ifcfg-eth0
- located at /etc/sysconfig/network-scripts or create it manually.
- [see - Configuration Script Sample]
- 8. Driver will automatically load and configure at next boot time.
- Compiling the Driver
- ====================
- In Linux, NIC drivers are most commonly configured as loadable modules.
- The approach of building a monolithic kernel has become obsolete. The driver
- can be compiled as part of a monolithic kernel, but is strongly discouraged.
- The remainder of this section assumes the driver is built as a loadable module.
- In the Linux environment, it is a good idea to rebuild the driver from the
- source instead of relying on a precompiled version. This approach provides
- better reliability since a precompiled driver might depend on libraries or
- kernel features that are not present in a given Linux installation.
- The 3 files necessary to build Linux device driver are dl2k.c, dl2k.h and
- Makefile. To compile, the Linux installation must include the gcc compiler,
- the kernel source, and the kernel headers. The Linux driver supports Linux
- Kernels 2.4.7. Copy the files to a directory and enter the following command
- to compile and link the driver:
- CD-ROM drive
- ------------
- [root@XXX /] mkdir cdrom
- [root@XXX /] mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom
- [root@XXX /] cd root
- [root@XXX /root] mkdir dl2k
- [root@XXX /root] cd dl2k
- [root@XXX dl2k] cp /cdrom/linux/dl2k.tgz /root/dl2k
- [root@XXX dl2k] tar xfvz dl2k.tgz
- [root@XXX dl2k] make all
- Floppy disc drive
- -----------------
- [root@XXX /] cd root
- [root@XXX /root] mkdir dl2k
- [root@XXX /root] cd dl2k
- [root@XXX dl2k] mcopy a:/linux/dl2k.tgz /root/dl2k
- [root@XXX dl2k] tar xfvz dl2k.tgz
- [root@XXX dl2k] make all
- Installing the Driver
- =====================
- Manual Installation
- -------------------
- Once the driver has been compiled, it must be loaded, enabled, and bound
- to a protocol stack in order to establish network connectivity. To load a
- module enter the command:
- insmod dl2k.o
- or
- insmod dl2k.o <optional parameter> ; add parameter
- ===============================================================
- example: insmod dl2k.o media=100mbps_hd
- or insmod dl2k.o media=3
- or insmod dl2k.o media=3,2 ; for 2 cards
- ===============================================================
- Please reference the list of the command line parameters supported by
- the Linux device driver below.
- The insmod command only loads the driver and gives it a name of the form
- eth0, eth1, etc. To bring the NIC into an operational state,
- it is necessary to issue the following command:
- ifconfig eth0 up
- Finally, to bind the driver to the active protocol (e.g., TCP/IP with
- Linux), enter the following command:
- ifup eth0
- Note that this is meaningful only if the system can find a configuration
- script that contains the necessary network information. A sample will be
- given in the next paragraph.
- The commands to unload a driver are as follows:
- ifdown eth0
- ifconfig eth0 down
- rmmod dl2k.o
- The following are the commands to list the currently loaded modules and
- to see the current network configuration.
- lsmod
- ifconfig
- Automated Installation
- ----------------------
- This section describes how to install the driver such that it is
- automatically loaded and configured at boot time. The following description
- is based on a Red Hat 6.0/7.0 distribution, but it can easily be ported to
- other distributions as well.
- Red Hat v6.x/v7.x
- -----------------
- 1. Copy dl2k.o to the network modules directory, typically
- /lib/modules/2.x.x-xx/net or /lib/modules/2.x.x/kernel/drivers/net.
- 2. Locate the boot module configuration file, most commonly in the
- /etc/modprobe.d/ directory. Add the following lines:
- alias ethx dl2k
- options dl2k <optional parameters>
- where ethx will be eth0 if the NIC is the only ethernet adapter, eth1 if
- one other ethernet adapter is installed, etc. Refer to the table in the
- previous section for the list of optional parameters.
- 3. Locate the network configuration scripts, normally the
- /etc/sysconfig/network-scripts directory, and create a configuration
- script named ifcfg-ethx that contains network information.
- 4. Note that for most Linux distributions, Red Hat included, a configuration
- utility with a graphical user interface is provided to perform steps 2
- and 3 above.
- Parameter Description
- =====================
- You can install this driver without any additional parameter. However, if you
- are going to have extensive functions then it is necessary to set extra
- parameter. Below is a list of the command line parameters supported by the
- Linux device
- driver.
- mtu=packet_size - Specifies the maximum packet size. default
- is 1500.
- media=media_type - Specifies the media type the NIC operates at.
- autosense Autosensing active media.
- 10mbps_hd 10Mbps half duplex.
- 10mbps_fd 10Mbps full duplex.
- 100mbps_hd 100Mbps half duplex.
- 100mbps_fd 100Mbps full duplex.
- 1000mbps_fd 1000Mbps full duplex.
- 1000mbps_hd 1000Mbps half duplex.
- 0 Autosensing active media.
- 1 10Mbps half duplex.
- 2 10Mbps full duplex.
- 3 100Mbps half duplex.
- 4 100Mbps full duplex.
- 5 1000Mbps half duplex.
- 6 1000Mbps full duplex.
- By default, the NIC operates at autosense.
- 1000mbps_fd and 1000mbps_hd types are only
- available for fiber adapter.
- vlan=n - Specifies the VLAN ID. If vlan=0, the
- Virtual Local Area Network (VLAN) function is
- disable.
- jumbo=[0|1] - Specifies the jumbo frame support. If jumbo=1,
- the NIC accept jumbo frames. By default, this
- function is disabled.
- Jumbo frame usually improve the performance
- int gigabit.
- This feature need jumbo frame compatible
- remote.
-
- rx_coalesce=m - Number of rx frame handled each interrupt.
- rx_timeout=n - Rx DMA wait time for an interrupt.
- If set rx_coalesce > 0, hardware only assert
- an interrupt for m frames. Hardware won't
- assert rx interrupt until m frames received or
- reach timeout of n * 640 nano seconds.
- Set proper rx_coalesce and rx_timeout can
- reduce congestion collapse and overload which
- has been a bottleneck for high speed network.
-
- For example, rx_coalesce=10 rx_timeout=800.
- that is, hardware assert only 1 interrupt
- for 10 frames received or timeout of 512 us.
- tx_coalesce=n - Number of tx frame handled each interrupt.
- Set n > 1 can reduce the interrupts
- congestion usually lower performance of
- high speed network card. Default is 16.
-
- tx_flow=[1|0] - Specifies the Tx flow control. If tx_flow=0,
- the Tx flow control disable else driver
- autodetect.
- rx_flow=[1|0] - Specifies the Rx flow control. If rx_flow=0,
- the Rx flow control enable else driver
- autodetect.
- Configuration Script Sample
- ===========================
- Here is a sample of a simple configuration script:
- DEVICE=eth0
- USERCTL=no
- ONBOOT=yes
- POOTPROTO=none
- BROADCAST=207.200.5.255
- NETWORK=207.200.5.0
- NETMASK=255.255.255.0
- IPADDR=207.200.5.2
- Troubleshooting
- ===============
- Q1. Source files contain ^ M behind every line.
- Make sure all files are Unix file format (no LF). Try the following
- shell command to convert files.
- cat dl2k.c | col -b > dl2k.tmp
- mv dl2k.tmp dl2k.c
- OR
- cat dl2k.c | tr -d "\r" > dl2k.tmp
- mv dl2k.tmp dl2k.c
- Q2: Could not find header files (*.h) ?
- To compile the driver, you need kernel header files. After
- installing the kernel source, the header files are usually located in
- /usr/src/linux/include, which is the default include directory configured
- in Makefile. For some distributions, there is a copy of header files in
- /usr/src/include/linux and /usr/src/include/asm, that you can change the
- INCLUDEDIR in Makefile to /usr/include without installing kernel source.
- Note that RH 7.0 didn't provide correct header files in /usr/include,
- including those files will make a wrong version driver.
|