linux/Documentation/networking/dl2k.txt
<<
>>
Prefs
   1
   2    D-Link DL2000-based Gigabit Ethernet Adapter Installation
   3    for Linux
   4    May 23, 2002
   5
   6Contents
   7========
   8 - Compatibility List
   9 - Quick Install
  10 - Compiling the Driver
  11 - Installing the Driver
  12 - Option parameter
  13 - Configuration Script Sample
  14 - Troubleshooting
  15
  16
  17Compatibility List
  18=================
  19Adapter Support:
  20
  21D-Link DGE-550T Gigabit Ethernet Adapter.
  22D-Link DGE-550SX Gigabit Ethernet Adapter.
  23D-Link DL2000-based Gigabit Ethernet Adapter.
  24
  25
  26The driver support Linux kernel 2.4.7 later. We had tested it
  27on the environments below.
  28
  29 . Red Hat v6.2 (update kernel to 2.4.7)
  30 . Red Hat v7.0 (update kernel to 2.4.7)
  31 . Red Hat v7.1 (kernel 2.4.7)
  32 . Red Hat v7.2 (kernel 2.4.7-10)
  33
  34
  35Quick Install
  36=============
  37Install linux driver as following command:
  38
  391. make all
  402. insmod dl2k.ko
  413. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.0
  42                    ^^^^^^^^^^^^^^^\        ^^^^^^^^\
  43                                    IP               NETMASK
  44Now eth0 should active, you can test it by "ping" or get more information by
  45"ifconfig". If tested ok, continue the next step.
  46
  474. cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net
  485. Add the following line to /etc/modprobe.d/dl2k.conf:
  49        alias eth0 dl2k
  506. Run depmod to updated module indexes.
  517. Run "netconfig" or "netconf" to create configuration script ifcfg-eth0
  52   located at /etc/sysconfig/network-scripts or create it manually.
  53   [see - Configuration Script Sample]
  548. Driver will automatically load and configure at next boot time.
  55
  56Compiling the Driver
  57====================
  58  In Linux, NIC drivers are most commonly configured as loadable modules.
  59The approach of building a monolithic kernel has become obsolete. The driver
  60can be compiled as part of a monolithic kernel, but is strongly discouraged.
  61The remainder of this section assumes the driver is built as a loadable module.
  62In the Linux environment, it is a good idea to rebuild the driver from the
  63source instead of relying on a precompiled version. This approach provides
  64better reliability since a precompiled driver might depend on libraries or
  65kernel features that are not present in a given Linux installation.
  66
  67The 3 files necessary to build Linux device driver are dl2k.c, dl2k.h and
  68Makefile. To compile, the Linux installation must include the gcc compiler,
  69the kernel source, and the kernel headers. The Linux driver supports Linux
  70Kernels 2.4.7. Copy the files to a directory and enter the following command
  71to compile and link the driver:
  72
  73CD-ROM drive
  74------------
  75
  76[root@XXX /] mkdir cdrom
  77[root@XXX /] mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom
  78[root@XXX /] cd root
  79[root@XXX /root] mkdir dl2k
  80[root@XXX /root] cd dl2k
  81[root@XXX dl2k] cp /cdrom/linux/dl2k.tgz /root/dl2k
  82[root@XXX dl2k] tar xfvz dl2k.tgz
  83[root@XXX dl2k] make all
  84
  85Floppy disc drive
  86-----------------
  87
  88[root@XXX /] cd root
  89[root@XXX /root] mkdir dl2k
  90[root@XXX /root] cd dl2k
  91[root@XXX dl2k] mcopy a:/linux/dl2k.tgz /root/dl2k
  92[root@XXX dl2k] tar xfvz dl2k.tgz
  93[root@XXX dl2k] make all
  94
  95Installing the Driver
  96=====================
  97
  98  Manual Installation
  99  -------------------
 100  Once the driver has been compiled, it must be loaded, enabled, and bound
 101  to a protocol stack in order to establish network connectivity. To load a
 102  module enter the command:
 103
 104  insmod dl2k.o
 105
 106  or
 107
 108  insmod dl2k.o <optional parameter>    ; add parameter
 109
 110  ===============================================================
 111   example: insmod dl2k.o media=100mbps_hd
 112   or       insmod dl2k.o media=3
 113   or       insmod dl2k.o media=3,2     ; for 2 cards
 114  ===============================================================
 115
 116  Please reference the list of the command line parameters supported by
 117  the Linux device driver below.
 118
 119  The insmod command only loads the driver and gives it a name of the form
 120  eth0, eth1, etc. To bring the NIC into an operational state,
 121  it is necessary to issue the following command:
 122
 123  ifconfig eth0 up
 124
 125  Finally, to bind the driver to the active protocol (e.g., TCP/IP with
 126  Linux), enter the following command:
 127
 128  ifup eth0
 129
 130  Note that this is meaningful only if the system can find a configuration
 131  script that contains the necessary network information. A sample will be
 132  given in the next paragraph.
 133
 134  The commands to unload a driver are as follows:
 135
 136  ifdown eth0
 137  ifconfig eth0 down
 138  rmmod dl2k.o
 139
 140  The following are the commands to list the currently loaded modules and
 141  to see the current network configuration.
 142
 143  lsmod
 144  ifconfig
 145
 146
 147  Automated Installation
 148  ----------------------
 149  This section describes how to install the driver such that it is
 150  automatically loaded and configured at boot time. The following description
 151  is based on a Red Hat 6.0/7.0 distribution, but it can easily be ported to
 152  other distributions as well.
 153
 154  Red Hat v6.x/v7.x
 155  -----------------
 156  1. Copy dl2k.o to the network modules directory, typically
 157     /lib/modules/2.x.x-xx/net or /lib/modules/2.x.x/kernel/drivers/net.
 158  2. Locate the boot module configuration file, most commonly in the
 159     /etc/modprobe.d/ directory. Add the following lines:
 160
 161     alias ethx dl2k
 162     options dl2k <optional parameters>
 163
 164     where ethx will be eth0 if the NIC is the only ethernet adapter, eth1 if
 165     one other ethernet adapter is installed, etc. Refer to the table in the
 166     previous section for the list of optional parameters.
 167  3. Locate the network configuration scripts, normally the
 168     /etc/sysconfig/network-scripts directory, and create a configuration
 169     script named ifcfg-ethx that contains network information.
 170  4. Note that for most Linux distributions, Red Hat included, a configuration
 171     utility with a graphical user interface is provided to perform steps 2
 172     and 3 above.
 173
 174
 175Parameter Description
 176=====================
 177You can install this driver without any additional parameter. However, if you
 178are going to have extensive functions then it is necessary to set extra
 179parameter. Below is a list of the command line parameters supported by the
 180Linux device
 181driver.
 182
 183mtu=packet_size                 - Specifies the maximum packet size. default
 184                                  is 1500.
 185
 186media=media_type                - Specifies the media type the NIC operates at.
 187                                  autosense     Autosensing active media.
 188                                  10mbps_hd     10Mbps half duplex.
 189                                  10mbps_fd     10Mbps full duplex.
 190                                  100mbps_hd    100Mbps half duplex.
 191                                  100mbps_fd    100Mbps full duplex.
 192                                  1000mbps_fd   1000Mbps full duplex.
 193                                  1000mbps_hd   1000Mbps half duplex.
 194                                  0             Autosensing active media.
 195                                  1             10Mbps half duplex.
 196                                  2             10Mbps full duplex.
 197                                  3             100Mbps half duplex.
 198                                  4             100Mbps full duplex.
 199                                  5             1000Mbps half duplex.
 200                                  6             1000Mbps full duplex.
 201
 202                                  By default, the NIC operates at autosense.
 203                                  1000mbps_fd and 1000mbps_hd types are only
 204                                  available for fiber adapter.
 205
 206vlan=n                          - Specifies the VLAN ID. If vlan=0, the
 207                                  Virtual Local Area Network (VLAN) function is
 208                                  disable.
 209
 210jumbo=[0|1]                     - Specifies the jumbo frame support. If jumbo=1,
 211                                  the NIC accept jumbo frames. By default, this
 212                                  function is disabled.
 213                                  Jumbo frame usually improve the performance
 214                                  int gigabit.
 215                                  This feature need jumbo frame compatible 
 216                                  remote.
 217                                  
 218rx_coalesce=m                   - Number of rx frame handled each interrupt.
 219rx_timeout=n                    - Rx DMA wait time for an interrupt. 
 220                                  If set rx_coalesce > 0, hardware only assert 
 221                                  an interrupt for m frames. Hardware won't 
 222                                  assert rx interrupt until m frames received or
 223                                  reach timeout of n * 640 nano seconds. 
 224                                  Set proper rx_coalesce and rx_timeout can 
 225                                  reduce congestion collapse and overload which
 226                                  has been a bottleneck for high speed network.
 227                                  
 228                                  For example, rx_coalesce=10 rx_timeout=800.
 229                                  that is, hardware assert only 1 interrupt 
 230                                  for 10 frames received or timeout of 512 us. 
 231
 232tx_coalesce=n                   - Number of tx frame handled each interrupt.
 233                                  Set n > 1 can reduce the interrupts 
 234                                  congestion usually lower performance of
 235                                  high speed network card. Default is 16.
 236                                  
 237tx_flow=[1|0]                   - Specifies the Tx flow control. If tx_flow=0, 
 238                                  the Tx flow control disable else driver
 239                                  autodetect.
 240rx_flow=[1|0]                   - Specifies the Rx flow control. If rx_flow=0, 
 241                                  the Rx flow control enable else driver
 242                                  autodetect.
 243
 244
 245Configuration Script Sample
 246===========================
 247Here is a sample of a simple configuration script:
 248
 249DEVICE=eth0
 250USERCTL=no
 251ONBOOT=yes
 252POOTPROTO=none
 253BROADCAST=207.200.5.255
 254NETWORK=207.200.5.0
 255NETMASK=255.255.255.0
 256IPADDR=207.200.5.2
 257
 258
 259Troubleshooting
 260===============
 261Q1. Source files contain ^ M behind every line.
 262        Make sure all files are Unix file format (no LF). Try the following
 263    shell command to convert files.
 264
 265        cat dl2k.c | col -b > dl2k.tmp
 266        mv dl2k.tmp dl2k.c
 267
 268        OR
 269
 270        cat dl2k.c | tr -d "\r" > dl2k.tmp
 271        mv dl2k.tmp dl2k.c
 272
 273Q2: Could not find header files (*.h) ?
 274        To compile the driver, you need kernel header files. After
 275    installing the kernel source, the header files are usually located in
 276    /usr/src/linux/include, which is the default include directory configured
 277    in Makefile. For some distributions, there is a copy of header files in
 278    /usr/src/include/linux and /usr/src/include/asm, that you can change the
 279    INCLUDEDIR in Makefile to /usr/include without installing kernel source.
 280        Note that RH 7.0 didn't provide correct header files in /usr/include,
 281    including those files will make a wrong version driver.
 282
 283
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.