.\" (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 2017-09-15 "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.
.PP
.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.
.PP
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:
.PP
   insmod sk98lin.o AutoNeg_A=On,Off
.PP
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.
.PP
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.
.PP
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:
.PP
    ifconfig eth0 10.1.1.1
    ifconfig eth0 mtu 9000
.PP
Those two commands might even be combined into one:
.PP
    ifconfig eth0 10.1.1.1 mtu 9000
.PP
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.
.PP
Switching back to the standard Ethernet frame size can be done by using the
.BR ifconfig (8)
command again:
.PP
    ifconfig eth0 mtu 1500
.PP
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:
.PP
.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
.PP
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:
.IP
.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
.IP
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:
.IP
.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
.IP
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:
.IP
.nf
ConType | DupCap   AutoNeg   FlowCtrl   Role   Speed
--------+-------------------------------------------
\fIAuto\fP    |  Both      On      SymOrRem   Auto   Auto
\fI100FD\fP   |  Full      Off       None     Auto   100
\fI100HD\fP   |  Half      Off       None     Auto   100
\fI10FD\fP    |  Full      Off       None     Auto   10
\fI10HD\fP    |  Half      Off       None     Auto   10
.fi
.IP
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:
.IP
.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.
.IP
.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.
.IP
.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.
.IP
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\(en30% on slow computers.
.IP
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.
.IP
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.
.IP
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:
.IP
.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.
.IP
.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).
.IP
.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.
.IP
.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.
.IP
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]
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
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)
