.\" (C)Copyright 1999-2003 Marvell(R) -- linux@syskonnect.de
.\" sk98lin.4 1.1 2003/12/17 10:03:18
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual;if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.\" This manpage can be viewed using `groff -Tascii -man sk98lin.4 | less`
.\"
.TH SK98LIN 4 2012-08-05 "Linux" "Linux Programmer's Manual"
.SH NAME
sk98lin \- Marvell/SysKonnect Gigabit Ethernet driver v6.21
.SH SYNOPSIS
.B insmod sk98lin.o
.RB [ Speed_A=\c
.IR i,j,... ]
.RB [ Speed_B=\c
.IR i,j,... ]
.RB [ AutoNeg_A=\c
.IR i,j,... ]
.RB [ AutoNeg_B=\c
.IR i,j,... ]
.RB [ DupCap_A=\c
.IR i,j,... ]
.RB [ DupCap_B=\c
.IR i,j,... ]
.RB [ FlowCtrl_A=\c
.IR i,j,... ]
.RB [ FlowCtrl_B=\c
.IR i,j,... ]
.RB [ Role_A=\c
.IR i,j,... ]
.RB [ Role_B=\c
.IR i,j,... ]
.RB [ ConType=\c
.IR i,j,... ]
.RB [ Moderation=\c
.IR i,j,... ]
.RB [ IntsPerSec=\c
.IR i,j,... ]
.RB [ PrefPort=\c
.IR i,j,... ]
.RB [ RlmtMode=\c
.IR i,j,... ]
.SH DESCRIPTION
.ad l
.hy 0
.BR Note :
This obsolete driver was removed from the kernel in version 2.6.26.

.B sk98lin
is the Gigabit Ethernet driver for
Marvell and SysKonnect network adapter cards.
It supports SysKonnect SK-98xx/SK-95xx
compliant Gigabit Ethernet Adapter and
any Yukon compliant chipset.

When loading the driver using insmod,
parameters for the network adapter cards
might be stated as a sequence of comma separated commands.
If for instance two network adapters are installed and AutoNegotiation on
Port A of the first adapter should be ON,
but on the Port A of the second adapter switched OFF, one must enter:

   insmod sk98lin.o AutoNeg_A=On,Off

After
.B sk98lin
is bound to one or more adapter cards and the
.I /proc
filesystem is mounted on your system, a dedicated statistics file
will be created in the folder
.I /proc/net/sk98lin
for all ports of the installed network adapter cards.
Those files are named
.IR eth[x] ,
where
.I x
is the number of the interface that has been assigned to a
dedicated port by the system.

If loading is finished, any desired IP address can be
assigned to the respective
.I eth[x]
interface using the
.BR ifconfig (8)
command.
This causes the adapter to connect to the Ethernet and to display a status
message on the console saying "ethx: network connection up using port y"
followed by the configured or detected connection parameters.

The
.B sk98lin
also supports large frames (also called jumbo frames).
Using jumbo frames can improve throughput tremendously when
transferring large amounts of data.
To enable large frames, the MTU (maximum transfer unit) size
for an interface is to be set to a high value.
The default MTU size is 1500 and can be changed up to 9000 (bytes).
Setting the MTU size can be done when assigning the IP address
to the interface or later by using the
.BR ifconfig (8)
command with the mtu parameter.
If for instance eth0 needs an IP
address and a large frame MTU size,
the following two commands might be used:

    ifconfig eth0 10.1.1.1
    ifconfig eth0 mtu 9000

Those two commands might even be combined into one:

    ifconfig eth0 10.1.1.1 mtu 9000

Note that large frames can be used only if permitted by
your network infrastructure.
This means, that any switch being used in your Ethernet must
also support large frames.
Quite some switches support large frames,
but need to be configured to do so.
Most of the times, their default setting is to support only
standard frames with an MTU size of 1500 (bytes).
In addition to the switches inside the network,
all network adapters that are to be used must also be
enabled regarding jumbo frames.
If an adapter is not set to receive large frames, it will simply drop them.

