1 .. SPDX-License-Identifier: GPL-2.0
3 =========================================================
4 D-Link DL2000-based Gigabit Ethernet Adapter Installation
5 =========================================================
13 - Compiling the Driver
14 - Installing the Driver
16 - Configuration Script Sample
25 - D-Link DGE-550T Gigabit Ethernet Adapter.
26 - D-Link DGE-550SX Gigabit Ethernet Adapter.
27 - D-Link DL2000-based Gigabit Ethernet Adapter.
30 The driver support Linux kernel 2.4.7 later. We had tested it
31 on the environments below.
33 . Red Hat v6.2 (update kernel to 2.4.7)
34 . Red Hat v7.0 (update kernel to 2.4.7)
35 . Red Hat v7.1 (kernel 2.4.7)
36 . Red Hat v7.2 (kernel 2.4.7-10)
41 Install linux driver as following command::
45 3. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.0
46 ^^^^^^^^^^^^^^^\ ^^^^^^^^\
49 Now eth0 should active, you can test it by "ping" or get more information by
50 "ifconfig". If tested ok, continue the next step.
52 4. ``cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net``
53 5. Add the following line to /etc/modprobe.d/dl2k.conf::
57 6. Run ``depmod`` to updated module indexes.
58 7. Run ``netconfig`` or ``netconf`` to create configuration script ifcfg-eth0
59 located at /etc/sysconfig/network-scripts or create it manually.
61 [see - Configuration Script Sample]
62 8. Driver will automatically load and configure at next boot time.
66 In Linux, NIC drivers are most commonly configured as loadable modules.
67 The approach of building a monolithic kernel has become obsolete. The driver
68 can be compiled as part of a monolithic kernel, but is strongly discouraged.
69 The remainder of this section assumes the driver is built as a loadable module.
70 In the Linux environment, it is a good idea to rebuild the driver from the
71 source instead of relying on a precompiled version. This approach provides
72 better reliability since a precompiled driver might depend on libraries or
73 kernel features that are not present in a given Linux installation.
75 The 3 files necessary to build Linux device driver are dl2k.c, dl2k.h and
76 Makefile. To compile, the Linux installation must include the gcc compiler,
77 the kernel source, and the kernel headers. The Linux driver supports Linux
78 Kernels 2.4.7. Copy the files to a directory and enter the following command
79 to compile and link the driver:
86 [root@XXX /] mkdir cdrom
87 [root@XXX /] mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom
89 [root@XXX /root] mkdir dl2k
90 [root@XXX /root] cd dl2k
91 [root@XXX dl2k] cp /cdrom/linux/dl2k.tgz /root/dl2k
92 [root@XXX dl2k] tar xfvz dl2k.tgz
93 [root@XXX dl2k] make all
101 [root@XXX /root] mkdir dl2k
102 [root@XXX /root] cd dl2k
103 [root@XXX dl2k] mcopy a:/linux/dl2k.tgz /root/dl2k
104 [root@XXX dl2k] tar xfvz dl2k.tgz
105 [root@XXX dl2k] make all
107 Installing the Driver
108 =====================
113 Once the driver has been compiled, it must be loaded, enabled, and bound
114 to a protocol stack in order to establish network connectivity. To load a
115 module enter the command::
121 insmod dl2k.o <optional parameter> ; add parameter
123 ---------------------------------------------------------
127 insmod dl2k.o media=100mbps_hd
131 insmod dl2k.o media=3
135 insmod dl2k.o media=3,2 ; for 2 cards
137 ---------------------------------------------------------
139 Please reference the list of the command line parameters supported by
140 the Linux device driver below.
142 The insmod command only loads the driver and gives it a name of the form
143 eth0, eth1, etc. To bring the NIC into an operational state,
144 it is necessary to issue the following command::
148 Finally, to bind the driver to the active protocol (e.g., TCP/IP with
149 Linux), enter the following command::
153 Note that this is meaningful only if the system can find a configuration
154 script that contains the necessary network information. A sample will be
155 given in the next paragraph.
157 The commands to unload a driver are as follows::
163 The following are the commands to list the currently loaded modules and
164 to see the current network configuration::
170 Automated Installation
171 ----------------------
172 This section describes how to install the driver such that it is
173 automatically loaded and configured at boot time. The following description
174 is based on a Red Hat 6.0/7.0 distribution, but it can easily be ported to
175 other distributions as well.
179 1. Copy dl2k.o to the network modules directory, typically
180 /lib/modules/2.x.x-xx/net or /lib/modules/2.x.x/kernel/drivers/net.
181 2. Locate the boot module configuration file, most commonly in the
182 /etc/modprobe.d/ directory. Add the following lines::
185 options dl2k <optional parameters>
187 where ethx will be eth0 if the NIC is the only ethernet adapter, eth1 if
188 one other ethernet adapter is installed, etc. Refer to the table in the
189 previous section for the list of optional parameters.
190 3. Locate the network configuration scripts, normally the
191 /etc/sysconfig/network-scripts directory, and create a configuration
192 script named ifcfg-ethx that contains network information.
193 4. Note that for most Linux distributions, Red Hat included, a configuration
194 utility with a graphical user interface is provided to perform steps 2
198 Parameter Description
199 =====================
200 You can install this driver without any additional parameter. However, if you
201 are going to have extensive functions then it is necessary to set extra
202 parameter. Below is a list of the command line parameters supported by the
207 =============================== ==============================================
208 mtu=packet_size Specifies the maximum packet size. default
211 media=media_type Specifies the media type the NIC operates at.
212 autosense Autosensing active media.
214 =========== =========================
215 10mbps_hd 10Mbps half duplex.
216 10mbps_fd 10Mbps full duplex.
217 100mbps_hd 100Mbps half duplex.
218 100mbps_fd 100Mbps full duplex.
219 1000mbps_fd 1000Mbps full duplex.
220 1000mbps_hd 1000Mbps half duplex.
221 0 Autosensing active media.
222 1 10Mbps half duplex.
223 2 10Mbps full duplex.
224 3 100Mbps half duplex.
225 4 100Mbps full duplex.
226 5 1000Mbps half duplex.
227 6 1000Mbps full duplex.
228 =========== =========================
230 By default, the NIC operates at autosense.
231 1000mbps_fd and 1000mbps_hd types are only
232 available for fiber adapter.
234 vlan=n Specifies the VLAN ID. If vlan=0, the
235 Virtual Local Area Network (VLAN) function is
238 jumbo=[0|1] Specifies the jumbo frame support. If jumbo=1,
239 the NIC accept jumbo frames. By default, this
240 function is disabled.
241 Jumbo frame usually improve the performance
243 This feature need jumbo frame compatible
246 rx_coalesce=m Number of rx frame handled each interrupt.
247 rx_timeout=n Rx DMA wait time for an interrupt.
248 If set rx_coalesce > 0, hardware only assert
249 an interrupt for m frames. Hardware won't
250 assert rx interrupt until m frames received or
251 reach timeout of n * 640 nano seconds.
252 Set proper rx_coalesce and rx_timeout can
253 reduce congestion collapse and overload which
254 has been a bottleneck for high speed network.
256 For example, rx_coalesce=10 rx_timeout=800.
257 that is, hardware assert only 1 interrupt
258 for 10 frames received or timeout of 512 us.
260 tx_coalesce=n Number of tx frame handled each interrupt.
261 Set n > 1 can reduce the interrupts
262 congestion usually lower performance of
263 high speed network card. Default is 16.
265 tx_flow=[1|0] Specifies the Tx flow control. If tx_flow=0,
266 the Tx flow control disable else driver
268 rx_flow=[1|0] Specifies the Rx flow control. If rx_flow=0,
269 the Rx flow control enable else driver
271 =============================== ==============================================
274 Configuration Script Sample
275 ===========================
276 Here is a sample of a simple configuration script::
282 BROADCAST=207.200.5.255
284 NETMASK=255.255.255.0
290 Q1. Source files contain ^ M behind every line.
292 Make sure all files are Unix file format (no LF). Try the following
293 shell command to convert files::
295 cat dl2k.c | col -b > dl2k.tmp
300 cat dl2k.c | tr -d "\r" > dl2k.tmp
303 Q2: Could not find header files (``*.h``)?
305 To compile the driver, you need kernel header files. After
306 installing the kernel source, the header files are usually located in
307 /usr/src/linux/include, which is the default include directory configured
308 in Makefile. For some distributions, there is a copy of header files in
309 /usr/src/include/linux and /usr/src/include/asm, that you can change the
310 INCLUDEDIR in Makefile to /usr/include without installing kernel source.
312 Note that RH 7.0 didn't provide correct header files in /usr/include,
313 including those files will make a wrong version driver.