Blame view

Documentation/networking/dl2k.txt 9.17 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
  
      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
  =====================
3f6dee9b2   Matt LaPlante   Fix some typos in...
176
  You can install this driver without any additional parameter. However, if you
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
  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
6c28f2c0f   Matt LaPlante   Fix typos in Docu...
225
  				  has been a bottleneck for high speed network.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
  				  
  				  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.