Switching back to the standard Ethernet frame size can be done by using the
.BR ifconfig (8)
command again:

    ifconfig eth0 mtu 1500

The Marvell/SysKonnect Gigabit Ethernet driver for Linux is able to
support VLAN and Link Aggregation according to
IEEE standards 802.1, 802.1q, and 802.3ad.
Those features are available only after installation of open source modules
which can be found on the Internet:

.IR VLAN \c
:
.UR http://www.candelatech.com\:/~greear\:/vlan.html
.UE
.br
.I Link
.IR Aggregation \c
:
.UR http://www.st.rim.or.jp\:/~yumo
.UE

.br
Note that Marvell/SysKonnect does not offer any support for these
open source modules and does not take the responsibility for any
kind of failures or problems arising when using these modules.
.SS Parameters
.TP
.BI Speed_A= i,j,...
This parameter is used to set the speed capabilities of port A of an
adapter card.
It is valid only for Yukon copper adapters.
Possible values are:
.IR 10 ,
.IR 100 ,
.IR 1000 ,
or
.IR Auto ;
.I Auto
is the default.
Usually, the speed is negotiated between the two ports
during link establishment.
If this fails,
a port can be forced to a specific setting with this parameter.
.TP
.BI Speed_B= i,j,...
This parameter is used to set the speed capabilities of port B of
an adapter card.
It is valid only for Yukon copper adapters.
Possible values are:
.IR 10 ,
.IR 100 ,
.IR 1000 ,
or
.IR Auto ;
.I Auto
is the default.
Usually, the speed is negotiated between the two ports during link
establishment.
If this fails,
a port can be forced to a specific setting with this parameter.
.TP
.BI AutoNeg_A= i,j,...
Enables or disables the use of autonegotiation of port A of an adapter card.
Possible values are:
.IR On ,
.IR Off ,
or
.IR Sense ;
.I On
is the default.
The
.I Sense
mode automatically detects whether the link partner supports
auto-negotiation or not.
.TP
.BI AutoNeg_B= i,j,...
Enables or disables the use of autonegotiation of port B of an adapter card.
Possible values are:
.IR On ,
.IR Off ,
or
.IR Sense ;
.I On
is the default.
The
.I Sense
mode automatically detects whether the link partner supports
auto-negotiation or not.
.TP
.BI DupCap_A= i,j,...
This parameter indicates the duplex mode to be used for port A
of an adapter card.
Possible values are:
.IR Half ,
.IR Full ,
or
.IR Both ;
.I Both
is the default.
This parameter is relevant only if AutoNeg_A of port A is not set to
.IR Sense .
If AutoNeg_A is set to
.IR On ,
all three values of DupCap_A (
.IR Half ,
.I Full
or
.IR Both )
might be stated.
If AutoNeg_A is set to
.IR Off ,
only DupCap_A values
.I Full
and
.I Half
are allowed.
This DupCap_A parameter is useful if your link partner does not
support all possible duplex combinations.
.TP
.BI DupCap_B= i,j,...
This parameter indicates the duplex mode to be used for port B
of an adapter card.
Possible values are:
.IR Half ,
.IR Full ,
or
.IR Both ;
.I Both
is the default.
This parameter is relevant only if AutoNeg_B of port B is not set to
.IR Sense .
If AutoNeg_B is set to
.IR On ,
all three values of DupCap_B (
.IR Half ,
.I Full
or
.IR Both )
might be stated.
If AutoNeg_B is set to
.IR Off ,
only DupCap_B values
.I Full
and
.I Half
are allowed.
This DupCap_B parameter is useful if your link partner does not
support all possible duplex combinations.
.TP
.BI FlowCtrl_A= i,j,...
This parameter can be used to set the flow control capabilities the
port reports during auto-negotiation.
Possible values are:
.IR Sym ,
.IR SymOrRem ,
.IR LocSend ,
or
.IR None ;
.I SymOrRem
is the default.
The different modes have the following meaning:

.br
.I Sym
= Symmetric
 both link partners are allowed to send PAUSE frames
