1 (C)Copyright 1999-2003 Marvell(R).
3 ===========================================================================
5 sk98lin.txt created 18-Jul-2003
7 Readme File for sk98lin v6.14
8 Marvell Yukon/SysKonnect SK-98xx Gigabit Ethernet Adapter family driver for LINUX
14 3.1 Driver Installation
15 3.2 Inclusion of adapter at system start
17 4.1 Per-Port Parameters
18 4.2 Adapter Parameters
20 6 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
24 ===========================================================================
30 The sk98lin driver supports the Marvell Yukon and SysKonnect
31 SK-98xx/SK-95xx compliant Gigabit Ethernet Adapter on Linux. It has
32 been tested with Linux on Intel/x86 machines.
39 The linux kernel source.
40 No additional files required.
47 It is recommended to download the latest version of the driver from the
48 SysKonnect web site www.syskonnect.com. If you have downloaded the latest
49 driver, the Linux kernel has to be patched before the driver can be
50 installed. For details on how to patch a Linux kernel, refer to the
53 3.1 Driver Installation
54 ------------------------
56 The following steps describe the actions that are required to install
57 the driver and to start it manually. These steps should be carried
58 out for the initial driver setup. Once confirmed to be ok, they can
59 be included in the system start.
61 NOTE 1: To perform the following tasks you need 'root' access.
63 NOTE 2: In case of problems, please read the section "Troubleshooting"
66 The driver can either be integrated into the kernel or it can be compiled
67 as a module. Select the appropriate option during the kernel
70 Compile/use the driver as a module
71 ----------------------------------
72 To compile the driver, go to the directory /usr/src/linux and
73 execute the command "make menuconfig" or "make xconfig" and proceed as
76 To integrate the driver permanently into the kernel, proceed as follows:
78 1. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
79 2. Mark "Marvell Yukon/SysKonnect SK-98xx/SK-95xx Gigabit Ethernet Adapter
81 3. Build a new kernel when the configuration of the above options is
83 4. Install the new kernel.
84 5. Reboot your system.
86 To use the driver as a module, proceed as follows:
88 1. Enable 'loadable module support' in the kernel.
89 2. For automatic driver start, enable the 'Kernel module loader'.
90 3. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
91 4. Mark "Marvell Yukon/SysKonnect SK-98xx/SK-95xx Gigabit Ethernet Adapter
93 5. Execute the command "make modules".
94 6. Execute the command "make modules_install".
95 The appropiate modules will be installed.
96 7. Reboot your system.
99 Load the module manually
100 ------------------------
101 To load the module manually, proceed as follows:
103 1. Enter "modprobe sk98lin".
104 2. If a Marvell Yukon or SysKonnect SK-98xx adapter is installed in
105 your computer and you have a /proc file system, execute the command:
106 "ls /proc/net/sk98lin/"
107 This should produce an output containing a line with the following
110 which indicates that your adapter has been found and initialized.
112 NOTE 1: If you have more than one Marvell Yukon or SysKonnect SK-98xx
113 adapter installed, the adapters will be listed as 'eth0',
115 For each adapter, repeat steps 3 and 4 below.
117 NOTE 2: If you have other Ethernet adapters installed, your Marvell
118 Yukon or SysKonnect SK-98xx adapter will be mapped to the
119 next available number, e.g. 'eth1'. The mapping is executed
121 The module installation message (displayed either in a system
122 log file or on the console) prints a line for each adapter
123 found containing the corresponding 'ethX'.
125 3. Select an IP address and assign it to the respective adapter by
127 ifconfig eth0 <ip-address>
128 With this command, the adapter is connected to the Ethernet.
130 SK-98xx Gigabit Ethernet Server Adapters: The yellow LED on the adapter
131 is now active, the link status LED of the primary port is active and
132 the link status LED of the secondary port (on dual port adapters) is
133 blinking (if the ports are connected to a switch or hub).
134 SK-98xx V2.0 Gigabit Ethernet Adapters: The link status LED is active.
135 In addition, you will receive a status message on the console stating
136 "ethX: network connection up using port Y" and showing the selected
137 connection parameters (x stands for the ethernet device number
138 (0,1,2, etc), y stands for the port name (A or B)).
140 NOTE: If you are in doubt about IP addresses, ask your network
141 administrator for assistance.
143 4. Your adapter should now be fully operational.
144 Use 'ping <otherstation>' to verify the connection to other computers
146 5. To check the adapter configuration view /proc/net/sk98lin/[devicename].
147 For example by executing:
148 "cat /proc/net/sk98lin/eth0"
152 To stop and unload the driver modules, proceed as follows:
154 1. Execute the command "ifconfig eth0 down".
155 2. Execute the command "rmmod sk98lin".
157 3.2 Inclusion of adapter at system start
158 -----------------------------------------
160 Since a large number of different Linux distributions are
161 available, we are unable to describe a general installation procedure
162 for the driver module.
163 Because the driver is now integrated in the kernel, installation should
164 be easy, using the standard mechanism of your distribution.
165 Refer to the distribution's manual for installation of ethernet adapters.
172 Parameters can be set at the command line after the module has been
173 loaded with the command 'modprobe'.
174 In some distributions, the configuration tools are able to pass parameters
175 to the driver module.
177 If you use the kernel module loader, you can set driver parameters
178 in the file /etc/modules.conf (or old name: /etc/conf.modules).
179 To set the driver parameters in this file, proceed as follows:
181 1. Insert a line of the form :
183 For "...", the same syntax is required as described for the command
184 line paramaters of modprobe below.
185 2. To activate the new parameters, either reboot your computer
187 unload and reload the driver.
188 The syntax of the driver parameters is:
190 modprobe sk98lin parameter=value1[,value2[,value3...]]
192 where value1 refers to the first adapter, value2 to the second etc.
194 NOTE: All parameters are case sensitive. Write them exactly as shown
198 Suppose you have two adapters. You want to set auto-negotiation
199 on the first adapter to ON and on the second adapter to OFF.
200 You also want to set DuplexCapabilities on the first adapter
201 to FULL, and on the second adapter to HALF.
202 Then, you must enter:
204 modprobe sk98lin AutoNeg=On,Off DupCap=Full,Half
206 NOTE: The number of adapters that can be configured this way is
207 limited in the driver (file skge.c, constant SK_MAX_CARD_PARAM).
208 The current limit is 16. If you happen to install
209 more adapters, adjust this and recompile.
212 4.1 Per-Port Parameters
213 ------------------------
215 These settings are available for each port on the adapter.
216 In the following description, '?' stands for the port for
217 which you set the parameter (A or B).
222 Values: 10, 100, 1000, Auto
225 This parameter is used to set the speed capabilities. It is only valid
226 for the SK-98xx V2.0 copper adapters.
227 Usually, the speed is negotiated between the two ports during link
228 establishment. If this fails, a port can be forced to a specific setting
234 Values: On, Off, Sense
237 The "Sense"-mode automatically detects whether the link partner supports
238 auto-negotiation or not.
243 Values: Half, Full, Both
246 This parameters is only relevant if auto-negotiation for this port is
247 not set to "Sense". If auto-negotiation is set to "On", all three values
248 are possible. If it is set to "Off", only "Full" and "Half" are allowed.
249 This parameter is usefull if your link partner does not support all
250 possible combinations.
254 Parameter: FlowCtrl_?
255 Values: Sym, SymOrRem, LocSend, None
258 This parameter can be used to set the flow control capabilities the
259 port reports during auto-negotiation. It can be set for each port
262 -- Sym = Symetric: both link partners are allowed to send
264 -- SymOrRem = SymetricOrRemote: both or only remote partner
265 are allowed to send PAUSE frames
266 -- LocSend = LocalSend: only local link partner is allowed
268 -- None = no link partner is allowed to send PAUSE frames
270 NOTE: This parameter is ignored if auto-negotiation is set to "Off".
272 Role in Master-Slave-Negotiation (1000Base-T only)
273 --------------------------------------------------
275 Values: Auto, Master, Slave
278 This parameter is only valid for the SK-9821 and SK-9822 adapters.
279 For two 1000Base-T ports to communicate, one must take the role of the
280 master (providing timing information), while the other must be the
281 slave. Usually, this is negotiated between the two ports during link
282 establishment. If this fails, a port can be forced to a specific setting
286 4.2 Adapter Parameters
287 -----------------------
292 Values: Auto, 100FD, 100HD, 10FD, 10HD
295 The parameter 'ConType' is a combination of all five per-port parameters
296 within one single parameter. This simplifies the configuration of both ports
297 of an adapter card! The different values of this variable reflect the most
298 meaningful combinations of port parameters.
300 The following table shows the values of 'ConType' and the corresponding
301 combinations of the per-port parameters:
303 ConType | DupCap AutoNeg FlowCtrl Role Speed
304 ----------+------------------------------------------------------
305 Auto | Both On SymOrRem Auto Auto
306 100FD | Full Off None Auto (ignored) 100
307 100HD | Half Off None Auto (ignored) 100
308 10FD | Full Off None Auto (ignored) 10
309 10HD | Half Off None Auto (ignored) 10
311 Stating any other port parameter together with this 'ConType' variable
312 will result in a merged configuration of those settings. This due to
313 the fact, that the per-port parameters (e.g. Speed_? ) have a higher
314 priority than the combined variable 'ConType'.
316 NOTE: This parameter is always used on both ports of the adapter card.
320 Parameter: Moderation
321 Values: None, Static, Dynamic
324 Interrupt moderation is employed to limit the maxmimum number of interrupts
325 the driver has to serve. That is, one or more interrupts (which indicate any
326 transmit or receive packet to be processed) are queued until the driver
327 processes them. When queued interrupts are to be served, is determined by the
328 'IntsPerSec' parameter, which is explained later below.
332 -- None - No interrupt moderation is applied on the adapter card.
333 Therefore, each transmit or receive interrupt is served immediately
334 as soon as it appears on the interrupt line of the adapter card.
336 -- Static - Interrupt moderation is applied on the adapter card.
337 All transmit and receive interrupts are queued until a complete
338 moderation interval ends. If such a moderation interval ends, all
339 queued interrupts are processed in one big bunch without any delay.
340 The term 'static' reflects the fact, that interrupt moderation is
341 always enabled, regardless how much network load is currently
342 passing via a particular interface. In addition, the duration of
343 the moderation interval has a fixed length that never changes while
344 the driver is operational.
346 -- Dynamic - Interrupt moderation might be applied on the adapter card,
347 depending on the load of the system. If the driver detects that the
348 system load is too high, the driver tries to shield the system against
349 too much network load by enabling interrupt moderation. If - at a later
350 time - the CPU utilizaton decreases again (or if the network load is
351 negligible) the interrupt moderation will automatically be disabled.
353 Interrupt moderation should be used when the driver has to handle one or more
354 interfaces with a high network load, which - as a consequence - leads also to a
355 high CPU utilization. When moderation is applied in such high network load
356 situations, CPU load might be reduced by 20-30%.
358 NOTE: The drawback of using interrupt moderation is an increase of the round-
359 trip-time (RTT), due to the queueing and serving of interrupts at dedicated
362 Interrupts per second
363 ---------------------
364 Parameter: IntsPerSec
365 Values: 30...40000 (interrupts per second)
368 This parameter is only used, if either static or dynamic interrupt moderation
369 is used on a network adapter card. Using this paramter if no moderation is
370 applied, will lead to no action performed.
372 This parameter determines the length of any interrupt moderation interval.
373 Assuming that static interrupt moderation is to be used, an 'IntsPerSec'
374 parameter value of 2000 will lead to an interrupt moderation interval of
377 NOTE: The duration of the moderation interval is to be chosen with care.
378 At first glance, selecting a very long duration (e.g. only 100 interrupts per
379 second) seems to be meaningful, but the increase of packet-processing delay
380 is tremendous. On the other hand, selecting a very short moderation time might
381 compensate the use of any moderation being applied.
390 This is used to force the preferred port to A or B (on dual-port network
391 adapters). The preferred port is the one that is used if both are detected
394 RLMT Mode (Redundant Link Management Technology)
395 ------------------------------------------------
397 Values: CheckLinkState,CheckLocalPort, CheckSeg, DualNet
398 Default: CheckLinkState
400 RLMT monitors the status of the port. If the link of the active port
401 fails, RLMT switches immediately to the standby link. The virtual link is
402 maintained as long as at least one 'physical' link is up.
406 -- CheckLinkState - Check link state only: RLMT uses the link state
407 reported by the adapter hardware for each individual port to
408 determine whether a port can be used for all network traffic or
411 -- CheckLocalPort - In this mode, RLMT monitors the network path
412 between the two ports of an adapter by regularly exchanging packets
413 between them. This mode requires a network configuration in which
414 the two ports are able to "see" each other (i.e. there must not be
415 any router between the ports).
417 -- CheckSeg - Check local port and segmentation: This mode supports the
418 same functions as the CheckLocalPort mode and additionally checks
419 network segmentation between the ports. Therefore, this mode is only
420 to be used if Gigabit Ethernet switches are installed on the network
421 that have been configured to use the Spanning Tree protocol.
423 -- DualNet - In this mode, ports A and B are used as separate devices.
424 If you have a dual port adapter, port A will be configured as eth0
425 and port B as eth1. Both ports can be used independently with
426 distinct IP addresses. The preferred port setting is not used.
429 NOTE: RLMT modes CLP and CLPSS are designed to operate in configurations
430 where a network path between the ports on one adapter exists.
431 Moreover, they are not designed to work where adapters are connected
436 5 Large Frame Support
437 ======================
439 The driver supports large frames (also called jumbo frames). Using large
440 frames can result in an improved throughput if transferring large amounts
442 To enable large frames, set the MTU (maximum transfer unit) of the
443 interface to the desired value (up to 9000), execute the following
445 ifconfig eth0 mtu 9000
446 This will only work if you have two adapters connected back-to-back
447 or if you use a switch that supports large frames. When using a switch,
448 it should be configured to allow large frames and auto-negotiation should
449 be set to OFF. The setting must be configured on all adapters that can be
450 reached by the large frames. If one adapter is not set to receive large
451 frames, it will simply drop them.
453 You can switch back to the standard ethernet frame size by executing the
455 ifconfig eth0 mtu 1500
457 To permanently configure this setting, add a script with the 'ifconfig'
458 line to the system startup sequence (named something like "S99sk98lin"
463 6 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
464 ==================================================================
466 The Marvell Yukon/SysKonnect Linux drivers are able to support VLAN and
467 Link Aggregation according to IEEE standards 802.1, 802.1q, and 802.3ad.
468 These features are only available after installation of open source
469 modules available on the Internet:
470 For VLAN go to: http://scry.wanfear.com/~greear/vlan.html
471 For Link Aggregation go to: http://www.st.rim.or.jp/~yumo
473 NOTE: SysKonnect GmbH does not offer any support for these open source
474 modules and does not take the responsibility for any kind of
475 failures or problems arising in connection with these modules.
477 NOTE: Configuring Link Aggregation on a SysKonnect dual link adapter may
478 cause problems when unloading the driver.
484 If any problems occur during the installation process, check the
488 Problem: The SK-98xx adapter can not be found by the driver.
489 Solution: In /proc/pci search for the following entry:
490 'Ethernet controller: SysKonnect SK-98xx ...'
491 If this entry exists, the SK-98xx or SK-98xx V2.0 adapter has
492 been found by the system and should be operational.
493 If this entry does not exist or if the file '/proc/pci' is not
494 found, there may be a hardware problem or the PCI support may
495 not be enabled in your kernel.
496 The adapter can be checked using the diagnostics program which
497 is available on the SysKonnect web site:
500 Some COMPAQ machines have problems dealing with PCI under Linux.
501 Linux. This problem is described in the 'PCI howto' document
502 (included in some distributions or available from the
503 web, e.g. at 'www.linux.org').
506 Problem: Programs such as 'ifconfig' or 'route' can not be found or the
507 error message 'Operation not permitted' is displayed.
508 Reason: You are not logged in as user 'root'.
509 Solution: Logout and login as 'root' or change to 'root' via 'su'.
512 Problem: Upon use of the command 'ping <address>' the message
513 "ping: sendto: Network is unreachable" is displayed.
514 Reason: Your route is not set correctly.
515 Solution: If you are using RedHat, you probably forgot to set up the
516 route in the 'network configuration'.
517 Check the existing routes with the 'route' command and check
518 if an entry for 'eth0' exists, and if so, if it is set correctly.
521 Problem: The driver can be started, the adapter is connected to the
522 network, but you cannot receive or transmit any packets;
523 e.g. 'ping' does not work.
524 Reason: There is an incorrect route in your routing table.
525 Solution: Check the routing table with the command 'route' and read the
526 manual help pages dealing with routes (enter 'man route').
528 NOTE: Although the 2.2.x kernel versions generate the routing entry
529 automatically, problems of this kind may occur here as well. We've
530 come across a situation in which the driver started correctly at
531 system start, but after the driver has been removed and reloaded,
532 the route of the adapter's network pointed to the 'dummy0'device
533 and had to be corrected manually.
536 Problem: Your computer should act as a router between multiple
537 IP subnetworks (using multiple adapters), but computers in
538 other subnetworks cannot be reached.
539 Reason: Either the router's kernel is not configured for IP forwarding
540 or the routing table and gateway configuration of at least one
541 computer is not working.
543 Problem: Upon driver start, the following error message is displayed:
545 Class: internal Software error
547 Msg: SkGeInitPort() cannot init running ports"
548 Reason: You are using a driver compiled for single processor machines
549 on a multiprocessor machine with SMP (Symetric MultiProcessor)
551 Solution: Configure your kernel appropriately and recompile the kernel or
556 If your problem is not listed here, please contact SysKonnect's technical
557 support for help (linux@syskonnect.de).
558 When contacting our technical support, please ensure that the following
559 information is available:
560 - System Manufacturer and HW Informations (CPU, Memory... )
561 - PCI-Boards in your system
574 - Fix: memory leak when sending short padded frames
575 - Fix: helptext for menuconfig in kernel 2.6 updated
576 - Fix: PNMI_READ defines retrieve correct amount of bytes
582 - New parameter ConType combining different per-port parameters
584 - Fix: change of MTU-size without warning (bugreport #10721)
585 - Fix: HW checksumming when Kernel 2.5/2.6 corrected
586 - Fix: Padding of small packets (<60 bytes) not 0xaa, but 0x00 instead
587 - Fix: Minor edits corrected
588 - Fix: Obsolete function SetQueueSize() removed
589 - Fix: Removed proprietary defines - used defines from skgehw.h instead
595 - enabling/disabling checksum
597 - Fix: KLM load/unload using new refcount interface for Kernel 2.5/2.6
601 VERSION 6.11 (In-Kernel version)
603 - Support for Kernel 2.5/2.6
604 - Support for new IO-control MIB data structure
605 - New SkOsGetTime function
607 - Fix: Race condition with broken LM80 chip
608 - Fix: Common modules update (#10803, #10768, #10767)
609 - Fix: Dim, ProcFS, Isr, Module Support changes for Kernel 2.5/2.6
617 - Fix: Race condition with padded frames
625 - Fix: Disabled HW Error IRQ on 32-bit Yukon if sensor IRQ occurs
626 - Fix: Delay race condition with some server machines
632 - Add: Dynamic Interrupt moderation
633 - Add: Blink mode verification
642 - Common modules update
650 - Common modules update
652 - Remove useless init_module/cleanup_module forward declarations
656 VERSION 6.02 (In-Kernel version)
658 - Common modules update
660 - Boot message cleanup
664 VERSION 6.00 (In-Kernel version)
666 - Support for SK-98xx V2.0 adapters
668 - Support for kernel 2.4.x and kernel 2.2.x
669 - Zerocopy support for kernel 2.4.x with sendfile()
670 - Support for scatter-gather functionality with sendfile()
671 - Speed support for SK-98xx V2.0 adapters
673 - New module parameters
675 - ProcFS initialization
677 - Ierror/crc counter error (#10767)
678 - rx_too_long counter error (#10751)
686 - Error statistic counter fix (#10620)
687 - RLMT-Fixes (#10659, #10639, #10650)
688 - LM80 sensor initialization fix (#10623)
689 - SK-CSUM memory fixes (#10610).
697 - Corrected some printk's
703 - IFF_RUNNING support (link status)
708 - Kernel error compilation
712 VERSION 4.06 (In-Kernel version)
718 - removed VLAN error messages
720 VERSION 4.02 (In-Kernel version)
722 - Add Kernel 2.4 changes
726 VERSION 4.01 (In-Kernel version)
728 - Full statistics support for DualNet mode
732 VERSION 4.00 (In-Kernel version)
736 - Proc filesystem integration
737 - DualNet functionality integrated
738 - Rlmt networks added
740 - statistics partially incorrect in DualNet mode
742 VERSION 3.04 (In-Kernel version)
744 - Driver start failed on UltraSPARC
745 - Rx checksum calculation for big endian machines did not work
746 - Jumbo frames were counted as input-errors in netstat
748 VERSION 3.03 (Standalone version)
750 - Compilation did not find script "printver.sh" if "." not in PATH
754 VERSION 3.02 (In-Kernel version)
758 - Integration in Linux kernel source (2.2.14 and 2.3.29)
766 - Full source release
774 - Support for 1000Base-T adapters (SK-9821 and SK-9822)
779 ***End of Readme File***