‪©Copyright 1999-2012 Marvell®.‬
All rights reserved.

sk98lin.htm created 22-Aug-2012

Readme File for sk98lin v10.93.3.3
Marvell Yukon/SysKonnect SK-98xx Gigabit Ethernet Adapter driver for Linux

This file contains




1  Overview

The sk98lin driver supports Marvell Yukon Ethernet Network Controllers
on Linux.

It has been tested with Linux on Intel x86 (32-bit) and x86 (64-bit) systems
and on PowerPC (PPC) 32-bit and 64-bit systems.

For PowerPC systems, use the "generate patch" option in the installation script
install.sh. For details on using the "generate patch" option, see chapter 6
"Patch Generation and Recompilation of the Kernel" in the README file.

2  Supported Functions

NOTE: The hardware support depends on the used network controller.

The following functions are supported by the driver:

- RX/TX HW Checksum
- Hardware interrupt moderation (static/dynamic)
- Transmit poll
- Zerocopy/Scatter-Gather
- Ethtool support
- Wake on Lan (Magic Packet only)
- DualNet
- 
 

3  Required Files

The Linux kernel source.
No additional files required.

4  Installation

It is recommended to download the latest version of the driver from our 
website. For details on the installation of the driver, refer to the 
README file.

5  Driver Parameters

The driver parameters can be set at the command line after the module has been 
loaded with the command 'modprobe'.
The configuration tools of some distributions are able to pass parameters
to the driver module.

If the kernel module loader is used, the parameters can be set
in the file /etc/modprobe.conf (or old name: /etc/modules.conf).

To set the driver parameters in this file:

1. Insert a line similar to the following:

   options sk98lin <parameter>=value1 [value2, etc]

   where value1 refers to the first network controller, value2 to the 
   second, etc.

2. To activate the new parameters, reboot your system.

To set the paramters from the command line:
 
1.  Unload the driver.

2.  Reload the driver by executing the following command:
    modprobe sk98lin parameter=value1[,value2[,value3...]]

    where value1 refers to the first network controller, value2 to the 
    second, etc.

NOTE: All parameters are case sensitive. Write them exactly as shown 
      below.

Example: You have two network controllers and want to set auto-negotiation
         to 'On' for the first network controller and to 'Off' for the second
         network controller. Also, you want to set DuplexCapabilities to 'Full'
         for the first network controller and to 'Half' for the second
         network controller.

         Enter: modprobe sk98lin AutoNeg_A=On,Off DupCap_A=Full,Half

NOTE: The number of network controllers that can be configured is limited 
      in the driver (file skge.c, constant SK_MAX_CARD_PARAM). The current 
      limit is 16. If you have more network controllers installed, adjust 
      the parameter in the skge.c file and recompile.


5.1  Port Parameters
These settings are available for each port on the network controller (if 
available).
In the following description, '?' stands for the port for which you set 
the parameter (A or B).

Auto-Negotiation
----------------
Parameter:    AutoNeg_?
Values:       On, Off, Sense
Default:      On
  
With auto-negotiation, two connected network devices can negotiate common
transmission parameters, such as speed and duplex mode. If the value 'Sense' is
configured, the network controller automatically detects whether the link partner 
supports auto-negotiation or not.

Speed
-----
Parameter:    Speed_?
Values:       10, 100, 1000, Auto
Default:      Auto

This parameter is only applicable if auto-negotiation for this port is set 
to 'Sense'. It is used to set the speed capabilities. Usually, the speed is 
negotiated between the two ports during link establishment. If this fails, 
a port can be forced to a specific speed with this parameter.


Duplex Capabilities
-------------------
Parameter:    DupCap_?
Values:       Half, Full, Both
Default:      Both

This parameters is only applicable if auto-negotiation for this port is 
not set to 'Sense'. If auto-negotiation is set to 'On', all three values
are possible. If it is set to 'Off', only 'Full' and 'Half' are allowed.

NOTE: The combination of Speed 1000 and Half Duplex is not possible. Please
      use 100HD or 1000FD instead.

Flow Control
------------
Parameter:    FlowCtrl_?
Values:       Sym, SymOrRem, LocSend, None
Default:      SymOrRem

This parameter can be used to set the flow control capabilities the port 
reports during auto-negotiation. It can be set for each port individually.