.br
.I SymOrRem
= SymmetricOrRemote
 both or only remote partner are allowed to send PAUSE frames
.br
.I LocSend
= LocalSend
 only local link partner is allowed to send PAUSE frames
.br
.I None
= None
 no link partner is allowed to send PAUSE frames

Note that this parameter is ignored if AutoNeg_A is set to
.IR Off .
.TP
.BI FlowCtrl_B= i,j,...
This parameter can be used to set the flow control capabilities the
port reports during auto-negotiation.
Possible values are:
.IR Sym ,
.IR SymOrRem ,
.IR LocSend ,
or
.IR None ;
.I SymOrRem
is the default.
The different modes have the following meaning:

.I Sym
= Symmetric
 both link partners are allowed to send PAUSE frames
.br
.I SymOrRem
= SymmetricOrRemote
 both or only remote partner are allowed to send PAUSE frames
.br
.I LocSend
= LocalSend
 only local link partner is allowed to send PAUSE frames
.br
.I None
= None
 no link partner is allowed to send PAUSE frames
.br

Note that this parameter is ignored if AutoNeg_B is set to
.IR Off .
.TP
.BI Role_A= i,j,...
This parameter is valid only for 1000Base-T adapter cards.
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.
Possible values are:
.IR Auto ,
.IR Master ,
or
.IR Slave ;
.I Auto
is the default.
Usually, the role of a port is negotiated between two ports during
link establishment, but if that fails the port A of an adapter card
can be forced to a specific setting with this parameter.
.TP
.BI Role_B= i,j,...
This parameter is valid only for 1000Base-T adapter cards.
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.
Possible values are:
.IR Auto ,
.IR Master ,
or
.IR Slave ;
.I Auto
is the default.
Usually, the role of a port is negotiated between
two ports during link establishment, but if that fails
the port B of an adapter card can be forced to a
specific setting with this parameter.
.TP
.BI ConType= i,j,...
This parameter is a combination of all five per-port parameters
within one single parameter.
This simplifies the configuration of both ports of an adapter card.
The different values of this variable reflect the
most meaningful combinations of port parameters.
Possible values and their corresponding combination of per-port parameters:

.nf
ConType | DupCap   AutoNeg   FlowCtrl   Role   Speed
--------+-------------------------------------------
\fIAuto\fP    |  Both      On      SymOrRem   Auto   Auto
.br
\fI100FD\fP   |  Full      Off       None     Auto   100
.br
\fI100HD\fP   |  Half      Off       None     Auto   100
.br
\fI10FD\fP    |  Full      Off       None     Auto   10
.br
\fI10HD\fP    |  Half      Off       None     Auto   10

.fi
Stating any other port parameter together with this
.I ConType
parameter will result in a merged configuration of those settings.
This is due to
the fact, that the per-port parameters (e.g.,
.IR Speed_A )
have a higher priority than the combined variable
.IR ConType .
.TP
.BI Moderation= i,j,...
Interrupt moderation is employed to limit the maximum number of interrupts
the driver has to serve.
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
.I IntsPerSec
parameter, which is explained later below.
Possible moderation modes are:
.IR None ,
.IR Static ,
or
.IR Dynamic ;
.I None
is the default.
The different modes have the following meaning:

.I None
No interrupt moderation is applied on the adapter card.
Therefore, each transmit or receive interrupt is served immediately
as soon as it appears on the interrupt line of the adapter card.

.br
.I Static
Interrupt moderation is applied on the adapter card.
All transmit and receive interrupts are queued until
a complete moderation interval ends.
If such a moderation interval ends, all queued interrupts
are processed in one big bunch without any delay.
The term
.I Static
reflects the fact, 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.

