Linux 6.7-rc7
[linux-modified.git] / Documentation / networking / device_drivers / ethernet / dlink / dl2k.rst
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =========================================================
4 D-Link DL2000-based Gigabit Ethernet Adapter Installation
5 =========================================================
6
7 May 23, 2002
8
9 .. Contents
10
11  - Compatibility List
12  - Quick Install
13  - Compiling the Driver
14  - Installing the Driver
15  - Option parameter
16  - Configuration Script Sample
17  - Troubleshooting
18
19
20 Compatibility List
21 ==================
22
23 Adapter Support:
24
25 - D-Link DGE-550T Gigabit Ethernet Adapter.
26 - D-Link DGE-550SX Gigabit Ethernet Adapter.
27 - D-Link DL2000-based Gigabit Ethernet Adapter.
28
29
30 The driver support Linux kernel 2.4.7 later. We had tested it
31 on the environments below.
32
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)
37
38
39 Quick Install
40 =============
41 Install linux driver as following command::
42
43     1. make all
44     2. insmod dl2k.ko
45     3. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.0
46                         ^^^^^^^^^^^^^^^\            ^^^^^^^^\
47                                         IP                   NETMASK
48
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.
51
52 4. ``cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net``
53 5. Add the following line to /etc/modprobe.d/dl2k.conf::
54
55         alias eth0 dl2k
56
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.
60
61    [see - Configuration Script Sample]
62 8. Driver will automatically load and configure at next boot time.
63
64 Compiling the Driver
65 ====================
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.
74
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:
80
81 CD-ROM drive
82 ------------
83
84 ::
85
86     [root@XXX /] mkdir cdrom
87     [root@XXX /] mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom
88     [root@XXX /] cd root
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
94
95 Floppy disc drive
96 -----------------
97
98 ::
99
100     [root@XXX /] cd root
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
106
107 Installing the Driver
108 =====================
109
110 Manual Installation
111 -------------------
112
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::
116
117     insmod dl2k.o
118
119   or::
120
121     insmod dl2k.o <optional parameter>  ; add parameter
122
123 ---------------------------------------------------------
124
125   example::
126
127     insmod dl2k.o media=100mbps_hd
128
129    or::
130
131     insmod dl2k.o media=3
132
133    or::
134
135     insmod dl2k.o media=3,2     ; for 2 cards
136
137 ---------------------------------------------------------
138
139   Please reference the list of the command line parameters supported by
140   the Linux device driver below.
141
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::
145
146     ifconfig eth0 up
147
148   Finally, to bind the driver to the active protocol (e.g., TCP/IP with
149   Linux), enter the following command::
150
151     ifup eth0
152
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.
156
157   The commands to unload a driver are as follows::
158
159     ifdown eth0
160     ifconfig eth0 down
161     rmmod dl2k.o
162
163   The following are the commands to list the currently loaded modules and
164   to see the current network configuration::
165
166     lsmod
167     ifconfig
168
169
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.
176
177 Red Hat v6.x/v7.x
178 -----------------
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::
183
184         alias ethx dl2k
185         options dl2k <optional parameters>
186
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
195      and 3 above.
196
197
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
203 Linux device
204 driver.
205
206
207 ===============================   ==============================================
208 mtu=packet_size                   Specifies the maximum packet size. default
209                                   is 1500.
210
211 media=media_type                  Specifies the media type the NIC operates at.
212                                   autosense     Autosensing active media.
213
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                                   ===========   =========================
229
230                                   By default, the NIC operates at autosense.
231                                   1000mbps_fd and 1000mbps_hd types are only
232                                   available for fiber adapter.
233
234 vlan=n                            Specifies the VLAN ID. If vlan=0, the
235                                   Virtual Local Area Network (VLAN) function is
236                                   disable.
237
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
242                                   int gigabit.
243                                   This feature need jumbo frame compatible
244                                   remote.
245
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.
255
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.
259
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.
264
265 tx_flow=[1|0]                     Specifies the Tx flow control. If tx_flow=0,
266                                   the Tx flow control disable else driver
267                                   autodetect.
268 rx_flow=[1|0]                     Specifies the Rx flow control. If rx_flow=0,
269                                   the Rx flow control enable else driver
270                                   autodetect.
271 ===============================   ==============================================
272
273
274 Configuration Script Sample
275 ===========================
276 Here is a sample of a simple configuration script::
277
278     DEVICE=eth0
279     USERCTL=no
280     ONBOOT=yes
281     POOTPROTO=none
282     BROADCAST=207.200.5.255
283     NETWORK=207.200.5.0
284     NETMASK=255.255.255.0
285     IPADDR=207.200.5.2
286
287
288 Troubleshooting
289 ===============
290 Q1. Source files contain ^ M behind every line.
291
292     Make sure all files are Unix file format (no LF). Try the following
293     shell command to convert files::
294
295         cat dl2k.c | col -b > dl2k.tmp
296         mv dl2k.tmp dl2k.c
297
298     OR::
299
300         cat dl2k.c | tr -d "\r" > dl2k.tmp
301         mv dl2k.tmp dl2k.c
302
303 Q2: Could not find header files (``*.h``)?
304
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.
311
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.
314