Possible modes:
   -- Sym      = Symmetric: both link partners are allowed to send PAUSE frames
   -- SymOrRem = SymmetricOrRemote: both or only the remote partner are allowed 
                 to send PAUSE frames
   -- LocSend  = LocalSend: only local link partner is allowed to send PAUSE frames
   -- None     = no link partner is allowed to send PAUSE frames
  
NOTE: If auto-negotiation is set to 'Off', Flow Control is ignored .

Role in Master-Slave-Negotiation (1000Base-T only)
--------------------------------------------------
Parameter:    Role_?
Values:       Auto, Master, Slave
Default:      Auto

For two 1000Base-T ports to communicate, one must take the role of the
master (providing timing information), while the other must be the slave. 
Usually, this is negotiated between the two ports during link establishment. 
If this fails, a port can be forced to a specific role with this parameter.


5.2  Network Controller Parameters
Connection Type (for copper network controllers only)
---------------
Parameter:    ConType
Values:       Auto, 1000FD, 100FD, 100HD, 10FD, 10HD
Default:      Auto

This parameter is a combination of port parameters. This simplifies the 
configuration of both ports of a network controller! The different values 
of this variable reflect the most important combinations of port parameters.

The following table shows the values for 'ConType' and the corresponding
combinations for the port parameters:

    ConType   |  DupCap   AutoNeg   FlowCtrl   Role             Speed
    ----------+------------------------------------------------------
    Auto      |  Both     On        SymOrRem   Auto             Auto
    1000FD    |  Full     On        None       Auto (ignored)   1000
    100FD     |  Full     Off       None       Auto (ignored)   100
    100HD     |  Half     Off       None       Auto (ignored)   100
    10FD      |  Full     Off       None       Auto (ignored)   10
    10HD      |  Half     Off       None       Auto (ignored)   10

The port parameters (e.g., Speed_A) have a higher priority than the parameter
'ConType'. Therefore, setting any other port parameter together with the 'ConType' 
parameter will result in a merged configuration.

NOTE: This parameter is always used on both ports of the network controller.


Wake on Lan Type (for copper network controllers only)
---------------
Parameter:    WolType
Values:       Auto, 100FD, 100HD, 10FD, 10HD
Default:      Auto

This parameter is a combination of port parameters. This simplifies the 
configuration of the WOL speed. To support WOL you must have a computer
with Motherboard that supports WOL. The WOL process is done through
sending a special packet (aka "Magic Packet") to the remote computer.

The following table shows the values for 'WolType' and the corresponding
combinations for the port parameters:

    WolType   |  DupCap   AutoNeg   FlowCtrl   Role             Speed
    ----------+------------------------------------------------------
    Auto      |  Both     On        SymOrRem   Auto             Auto
    100FD     |  Full     Off       None       Auto (ignored)   100
    100HD     |  Half     Off       None       Auto (ignored)   100
    10FD      |  Full     Off       None       Auto (ignored)   10
    10HD      |  Half     Off       None       Auto (ignored)   10

NOTE: This parameter is always used on both ports of the network controller.


Transmit Moderation
--------------------
Parameter:    TxModeration
Values:       1...4095
Default:      10

With transmit moderation, the maximum number of transmit complete interrupts 
the driver must serve can be limited. That is, one or more interrupts (which 
indicate any transmit packet to be processed) are queued until the driver 
processes them. When TxModeration is set to '1', all transmit complete interrupts 
will be generated immediately. When set to '10', the network controller will 
generate one transmit complete interrupt every ten served packets.

NOTE: This parameter is only used on Yukon Extreme network controllers.


Interrupt Moderation
--------------------
Parameter:    Moderation
Values:       None, Static, Dynamic
Default:      None

With interrupt moderation, the maximum number of interrupts the driver must 
serve can be limited. That is, one or more interrupts (which indicate any 
transmit or receive packet to be processed) are queued until the driver processes 
them. When queued interrupts are to be served is determined by the IntsPerSec 
parameter (see section "Interrupts per Second").