.br
.I Dynamic
Interrupt moderation might be applied on the adapter card,
depending on the load of the system.
If the driver detects that the system load is too high,
the driver tries to shield the system against too much network
load by enabling interrupt moderation.
If\(emat a later time\(emthe CPU utilization decreases
again (or if the network load is negligible), the interrupt
moderation will automatically be disabled.

Interrupt moderation should be used when the driver has to
handle one or more interfaces with a high network load,
which\(emas a consequence\(emleads also to a high CPU utilization.
When moderation is applied in such high network load situations,
CPU load might be reduced by 20-30% on slow computers.

Note that the drawback of using interrupt moderation is an increase of
the round-trip-time (RTT), due to the queuing and serving of
interrupts at dedicated moderation times.
.TP
.BI IntsPerSec= i,j,...
This parameter determines the length of any interrupt moderation interval.
Assuming that static interrupt moderation is to be used, an
.I IntsPerSec
parameter value of 2000 will lead to an interrupt moderation interval of
500 microseconds.
Possible values for this parameter are in the range of
30...40000 (interrupts per second).
The default value is 2000.

This parameter is used only if either static or dynamic interrupt moderation
is enabled on a network adapter card.
This parameter is ignored if no moderation is applied.

Note that the duration of the moderation interval is to be chosen with care.
At first glance, selecting a very long duration (e.g., only 100 interrupts per
second) seems to be meaningful, but the increase of packet-processing delay
is tremendous.
On the other hand, selecting a very short moderation time might
compensate the use of any moderation being applied.
.TP
.BI PrefPort= i,j,...
This parameter is used to force the preferred port to
A or B (on dual-port network adapters).
The preferred port is the one that is used if both ports A and B are
detected as fully functional.
Possible values are:
.I A
or
.IR B ;
.I A
is the default.
.TP
.BI RlmtMode= i,j,...
RLMT monitors the status of the port.
If the link of the active port fails,
RLMT switches immediately to the standby link.
The virtual link is maintained as long as at least one "physical" link is up.
This parameters states how RLMT should monitor both ports.
Possible values are:
.IR CheckLinkState ,
.IR CheckLocalPort ,
.IR CheckSeg ,
or
.IR DualNet ;
.I CheckLinkState
is the default.
The different modes have the following meaning:

.I CheckLinkState
Check link state only: RLMT uses the link state reported by the adapter
hardware for each individual port to determine whether a port can be used
for all network traffic or not.

.br
.I CheckLocalPort
In this mode, RLMT monitors the network path between the two
ports of an adapter by regularly exchanging packets between them.
This mode requires a network configuration in which the
two ports are able to "see" each other (i.e., there
must not be any router between the ports).

.br
.I CheckSeg
Check local port and segmentation:
This mode supports the same functions as the CheckLocalPort
mode and additionally checks network segmentation between the ports.
Therefore, this mode is to be used only if Gigabit Ethernet
switches are installed on the network that have been
configured to use the Spanning Tree protocol.

.br
.I DualNet
In this mode, ports A and B are used as separate devices.
If you have a dual port adapter, port A will be configured as
.IR eth[x]
and port B as
.IR eth[x+1] .
Both ports can be used independently with distinct IP addresses.
The preferred port setting is not used.
RLMT is turned off.

Note that RLMT modes
.I CheckLocalPort
and
.I CheckLinkState
are designed to operate in configurations where a
network path between the ports on one adapter exists.
Moreover, they are not designed to work where adapters are
connected back-to-back.
.SH FILES
.TP
.I /proc/net/sk98lin/eth[x]
.br
The statistics file of a particular interface of an adapter card.
It contains generic information about the adapter card plus a detailed
summary of all transmit and receive counters.
.TP
.I /usr/src/linux/Documentation/networking/sk98lin.txt
.br
This is the
.I README
file of the
.I sk98lin
driver.
It contains a detailed installation HOWTO and describes all parameters
of the driver.
It denotes also common problems and provides the solution to them.
.SH BUGS
Report any bugs to linux@syskonnect.de
.\" .SH AUTHORS
.\" Ralph Roesler \(em rroesler@syskonnect.de
.\" .br
.\" Mirko Lindner \(em mlindner@syskonnect.de
.SH SEE ALSO
.BR ifconfig (8),
.BR insmod (8),
.BR modprobe (8)
