Merge with kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6.git/
[linux-2.6] / Documentation / networking / sk98lin.txt
1 (C)Copyright 1999-2004 Marvell(R).
2 All rights reserved
3 ===========================================================================
4
5 sk98lin.txt created 13-Feb-2004
6
7 Readme File for sk98lin v6.23
8 Marvell Yukon/SysKonnect SK-98xx Gigabit Ethernet Adapter family driver for LINUX
9
10 This file contains
11  1  Overview
12  2  Required Files
13  3  Installation
14     3.1  Driver Installation
15     3.2  Inclusion of adapter at system start
16  4  Driver Parameters
17     4.1  Per-Port Parameters
18     4.2  Adapter Parameters
19  5  Large Frame Support
20  6  VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
21  7  Troubleshooting
22
23 ===========================================================================
24
25
26 1  Overview
27 ===========
28
29 The sk98lin driver supports the Marvell Yukon and SysKonnect 
30 SK-98xx/SK-95xx compliant Gigabit Ethernet Adapter on Linux. It has 
31 been tested with Linux on Intel/x86 machines.
32 ***
33
34
35 2  Required Files
36 =================
37
38 The linux kernel source.
39 No additional files required.
40 ***
41
42
43 3  Installation
44 ===============
45
46 It is recommended to download the latest version of the driver from the 
47 SysKonnect web site www.syskonnect.com. If you have downloaded the latest
48 driver, the Linux kernel has to be patched before the driver can be 
49 installed. For details on how to patch a Linux kernel, refer to the 
50 patch.txt file.
51
52 3.1  Driver Installation
53 ------------------------
54
55 The following steps describe the actions that are required to install
56 the driver and to start it manually. These steps should be carried
57 out for the initial driver setup. Once confirmed to be ok, they can
58 be included in the system start.
59
60 NOTE 1: To perform the following tasks you need 'root' access.
61
62 NOTE 2: In case of problems, please read the section "Troubleshooting" 
63         below.
64
65 The driver can either be integrated into the kernel or it can be compiled 
66 as a module. Select the appropriate option during the kernel 
67 configuration.
68
69 Compile/use the driver as a module
70 ----------------------------------
71 To compile the driver, go to the directory /usr/src/linux and
72 execute the command "make menuconfig" or "make xconfig" and proceed as 
73 follows:
74
75 To integrate the driver permanently into the kernel, proceed as follows:
76
77 1. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
78 2. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support" 
79    with (*) 
80 3. Build a new kernel when the configuration of the above options is 
81    finished.
82 4. Install the new kernel.
83 5. Reboot your system.
84
85 To use the driver as a module, proceed as follows:
86
87 1. Enable 'loadable module support' in the kernel.
88 2. For automatic driver start, enable the 'Kernel module loader'.
89 3. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
90 4. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support" 
91    with (M)
92 5. Execute the command "make modules".
93 6. Execute the command "make modules_install".
94    The appropiate modules will be installed.
95 7. Reboot your system.
96
97
98 Load the module manually
99 ------------------------
100 To load the module manually, proceed as follows:
101
102 1. Enter "modprobe sk98lin".
103 2. If a Marvell Yukon or SysKonnect SK-98xx adapter is installed in 
104    your computer and you have a /proc file system, execute the command:
105    "ls /proc/net/sk98lin/" 
106    This should produce an output containing a line with the following 
107    format:
108    eth0   eth1  ...
109    which indicates that your adapter has been found and initialized.
110    
111    NOTE 1: If you have more than one Marvell Yukon or SysKonnect SK-98xx 
112            adapter installed, the adapters will be listed as 'eth0', 
113                    'eth1', 'eth2', etc.
114                    For each adapter, repeat steps 3 and 4 below.
115
116    NOTE 2: If you have other Ethernet adapters installed, your Marvell
117            Yukon or SysKonnect SK-98xx adapter will be mapped to the 
118                    next available number, e.g. 'eth1'. The mapping is executed 
119                    automatically.
120            The module installation message (displayed either in a system
121            log file or on the console) prints a line for each adapter 
122            found containing the corresponding 'ethX'.
123
124 3. Select an IP address and assign it to the respective adapter by 
125    entering:
126    ifconfig eth0 <ip-address>
127    With this command, the adapter is connected to the Ethernet. 
128    
129    SK-98xx Gigabit Ethernet Server Adapters: The yellow LED on the adapter 
130    is now active, the link status LED of the primary port is active and 
131    the link status LED of the secondary port (on dual port adapters) is 
132    blinking (if the ports are connected to a switch or hub).
133    SK-98xx V2.0 Gigabit Ethernet Adapters: The link status LED is active.
134    In addition, you will receive a status message on the console stating
135    "ethX: network connection up using port Y" and showing the selected 
136    connection parameters (x stands for the ethernet device number 
137    (0,1,2, etc), y stands for the port name (A or B)).
138
139    NOTE: If you are in doubt about IP addresses, ask your network
140          administrator for assistance.
141   
142 4. Your adapter should now be fully operational.
143    Use 'ping <otherstation>' to verify the connection to other computers 
144    on your network.
145 5. To check the adapter configuration view /proc/net/sk98lin/[devicename].
146    For example by executing:    
147    "cat /proc/net/sk98lin/eth0" 
148
149 Unload the module
150 -----------------
151 To stop and unload the driver modules, proceed as follows:
152
153 1. Execute the command "ifconfig eth0 down".
154 2. Execute the command "rmmod sk98lin".
155
156 3.2  Inclusion of adapter at system start
157 -----------------------------------------
158
159 Since a large number of different Linux distributions are 
160 available, we are unable to describe a general installation procedure
161 for the driver module.
162 Because the driver is now integrated in the kernel, installation should
163 be easy, using the standard mechanism of your distribution.
164 Refer to the distribution's manual for installation of ethernet adapters.
165
166 ***
167
168 4  Driver Parameters
169 ====================
170
171 Parameters can be set at the command line after the module has been 
172 loaded with the command 'modprobe'.
173 In some distributions, the configuration tools are able to pass parameters
174 to the driver module.
175
176 If you use the kernel module loader, you can set driver parameters
177 in the file /etc/modprobe.conf (or /etc/modules.conf in 2.4 or earlier).
178 To set the driver parameters in this file, proceed as follows:
179
180 1. Insert a line of the form :
181    options sk98lin ...
182    For "...", the same syntax is required as described for the command
183    line paramaters of modprobe below.
184 2. To activate the new parameters, either reboot your computer
185    or 
186    unload and reload the driver.
187    The syntax of the driver parameters is:
188
189         modprobe sk98lin parameter=value1[,value2[,value3...]]
190
191    where value1 refers to the first adapter, value2 to the second etc.
192
193 NOTE: All parameters are case sensitive. Write them exactly as shown 
194       below.
195
196 Example:
197 Suppose you have two adapters. You want to set auto-negotiation
198 on the first adapter to ON and on the second adapter to OFF.
199 You also want to set DuplexCapabilities on the first adapter
200 to FULL, and on the second adapter to HALF.
201 Then, you must enter:
202
203         modprobe sk98lin AutoNeg_A=On,Off DupCap_A=Full,Half
204
205 NOTE: The number of adapters that can be configured this way is
206       limited in the driver (file skge.c, constant SK_MAX_CARD_PARAM).
207       The current limit is 16. If you happen to install
208       more adapters, adjust this and recompile.
209
210
211 4.1  Per-Port Parameters
212 ------------------------
213
214 These settings are available for each port on the adapter.
215 In the following description, '?' stands for the port for
216 which you set the parameter (A or B).
217
218 Speed
219 -----
220 Parameter:    Speed_?
221 Values:       10, 100, 1000, Auto
222 Default:      Auto
223
224 This parameter is used to set the speed capabilities. It is only valid 
225 for the SK-98xx V2.0 copper adapters.
226 Usually, the speed is negotiated between the two ports during link 
227 establishment. If this fails, a port can be forced to a specific setting
228 with this parameter.
229
230 Auto-Negotiation
231 ----------------
232 Parameter:    AutoNeg_?
233 Values:       On, Off, Sense
234 Default:      On
235   
236 The "Sense"-mode automatically detects whether the link partner supports
237 auto-negotiation or not.
238
239 Duplex Capabilities
240 -------------------
241 Parameter:    DupCap_?
242 Values:       Half, Full, Both
243 Default:      Both
244
245 This parameters is only relevant if auto-negotiation for this port is 
246 not set to "Sense". If auto-negotiation is set to "On", all three values
247 are possible. If it is set to "Off", only "Full" and "Half" are allowed.
248 This parameter is usefull if your link partner does not support all
249 possible combinations.
250
251 Flow Control
252 ------------
253 Parameter:    FlowCtrl_?
254 Values:       Sym, SymOrRem, LocSend, None
255 Default:      SymOrRem
256
257 This parameter can be used to set the flow control capabilities the 
258 port reports during auto-negotiation. It can be set for each port 
259 individually.
260 Possible modes:
261    -- Sym      = Symmetric: both link partners are allowed to send 
262                   PAUSE frames
263    -- SymOrRem = SymmetricOrRemote: both or only remote partner 
264                   are allowed to send PAUSE frames
265    -- LocSend  = LocalSend: only local link partner is allowed 
266                   to send PAUSE frames
267    -- None     = no link partner is allowed to send PAUSE frames
268   
269 NOTE: This parameter is ignored if auto-negotiation is set to "Off".
270
271 Role in Master-Slave-Negotiation (1000Base-T only)
272 --------------------------------------------------
273 Parameter:    Role_?
274 Values:       Auto, Master, Slave
275 Default:      Auto
276
277 This parameter is only valid for the SK-9821 and SK-9822 adapters.
278 For two 1000Base-T ports to communicate, one must take the role of the
279 master (providing timing information), while the other must be the 
280 slave. Usually, this is negotiated between the two ports during link 
281 establishment. If this fails, a port can be forced to a specific setting
282 with this parameter.
283
284
285 4.2  Adapter Parameters
286 -----------------------
287
288 Connection Type (SK-98xx V2.0 copper adapters only)
289 ---------------
290 Parameter:    ConType
291 Values:       Auto, 100FD, 100HD, 10FD, 10HD
292 Default:      Auto
293
294 The parameter 'ConType' is a combination of all five per-port parameters
295 within one single parameter. This simplifies the configuration of both ports
296 of an adapter card! The different values of this variable reflect the most 
297 meaningful combinations of port parameters.
298
299 The following table shows the values of 'ConType' and the corresponding
300 combinations of the per-port parameters:
301
302     ConType   |  DupCap   AutoNeg   FlowCtrl   Role             Speed
303     ----------+------------------------------------------------------
304     Auto      |  Both     On        SymOrRem   Auto             Auto
305     100FD     |  Full     Off       None       Auto (ignored)   100
306     100HD     |  Half     Off       None       Auto (ignored)   100
307     10FD      |  Full     Off       None       Auto (ignored)   10
308     10HD      |  Half     Off       None       Auto (ignored)   10
309
310 Stating any other port parameter together with this 'ConType' variable
311 will result in a merged configuration of those settings. This due to 
312 the fact, that the per-port parameters (e.g. Speed_? ) have a higher
313 priority than the combined variable 'ConType'.
314
315 NOTE: This parameter is always used on both ports of the adapter card.
316
317 Interrupt Moderation
318 --------------------
319 Parameter:    Moderation
320 Values:       None, Static, Dynamic
321 Default:      None
322
323 Interrupt moderation is employed to limit the maxmimum number of interrupts
324 the driver has to serve. That is, one or more interrupts (which indicate any
325 transmit or receive packet to be processed) are queued until the driver 
326 processes them. When queued interrupts are to be served, is determined by the
327 'IntsPerSec' parameter, which is explained later below.
328
329 Possible modes:
330
331    -- None - No interrupt moderation is applied on the adapter card. 
332       Therefore, each transmit or receive interrupt is served immediately
333       as soon as it appears on the interrupt line of the adapter card.
334
335    -- Static - Interrupt moderation is applied on the adapter card. 
336       All transmit and receive interrupts are queued until a complete
337       moderation interval ends. If such a moderation interval ends, all
338       queued interrupts are processed in one big bunch without any delay.
339       The term 'static' reflects the fact, that interrupt moderation is
340       always enabled, regardless how much network load is currently 
341       passing via a particular interface. In addition, the duration of
342       the moderation interval has a fixed length that never changes while
343       the driver is operational.
344
345    -- Dynamic - Interrupt moderation might be applied on the adapter card,
346       depending on the load of the system. If the driver detects that the
347       system load is too high, the driver tries to shield the system against 
348       too much network load by enabling interrupt moderation. If - at a later
349       time - the CPU utilizaton decreases again (or if the network load is 
350       negligible) the interrupt moderation will automatically be disabled.
351
352 Interrupt moderation should be used when the driver has to handle one or more
353 interfaces with a high network load, which - as a consequence - leads also to a
354 high CPU utilization. When moderation is applied in such high network load 
355 situations, CPU load might be reduced by 20-30%.
356
357 NOTE: The drawback of using interrupt moderation is an increase of the round-
358 trip-time (RTT), due to the queueing and serving of interrupts at dedicated
359 moderation times.
360
361 Interrupts per second
362 ---------------------
363 Parameter:    IntsPerSec
364 Values:       30...40000 (interrupts per second)
365 Default:      2000
366
367 This parameter is only used, if either static or dynamic interrupt moderation
368 is used on a network adapter card. Using this paramter if no moderation is
369 applied, will lead to no action performed.
370
371 This parameter determines the length of any interrupt moderation interval. 
372 Assuming that static interrupt moderation is to be used, an 'IntsPerSec' 
373 parameter value of 2000 will lead to an interrupt moderation interval of
374 500 microseconds. 
375
376 NOTE: The duration of the moderation interval is to be chosen with care.
377 At first glance, selecting a very long duration (e.g. only 100 interrupts per 
378 second) seems to be meaningful, but the increase of packet-processing delay 
379 is tremendous. On the other hand, selecting a very short moderation time might
380 compensate the use of any moderation being applied.
381
382
383 Preferred Port
384 --------------
385 Parameter:    PrefPort
386 Values:       A, B
387 Default:      A
388
389 This is used to force the preferred port to A or B (on dual-port network 
390 adapters). The preferred port is the one that is used if both are detected
391 as fully functional.
392
393 RLMT Mode (Redundant Link Management Technology)
394 ------------------------------------------------
395 Parameter:    RlmtMode
396 Values:       CheckLinkState,CheckLocalPort, CheckSeg, DualNet
397 Default:      CheckLinkState
398
399 RLMT monitors the status of the port. If the link of the active port 
400 fails, RLMT switches immediately to the standby link. The virtual link is 
401 maintained as long as at least one 'physical' link is up. 
402
403 Possible modes:
404
405    -- CheckLinkState - Check link state only: RLMT uses the link state
406       reported by the adapter hardware for each individual port to 
407       determine whether a port can be used for all network traffic or 
408       not.
409
410    -- CheckLocalPort - In this mode, RLMT monitors the network path 
411       between the two ports of an adapter by regularly exchanging packets
412       between them. This mode requires a network configuration in which 
413       the two ports are able to "see" each other (i.e. there must not be 
414       any router between the ports).
415
416    -- CheckSeg - Check local port and segmentation: This mode supports the
417       same functions as the CheckLocalPort mode and additionally checks 
418       network segmentation between the ports. Therefore, this mode is only
419       to be used if Gigabit Ethernet switches are installed on the network
420       that have been configured to use the Spanning Tree protocol. 
421
422    -- DualNet - In this mode, ports A and B are used as separate devices. 
423       If you have a dual port adapter, port A will be configured as eth0 
424       and port B as eth1. Both ports can be used independently with 
425       distinct IP addresses. The preferred port setting is not used. 
426       RLMT is turned off.
427    
428 NOTE: RLMT modes CLP and CLPSS are designed to operate in configurations 
429       where a network path between the ports on one adapter exists. 
430       Moreover, they are not designed to work where adapters are connected
431       back-to-back.
432 ***
433
434
435 5  Large Frame Support
436 ======================
437
438 The driver supports large frames (also called jumbo frames). Using large 
439 frames can result in an improved throughput if transferring large amounts 
440 of data.
441 To enable large frames, set the MTU (maximum transfer unit) of the 
442 interface to the desired value (up to 9000), execute the following 
443 command:
444       ifconfig eth0 mtu 9000
445 This will only work if you have two adapters connected back-to-back
446 or if you use a switch that supports large frames. When using a switch, 
447 it should be configured to allow large frames and auto-negotiation should  
448 be set to OFF. The setting must be configured on all adapters that can be 
449 reached by the large frames. If one adapter is not set to receive large 
450 frames, it will simply drop them.
451
452 You can switch back to the standard ethernet frame size by executing the 
453 following command:
454       ifconfig eth0 mtu 1500
455
456 To permanently configure this setting, add a script with the 'ifconfig' 
457 line to the system startup sequence (named something like "S99sk98lin" 
458 in /etc/rc.d/rc2.d).
459 ***
460
461
462 6  VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
463 ==================================================================
464
465 The Marvell Yukon/SysKonnect Linux drivers are able to support VLAN and 
466 Link Aggregation according to IEEE standards 802.1, 802.1q, and 802.3ad. 
467 These features are only available after installation of open source 
468 modules available on the Internet:
469 For VLAN go to: http://www.candelatech.com/~greear/vlan.html
470 For Link Aggregation go to: http://www.st.rim.or.jp/~yumo
471
472 NOTE: SysKonnect GmbH does not offer any support for these open source 
473       modules and does not take the responsibility for any kind of 
474       failures or problems arising in connection with these modules.
475
476 NOTE: Configuring Link Aggregation on a SysKonnect dual link adapter may 
477       cause problems when unloading the driver.
478
479
480 7  Troubleshooting
481 ==================
482
483 If any problems occur during the installation process, check the 
484 following list:
485
486
487 Problem:  The SK-98xx adapter can not be found by the driver.
488 Solution: In /proc/pci search for the following entry:
489              'Ethernet controller: SysKonnect SK-98xx ...'
490           If this entry exists, the SK-98xx or SK-98xx V2.0 adapter has 
491           been found by the system and should be operational.
492           If this entry does not exist or if the file '/proc/pci' is not 
493           found, there may be a hardware problem or the PCI support may 
494           not be enabled in your kernel.
495           The adapter can be checked using the diagnostics program which 
496           is available on the SysKonnect web site:
497           www.syskonnect.com
498           
499           Some COMPAQ machines have problems dealing with PCI under Linux.
500           Linux. This problem is described in the 'PCI howto' document
501           (included in some distributions or available from the
502           web, e.g. at 'www.linux.org'). 
503
504
505 Problem:  Programs such as 'ifconfig' or 'route' can not be found or the 
506           error message 'Operation not permitted' is displayed.
507 Reason:   You are not logged in as user 'root'.
508 Solution: Logout and login as 'root' or change to 'root' via 'su'.
509
510
511 Problem:  Upon use of the command 'ping <address>' the message
512           "ping: sendto: Network is unreachable" is displayed.
513 Reason:   Your route is not set correctly.
514 Solution: If you are using RedHat, you probably forgot to set up the 
515           route in the 'network configuration'.
516           Check the existing routes with the 'route' command and check 
517           if an entry for 'eth0' exists, and if so, if it is set correctly.
518
519
520 Problem:  The driver can be started, the adapter is connected to the 
521           network, but you cannot receive or transmit any packets; 
522           e.g. 'ping' does not work.
523 Reason:   There is an incorrect route in your routing table.
524 Solution: Check the routing table with the command 'route' and read the 
525           manual help pages dealing with routes (enter 'man route').
526
527 NOTE: Although the 2.2.x kernel versions generate the routing entry 
528       automatically, problems of this kind may occur here as well. We've 
529       come across a situation in which the driver started correctly at 
530       system start, but after the driver has been removed and reloaded,
531       the route of the adapter's network pointed to the 'dummy0'device 
532       and had to be corrected manually.
533
534
535 Problem:  Your computer should act as a router between multiple 
536           IP subnetworks (using multiple adapters), but computers in 
537           other subnetworks cannot be reached.
538 Reason:   Either the router's kernel is not configured for IP forwarding 
539           or the routing table and gateway configuration of at least one 
540           computer is not working.
541
542 Problem:  Upon driver start, the following error message is displayed:
543           "eth0: -- ERROR --
544           Class: internal Software error
545           Nr:    0xcc
546           Msg:   SkGeInitPort() cannot init running ports"
547 Reason:   You are using a driver compiled for single processor machines 
548           on a multiprocessor machine with SMP (Symmetric MultiProcessor) 
549           kernel.
550 Solution: Configure your kernel appropriately and recompile the kernel or
551           the modules.
552
553
554
555 If your problem is not listed here, please contact SysKonnect's technical
556 support for help (linux@syskonnect.de).
557 When contacting our technical support, please ensure that the following 
558 information is available:
559 - System Manufacturer and HW Informations (CPU, Memory... )
560 - PCI-Boards in your system
561 - Distribution
562 - Kernel version
563 - Driver version
564 ***
565
566
567
568 ***End of Readme File***