Possible modes:

   -- None - each transmit or receive interrupt is served immediately as soon as 
      it appears on the interrupt line of the network controller.

   -- Static - all transmit and receive interrupts are queued until a complete 
      moderation interval ends. If such a moderation interval ends, all queued 
      interrupts are processed at once without any delay. 'Static' means that 
      interrupt moderation is always enabled, regardless how much network load 
      is currently passing via a particular interface. In addition, the duration
      of the moderation interval has a fixed length that never changes while 
      the driver is operational.

   -- Dynamic - Interrupt moderation might be enabled for the network 
      controller, depending on the system load. If the driver detects that the 
      system load is too high, it enables interrupt moderation. If, at a later 
      time, the system load decreases (or if the network load is negligible), 
      interrupt moderation will automatically be disabled.

Interrupt moderation should be used when the driver must handle one or more
interfaces with a high network load, which also leads to a high CPU utilization. 
When interrupt moderation is applied in such high network load situations, 
CPU load might be reduced by 20-30%.

NOTE: The drawback of using interrupt moderation is an increase of the Round-
      Trip Time (RTT), due to the queueing and serving of interrupts at 
      dedicated moderation times.

Interrupts per Second
---------------------
Parameter:    IntsPerSec
Values:       30...40000 (interrupts per second)
Default:      2000

The number of interrupts per second determines the length of any interrupt 
moderation interval. This parameter is only applicable if either static or 
dynamic interrupt moderation is enabled for the network controller. Otherwise, 
it will be ignored.

Example: Assuming that static interrupt moderation is to be used, an 'IntsPerSec' 
         parameter value of 2000 will lead to an interrupt moderation interval 
         of 500 microseconds. 

NOTE: The duration of the moderation interval must be selected with care. A long 
      interval (e.g., only 100 interrupts/s) results in a significantly increased
      packet processing delay. But, selecting a very short interval might 
      compensate the benefits of any moderation applied. 

LowLatency 
----------
Parameter:    LowLatency
Values:       On, Off
Default:      Off

This parameter is used to reduce the packet latency time of the network 
controller. Setting the LowLatency parameter to 'On' forces the network 
controller to pass any received packet immediately to upper network layers and 
to send out any transmit packet as fast as possible. 

NOTE 1: The system load increases if LowLatency is set to 'On', and a large 
        number of data packets is transmitted and received.

NOTE 2: This parameter is only used for network controllers which are based on 
        PCI Express compatible chipsets.


Message-Signaled Interrupts
----------
Parameter:    MsiIrq
Values:       On, Off
Default:      On

Message Signaled Interrupts, in PCI Express, are an alternative way of 
generating an interrupt. MSI increases the number of interrupts that are 
possible. There is also a slight performance advantage.


Receive-Side Scaling (RSS) 
----------
Parameter:    RSS
Values:       On, Off
Default:      Off

Receive-Side Scaling (RSS) resolves the single-processor bottleneck by allowing 
the receive side network load from a network adapter to be shared across multiple 
processors. RSS enables packet receive-processing to scale with the number of 
available processors. This allows the subsystem to take advantage of multi-core 
and many core processor architectures.

NOTE 1: Receive-Side Scaling is supported only for kernel versions >= 2.6.35

6  Ethtool Support

The sk98lin driver provides the built-in ethtool support. Ethtool can 
be used to display or modify interface-specific configurations.
Ethtool is used with either a query command or a set command, followed by a 
number of parameters (optional). With the query command, information about a 
parameter is displayed. With the set command, the specified parameter is set.
It is not the intention of this section to explain the ethtool command line 
tool and all its options. For further information, refer to the man page of 
ethtool. This section only describes the ethtool parameters supported by the 
sk98lin driver.

Pause Parameters
----------------
Query command:  -a
Set command:    -A [autoneg on|off] [rx on|off] [tx on|off]
Example:        ethtool -A eth0 rx off tx off

Coalescing Parameters
---------------------
Query command:  -c
Set command:    -C [sample-interval I]
                   [rx-usecs N] [tx-usecs N]
                   [rx-usecs-low N] [tx-usecs-low N]
                   [rx-usecs-high N] [tx-usecs-high N]
Parameter:      I = Length of sample interval, in seconds
                    (supported values range from 1...10)
                N = Length of coalescing interval, in microseconds
                    (supported values range from 25...33,333)
Example:        ethtool -C eth2 rx-usecs 500 tx-usecs 500

NOTE: The sk98lin driver does not support different settings for the 
      Rx and Tx interrupt coalescing parameters.

Driver Information
------------------
Query command:  -i
Example:        ethtool -i eth1

