import of ftp.dlink.com/GPL/DSMG-600_reB/ppclinux.tar.gz
[linux-2.4.21-pre4.git] / Documentation / networking / sk98lin.txt
1 (C)Copyright 1999-2001 SysKonnect GmbH.
2 All rights reserved
3 ===========================================================================
4
5 sk98lin.txt created 28-May-2001
6
7 Readme File for sk98lin v4.06
8 SK-NET Gigabit Ethernet PCI driver for LINUX
9
10 This file contains
11 (1) OVERVIEW
12 (2) REQUIRED FILES
13 (3) INSTALLATION
14 (4) INCLUSION OF ADAPTER AT SYSTEM START
15 (5) DRIVER PARAMETERS
16 (6) LARGE FRAME SUPPORT
17 (7) TROUBLESHOOTING
18 (8) HISTORY
19
20 ===========================================================================
21
22
23 (1) OVERVIEW
24 ============
25
26 The sk98lin driver supports the SysKonnect SK-NET Gigabit Ethernet
27 Adapter SK-98xx family on Linux 2.2.x and above.
28 It has been tested with Linux on Intel/x86 machines.
29 From v3.02 on, the driver is integrated in the linux kernel source.
30 ***
31
32
33 (2) REQUIRED FILES
34 ==================
35
36 The linux kernel source.
37 No additional files required.
38 ***
39
40
41 (3) INSTALLATION
42 ================
43
44 The following steps describe the actions that are required to install
45 the driver and to start it manually. These steps should be carried
46 out for the initial driver setup. Once confirmed to be ok, they can
47 be included in the system start which is described in the next
48 chapter.
49
50 NOTE 1: You must have 'root' access to the system to perform
51         the following tasks.
52 NOTE 2: IMPORTANT: In case of problems, please read the section
53         "Troubleshooting" below.
54
55 1) The driver can either be integrated into the kernel or it can
56    be compiled as a module.
57    Select the appropriate option during the kernel configuration.
58    For use as a module, your kernel must have
59    'loadable module support' enabled.
60    For automatic driver start, you also need 'Kernel module loader'
61    enabled.
62    Configure those options, build and install the new kernel. If you
63    choose to use the driver as a module, do "make modules" and
64    "make modules_install".
65    Reboot your system.
66
67 2) Load the module manually by entering:
68        modprobe sk98lin
69    If the SysKonnect SK-98xx adapter is installed in your
70    computer and you have a /proc filesystem, running the command
71    'more /proc/net/dev' should produce an output containing a
72    line with the following format:
73        eth0:    0    0 ...
74    which means that your adapter has been found and initialized.
75    
76    NOTE 1: If you have more than one SysKonnect SK-98xx adapter, the
77            adapters will be listed as 'eth0', 'eth1', 'eth2', etc.
78            For each adapter, repeat the steps 3) and 4).
79    NOTE 2: If you have other Ethernet adapters installed,
80            your SysKonnect SK-98xx adapter can be mapped to 'eth1' or
81            'eth2' ...
82            The module installation message (in system logfile or
83            on console, depending on /etc/syslog.conf) prints a line
84            for each adapter that is found, containing the
85            corresponding 'ethX'.
86
87 3) Select an IP address and assign it to the respective adapter by
88    entering:
89        ifconfig eth0 <ip-address>
90    This causes the adapter to connect to the ethernet. The solitary
91    yellow LED at the adapter is now active, the link status LED of
92    the primary port is on and the link status LED of the secondary
93    port (on dual port adapters) is blinking (only if the laters are
94    connected to a switch or hub).
95    You will also get a status message on the console saying
96    "ethX: network connection up using port Y" and indicating
97    the selected connection parameters.
98    
99    NOTE: If you are in doubt about IP addresses, ask your network
100          administrator for assistance.
101
102 4) Your adapter should now be fully operational.
103    Use 'ping <otherstation>' to verify the connection to other
104    computers on your network.
105    By viewing /proc/net/sk98lin/[devicename], you can check some 
106    information regarding to the adapter configuration.
107
108
109 5) The driver module can be stopped and unloaded using the following
110    commands:
111        ifconfig eth0 down
112        rmmod sk98lin
113 ***
114
115
116 (4) INCLUSION OF ADAPTER AT SYSTEM START
117 ========================================
118
119 Since a large number of different Linux distributions are 
120 available, we are unable to describe a general installation procedure
121 for the driver module.
122 Because the driver is now integrated in the kernel, installation should
123 be easy, using the standard mechanism of your distribution.
124 Refer to the distribution's manual for installation of ethernet adapters.
125 ***
126
127
128 (5) DRIVER PARAMETERS
129 =====================
130
131 Parameters can be set at the command line while loading the
132 module with 'modprobe'. The configuration tools of some distributions
133 can also give parameters to the driver module.
134 If you use the kernel module loader, you can set driver parameters
135 in the file /etc/modules.conf (or old name: /etc/conf.modules).
136 Insert a line of the form:
137
138 options sk98lin ...
139
140 For "...", use the same syntax as described below for the command
141 line paramaters of modprobe.
142 You either have to reboot your computer or unload and reload
143 the driver to activate the new parameters.
144 The syntax of the driver parameters is:
145
146 modprobe sk98lin parameter=value1[,value2[,value3...]]
147
148 value1 is for the first adapter, value2 for the second one etc.
149 All Parameters are case sensitive, so write them exactly as
150 shown below.
151
152 Sample: Suppose you have two adapters. You want to set AutoNegotiation
153         on Port A of the first adapter to ON and on Port A of the
154         second adapter to OFF.
155         You also want to set DuplexCapabilities on Port A of the first
156         adapter to FULL and on Port A of the second adapter to HALF.
157         You must enter:
158
159         modprobe sk98lin AutoNeg_A=On,Off DupCap_A=Full,Half
160
161 NOTE: The number of adapters that can be configured this way is
162       limited in the driver (file skge.c, constant SK_MAX_CARD_PARAM).
163       The current limit is 16. If you happen to install
164       more adapters, adjust this and recompile.
165
166
167 5.1 Per-Port Parameters
168 -----------------------
169 Those setting are available for each port on the adapter.
170 In the following description, '?' stands for the port for
171 which you set the parameter (A or B).
172
173 - Auto Negotiation
174   Parameter:    AutoNeg_?
175   Values:       On, Off, Sense
176   Default:      Sense
177   
178   The "Sense"-mode finds out automatically whether the link
179   partner supports autonegotiation or not.
180
181 - Duplex Capabilities
182   Parameter:    DupCap_?
183   Values:       Half, Full, Both
184   Default:      Both
185
186   This parameters is relevant only if autonegotiation for
187   this port is not "Sense". If autonegotiation is "On", all
188   three values are possible. If it is "Off", only "Full" and
189   "Half" are allowed.
190   It is usefull if your link partner does not support all
191   possible combinations.
192
193 - Flow Control
194   Parameter:    FlowCtrl_?
195   Values:       Sym, SymOrRem, LocSend, None
196   Default:      SymOrRem
197
198   This parameter can be used to set the flow control capabilities
199   that the port reports during autonegotiation.
200   The meaning of the different modes is:
201 -- Sym = Symetric: both link partners are allowed to send PAUSE frames
202 -- SymOrRem = SymetricOrRemote: both or only remote partner are allowed
203    to send PAUSE frames
204 -- LocSend = LocalSend: only local link partner is allowed to send
205    PAUSE frames
206 -- None: no link partner is allowed to send PAUSE frames
207   
208   NOTE: This parameter is ignored if autonegotiation is set to "Off".
209
210 - Role in Master-Slave-Negotiation (1000Base-T only).
211   Parameter:    Role_?
212   Values:       Auto, Master, Slave
213   Default:      Auto
214   
215   This parameter is only valid for the SK-9821 and SK-9822 adapters.
216   For two 1000Base-T ports to communicate, one must take the role as
217   master (providing timing information), while the other must be slave.
218   Normally, this is negotiated between the two ports during link 
219   establishment. If this should ever fail, you can force a port to a
220   specific setting with this parameter.
221   
222
223 5.2 Per-Adapter Parameters
224 --------------------------
225
226 - Preferred Port
227   Parameter:    PrefPort
228   Values:       A, B
229   Default:      A
230
231   This is used to force the preferred port to A or B (on two-port NICs).
232   The preferred port is the one that is used if both are detected as
233   fully functional.
234
235 - RLMT (Redundant Link Management Technology) Mode
236   Parameter:    RlmtMode
237   Values:       CheckLinkState,CheckLocalPort, CheckSeg, DualNet
238   Default:      CheckLinkState
239
240   RLMT (the driver part that decides which port to use) knows three
241   ways of checking if a port is available for use:
242
243 -- CheckLinkState = Check link state only: RLMT uses the link state
244    reported by the adapter hardware for each individual port to determine
245    whether a port can be used for all network traffic or not.
246
247 -- CheckLocalPort - Check other port on adapter: RLMT sends test frames
248    from each port to each other port and checks if they are received by
249    the other port, respectively. Thus, the ports must be connected to the
250    network such that LLC test frames can be exchanged between them
251    (i.e. there must be no routers between the ports).
252
253 -- CheckSeg - Check other port and segmentation: RLMT checks the other port
254    and in addition requests information from the Gigabit Ethernet
255    switch next to each port to see if the network is segmented between
256    the ports. Thus, this mode is only to be used if you have Gigabit
257    Ethernet switches installed in your network that have been configured
258    to use the Spanning Tree protocol.
259
260 -- DualNet - Both ports A and B are used as separate devices at the same
261    time. So if you have a dual port adapter, port A will show up as eth0
262    and port B as eth1. Both ports can be used independend with distinct
263    IP addresses.
264    The preferred port setting is not used. Rlmt is turned off.
265    
266
267   NOTE: The modes CheckLocalPort and CheckSeg are meant to operate in
268         configurations where a network path between the ports on one
269         adapter exists. Especially, they are not designed to work where
270         adapters are connected back-to-back.
271 ***
272
273
274 (6) LARGE FRAME SUPPORT
275 =======================
276
277 Large frames (also called jumbo frames) are now supported by the
278 driver. This can result in a greatly improved throughput if
279 transfering large amounts of data.
280 To enable large frames, set the MTU (maximum transfer unit)
281 of the interface to the value you wish (up to 9000). The command
282 for this is:
283   ifconfig eth0 mtu 9000
284 This will only work if you have two adapters connected back-to-back
285 or if you use a switch that supports large frames. When using a
286 switch, it should be configured to allow large frames, without
287 autonegotiating for them.
288 The setting must be done on all adapters that can be reached by
289 the large frames. If one adapter is not set to receive large frames,
290 it will simply drop them.
291
292 You can switch back to the standard ethernet frame size with:
293   ifconfig eth0 mtu 1500
294
295 To make this setting persitent, add a script with the 'ifconfig'
296 line to the system startup sequence (named something like "S99sk98lin"
297 in /etc/rc.d/rc2.d).
298 ***
299
300
301 (7) TROUBLESHOOTING
302 ===================
303
304 If you run into problems during installation, check those items:
305
306 Problem:  The SK-98xx adapter can not be found by the driver.
307 Reason:   Look in /proc/pci for the following entry:
308              'Ethernet controller: SysKonnect SK-98xx ...'
309           If this entry exists, then the SK-98xx adapter has been
310           found by the system and should be able to be used.
311           If this entry does not exist or if the file '/proc/pci'
312           is not there, then you may have a hardware problem or PCI
313           support may not be enabled in your kernel.
314           The adapter can be checked using the diagnostic program
315           which is available from the SysKonnect web site:
316               www.syskonnect.de
317           Some COMPAQ machines have a problem with PCI under
318           Linux. This is described in the 'PCI howto' document
319           (included in some distributions or available from the
320           www, e.g. at 'www.linux.org'). This might be fixed in the
321           2.2.x kernel series (I've not tested it).
322
323 Problem:  Programs such as 'ifconfig' or 'route' can not be found or
324           you get an error message 'Operation not permitted'.
325 Reason:   You are not logged in as user 'root'. Logout and 
326           login as root or change to root via 'su'.
327
328 Problem:  Using the command 'ping <address>', you get a message
329           "ping: sendto: Network is unreachable".
330 Reason:   Your route is not set up correct.
331           If you are using RedHat, you probably forgot
332           to set up the route in 'network configuration'.
333           Check the existing routes with the 'route' command
334           and check if there is an entry for 'eth0' and if
335           it is correct.
336
337 Problem:  The driver can be started, the adapter is connected
338           to the network, but you can not receive or transmit
339           any packet; e.g. 'ping' does not work.
340 Reason:   You have an incorrect route in your routing table.
341           Check the routing table with the command 'route' and
342           read the manual pages about route ('man route').
343 NOTE:     Although the 2.2.x kernel versions generate the routing
344           entry automatically, you may have problems of this kind
345           here, too. We found a case where the driver started correct
346           at system boot, but after removing and reloading the driver,
347           the route of the adapter's network pointed to the 'dummy0'
348           device and had to be corrected manually.
349           
350 Problem:  You want to use your computer as a router between
351           multiple IP subnetworks (using multiple adapters), but
352           you can not reach computers in other subnetworks.
353 Reason:   Either the router's kernel is not configured for IP
354           forwarding or there is a problem with the routing table
355           and gateway configuration in at least one of the
356           computers.
357
358 Problem:  At the start of the driver, you get an error message:
359           "eth0: -- ERROR --
360            Class: internal Software error
361            Nr: 0xcc
362            Msg: SkGeInitPort() cannot init running ports"
363 Reason:   You are using a driver compiled for single processor
364           machines on an multiprocessor machine with SMP (Symetric
365           MultiProcessor) kernel.
366           Configure your kernel appropriate and recompile the kernel or
367           the modules.
368
369 If your problem is not listed here, please contact SysKonnect's technical
370 support for help (linux@syskonnect.de).
371 When contacting our technical support, please ensure that the
372 following information is available:
373 - System Manufacturer and Model
374 - Boards in your system
375 - Distribution
376 - Kernel version
377 ***
378
379
380 (8) HISTORY
381 ===========
382
383 VERSION 4.02 (In-Kernel version)
384 New Features:
385 - Add Kernel 2.4 changes
386 Known limitations:
387 - None
388
389 VERSION 4.01 (In-Kernel version)
390 Problems fixed:
391 - Full statistics support for DualNet mode
392 Known limitations:
393 - None
394
395 VERSION 4.00 (In-Kernel version)
396 Problems fixed:
397 - Memory leak found 
398 New Features:
399 - Proc filesystem integration
400 - DualNet functionality integrated
401 - Rlmt networks added
402 Known limitations:
403 - statistics partially incorrect in DualNet mode
404
405 VERSION 3.04 (In-Kernel version)
406 Problems fixed:
407 - Driver start failed on UltraSPARC
408 - Rx checksum calculation for big endian machines did not work
409 - Jumbo frames were counted as input-errors in netstat
410
411 VERSION 3.03 (Standalone version)
412 Problems fixed:
413 - Compilation did not find script "printver.sh" if "." not in PATH
414 Known limitations:
415 - None
416
417 VERSION 3.02 (In-Kernel version)
418 Problems fixed:
419 - None
420 New Features:
421 - Integration in Linux kernel source (2.2.14 and 2.3.29) 
422 Known limitations:
423 - None
424
425 VERSION 3.01
426 Problems fixed:
427 - None
428 New Features:
429 - Full source release
430 Known limitations:
431 - None
432
433 VERSION 3.00
434 Problems fixed:
435 - None
436 New Features:
437 - Support for 1000Base-T adapters (SK-9821 and SK-9822)
438 Known limitations:
439 - None
440
441 VERSION 1.07
442 Problems fixed:
443 - RlmtMode parameter value strings were wrong (#10437)
444 - Driver sent too many RLMT frames (#10439)
445 - Driver did not recognize network segmentation (#10440)
446 - RLMT switched too often on segmented network (#10441)
447 Known limitations:
448 - None
449
450 VERSION 1.06
451 Problems fixed:
452 - System panic'ed after some time when running with 
453   RlmtMode=CheckOtherLink or RlmtMode=CheckSeg (#10421)
454   Panic message: "Kernel panic: skput: over ... dev: eth0"
455 - Driver did not switch back to default port when connected
456   back-to-back (#10422).
457 Changes:
458 - RlmtMode parameter names have changed
459 New features:
460 - There is now a version for ALPHA processors
461 Known limitations:
462 - None
463
464 VERSION 1.05
465 Problems fixed:
466 - Driver failed to load on kernels with version information
467   for module symbols enabled
468 Known limitations:
469 - None
470
471 VERSION 1.04
472 Problems fixed:
473 - Large frame support does work now (no autonegotiation
474   support for large frames, just manually selectable)
475 New Features:
476 - Receive checksumming in hardware
477 - Performance optimizations
478   Some numbers (on two PII-400 machines, back-to-back):
479   netpipe: 300 MBit/sec, with large frames: 470 MBit/sec
480   ttcp:  38 MByte/sec, with large frames: 60 MByte/sec
481   ttcp (UDP send): 66 MByte/sec, with large frames: 106 MByte/sec
482 Known limitations:
483 - None
484
485 VERSION 1.03
486 Problems fixed:
487 - Unloading with "rmmod" caused segmentation fault (#10415)
488 - The link LED flickered from time to time, if no link was
489   established (#10402)
490 - Installation problems with RedHat 6.0 (#10409)
491 New Features:
492 - Connection state ouput at "network connection up"
493 Known limitations:
494 - None
495
496 VERSION 1.02
497 Problems fixed:
498 - Failed with multiple adapters
499 - Failed with Single Port adapters
500 - Startup string was only displayed if adapter found
501 - No link could be established on certain switches when the switches were
502   rebooted. (#10377)
503 Known limitations:
504 - Segmentation fault at "rmmod" with kernel 2.2.3 on some machines
505
506 VERSION 1.01
507 Problems fixed:
508 - Sensor status was not set back to 'ok' after 'warning/error'. (#10386)
509 Changes:
510 - improved parallelism in driver
511
512 VERSION 1.00
513 Known limitations:
514 - not tested with all kernel versions (I don't have that much time :-)
515 - only x86 version available (if you need others, ask for it)
516 - source code not completely available
517
518 ***End of Readme File***
519
520