
    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.conf:
	alias eth0 dl2k
6. Run "netconfig" or "netconf" to create configuration script ifcfg-eth0
   located at /etc/sysconfig/network-scripts or create it manually.
   [see - Configuration Script Sample]
7. 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 modprobe.conf
     or modules.conf (for 2.4) in the /etc 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.