Checksumming Parameters
-----------------------
Query command:  -k
Set command:    -K [rx on|off] [tx on|off] [sg on|off] [tso on|off]
Example:        ethtool -K eth0 sg off

Locate NIC Command
------------------
Query command:  -p [N]
Parameter:      N = Amount of time to perform locate NIC command, in seconds
Example:        ethtool -p 10 eth1

Driver-specific Statistics
--------------------------
Query command:  -S
Example:        ethtool -S eth0

Setting Parameters
------------------
Set command:    -s [speed 10|100|1000] [duplex half|full] 
                   [autoneg on|off] [wol gd]
Example:        ethtool -s eth2 wol d
Example:        ethtool -s eth2 autoneg off speed 100 duplex full

NOTE: If the cable is disconnected, set the speed and duplex mode if you 
      disable/enable autonegotiation.
 
NOTE: To set this parameter back to the default value, use the 'autoneg on'
      command.
      Example:    ethtool -s eth2 autoneg on

7  Large Frame Support

The sk98lin supports large frames (also called jumbo frames). Using jumbo
frames can result in an improved throughput when transferring large amounts 
of data.
To enable large frames, set the Maximum Transfer Unit (MTU) of the interface 
to 9000, execute the following command:

         ifconfig eth0 mtu 9000

This will only work if two network controllers are connected back-to-back or if 
a switch is used that supports large frames. When using a switch, it must be 
configured to allow large frames. The setting must be configured for all network 
controllers that can be reached by the large frames. If one network controller 
is not set to receive large frames, it will simply drop them.

To switch back to the standard Ethernet frame size, execute the following 
command:
         ifconfig eth0 mtu 1500

To permanently configure this setting, add a script including this command 
to the system startup sequence (named "S99sk98lin" in the directory
/etc/rc.d/rc2.d).

8  VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)

The Marvell Yukon Linux drivers support VLAN and Link Aggregation 
according to IEEE standards 802.1, 802.1q, and 802.3ad. 

9  Wake on Lan Support

The sk98lin supports wake up from suspend mode with MagicPacket.
Wake on Lan support is enabled by default. To disable it, use the ethtool.

NOTE 1: WOL support has to be enabled in the BIOS and in the kernel.

NOTE 2: Refer to the kernel documentation for additional requirements 
        regarding WOL support.


10  Troubleshooting

If any problems occur during the installation process, check the 
following list:


Problem:  Programs such as 'ifconfig' and 'route' cannot be found, or the 
          error message 'Operation not permitted' is displayed.
Reason:   You are not logged in as user 'root'.
Solution: Logout and login as 'root' or change to 'root' via 'su'.


Problem:  The driver can be started, but if an IP address is assigned
          to a network controller, no link up indication is displayed although
          it is connected to the network. It is also not possible to receive
          or transmit any packets, e.g., 'ping' does not work.
Reason:   The network controller does not receive any interrupts from the Linux 
          system. This can occur when using the Advanced Programmable Interrupt 
          Controller (APIC) of a Symmetric Multi-Processor (SMP) compiled kernel 
          in a Uni-Processor (UP) environment. 
Solution: Use the Linux kernel parameters 'noapic' or 'nolapic' when booting the
          kernel. To do this, add these parameters to the boot manager kernel 
          selection menu: (either /boot/grub/menu.lst  for GRUB or /etc/lilo.conf 
          for LILO).
          When you build a kernel, deselect the option CONFIG_X86_LOCAL_APIC.


Problem:  The driver can be started, the network controller is connected to the 
          network and a link up indication is displayed, but it is not possible 
          to receive or transmit any packets, e.g., 'ping' does not work.
Reason:   There is an incorrect route in your routing table or the remote host 
          is unreachable.
Solution: Check the routing table using the command 'route' and read the 
          manual help pages dealing with routes (enter 'man route'). Check the 
          connection to the remote host system.


If your problem is not listed here, please contact Marvell technical support 
for help (MSGG-linux@marvell.com).
When contacting our technical support, have the following information available:
--------------------------------------------------------------------------------
- 'install.log' file created by the install script 'install.sh'
- System Manufacturer and hardware information (e.g., CPU, Memory... )
- PCI-Boards in your system
- Linux distribution
- Linux kernel version
- driver version
***End of Readme File***