mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 11:44:01 +08:00
5ad887fa8e
This reverts commit e1abecc489
.
The driver works on some hardware that skge doesn't handle yet.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
569 lines
22 KiB
Plaintext
569 lines
22 KiB
Plaintext
(C)Copyright 1999-2004 Marvell(R).
|
|
All rights reserved
|
|
===========================================================================
|
|
|
|
sk98lin.txt created 13-Feb-2004
|
|
|
|
Readme File for sk98lin v6.23
|
|
Marvell Yukon/SysKonnect SK-98xx Gigabit Ethernet Adapter family driver for LINUX
|
|
|
|
This file contains
|
|
1 Overview
|
|
2 Required Files
|
|
3 Installation
|
|
3.1 Driver Installation
|
|
3.2 Inclusion of adapter at system start
|
|
4 Driver Parameters
|
|
4.1 Per-Port Parameters
|
|
4.2 Adapter Parameters
|
|
5 Large Frame Support
|
|
6 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
|
|
7 Troubleshooting
|
|
|
|
===========================================================================
|
|
|
|
|
|
1 Overview
|
|
===========
|
|
|
|
The sk98lin driver supports the Marvell Yukon and SysKonnect
|
|
SK-98xx/SK-95xx compliant Gigabit Ethernet Adapter on Linux. It has
|
|
been tested with Linux on Intel/x86 machines.
|
|
***
|
|
|
|
|
|
2 Required Files
|
|
=================
|
|
|
|
The linux kernel source.
|
|
No additional files required.
|
|
***
|
|
|
|
|
|
3 Installation
|
|
===============
|
|
|
|
It is recommended to download the latest version of the driver from the
|
|
SysKonnect web site www.syskonnect.com. If you have downloaded the latest
|
|
driver, the Linux kernel has to be patched before the driver can be
|
|
installed. For details on how to patch a Linux kernel, refer to the
|
|
patch.txt file.
|
|
|
|
3.1 Driver Installation
|
|
------------------------
|
|
|
|
The following steps describe the actions that are required to install
|
|
the driver and to start it manually. These steps should be carried
|
|
out for the initial driver setup. Once confirmed to be ok, they can
|
|
be included in the system start.
|
|
|
|
NOTE 1: To perform the following tasks you need 'root' access.
|
|
|
|
NOTE 2: In case of problems, please read the section "Troubleshooting"
|
|
below.
|
|
|
|
The driver can either be integrated into the kernel or it can be compiled
|
|
as a module. Select the appropriate option during the kernel
|
|
configuration.
|
|
|
|
Compile/use the driver as a module
|
|
----------------------------------
|
|
To compile the driver, go to the directory /usr/src/linux and
|
|
execute the command "make menuconfig" or "make xconfig" and proceed as
|
|
follows:
|
|
|
|
To integrate the driver permanently into the kernel, proceed as follows:
|
|
|
|
1. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
|
|
2. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support"
|
|
with (*)
|
|
3. Build a new kernel when the configuration of the above options is
|
|
finished.
|
|
4. Install the new kernel.
|
|
5. Reboot your system.
|
|
|
|
To use the driver as a module, proceed as follows:
|
|
|
|
1. Enable 'loadable module support' in the kernel.
|
|
2. For automatic driver start, enable the 'Kernel module loader'.
|
|
3. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
|
|
4. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support"
|
|
with (M)
|
|
5. Execute the command "make modules".
|
|
6. Execute the command "make modules_install".
|
|
The appropriate modules will be installed.
|
|
7. Reboot your system.
|
|
|
|
|
|
Load the module manually
|
|
------------------------
|
|
To load the module manually, proceed as follows:
|
|
|
|
1. Enter "modprobe sk98lin".
|
|
2. If a Marvell Yukon or SysKonnect SK-98xx adapter is installed in
|
|
your computer and you have a /proc file system, execute the command:
|
|
"ls /proc/net/sk98lin/"
|
|
This should produce an output containing a line with the following
|
|
format:
|
|
eth0 eth1 ...
|
|
which indicates that your adapter has been found and initialized.
|
|
|
|
NOTE 1: If you have more than one Marvell Yukon or SysKonnect SK-98xx
|
|
adapter installed, the adapters will be listed as 'eth0',
|
|
'eth1', 'eth2', etc.
|
|
For each adapter, repeat steps 3 and 4 below.
|
|
|
|
NOTE 2: If you have other Ethernet adapters installed, your Marvell
|
|
Yukon or SysKonnect SK-98xx adapter will be mapped to the
|
|
next available number, e.g. 'eth1'. The mapping is executed
|
|
automatically.
|
|
The module installation message (displayed either in a system
|
|
log file or on the console) prints a line for each adapter
|
|
found containing the corresponding 'ethX'.
|
|
|
|
3. Select an IP address and assign it to the respective adapter by
|
|
entering:
|
|
ifconfig eth0 <ip-address>
|
|
With this command, the adapter is connected to the Ethernet.
|
|
|
|
SK-98xx Gigabit Ethernet Server Adapters: The yellow LED on the adapter
|
|
is now active, the link status LED of the primary port is active and
|
|
the link status LED of the secondary port (on dual port adapters) is
|
|
blinking (if the ports are connected to a switch or hub).
|
|
SK-98xx V2.0 Gigabit Ethernet Adapters: The link status LED is active.
|
|
In addition, you will receive a status message on the console stating
|
|
"ethX: network connection up using port Y" and showing the selected
|
|
connection parameters (x stands for the ethernet device number
|
|
(0,1,2, etc), y stands for the port name (A or B)).
|
|
|
|
NOTE: If you are in doubt about IP addresses, ask your network
|
|
administrator for assistance.
|
|
|
|
4. Your adapter should now be fully operational.
|
|
Use 'ping <otherstation>' to verify the connection to other computers
|
|
on your network.
|
|
5. To check the adapter configuration view /proc/net/sk98lin/[devicename].
|
|
For example by executing:
|
|
"cat /proc/net/sk98lin/eth0"
|
|
|
|
Unload the module
|
|
-----------------
|
|
To stop and unload the driver modules, proceed as follows:
|
|
|
|
1. Execute the command "ifconfig eth0 down".
|
|
2. Execute the command "rmmod sk98lin".
|
|
|
|
3.2 Inclusion of adapter at system start
|
|
-----------------------------------------
|
|
|
|
Since a large number of different Linux distributions are
|
|
available, we are unable to describe a general installation procedure
|
|
for the driver module.
|
|
Because the driver is now integrated in the kernel, installation should
|
|
be easy, using the standard mechanism of your distribution.
|
|
Refer to the distribution's manual for installation of ethernet adapters.
|
|
|
|
***
|
|
|
|
4 Driver Parameters
|
|
====================
|
|
|
|
Parameters can be set at the command line after the module has been
|
|
loaded with the command 'modprobe'.
|
|
In some distributions, the configuration tools are able to pass parameters
|
|
to the driver module.
|
|
|
|
If you use the kernel module loader, you can set driver parameters
|
|
in the file /etc/modprobe.conf (or /etc/modules.conf in 2.4 or earlier).
|
|
To set the driver parameters in this file, proceed as follows:
|
|
|
|
1. Insert a line of the form :
|
|
options sk98lin ...
|
|
For "...", the same syntax is required as described for the command
|
|
line parameters of modprobe below.
|
|
2. To activate the new parameters, either reboot your computer
|
|
or
|
|
unload and reload the driver.
|
|
The syntax of the driver parameters is:
|
|
|
|
modprobe sk98lin parameter=value1[,value2[,value3...]]
|
|
|
|
where value1 refers to the first adapter, value2 to the second etc.
|
|
|
|
NOTE: All parameters are case sensitive. Write them exactly as shown
|
|
below.
|
|
|
|
Example:
|
|
Suppose you have two adapters. You want to set auto-negotiation
|
|
on the first adapter to ON and on the second adapter to OFF.
|
|
You also want to set DuplexCapabilities on the first adapter
|
|
to FULL, and on the second adapter to HALF.
|
|
Then, you must enter:
|
|
|
|
modprobe sk98lin AutoNeg_A=On,Off DupCap_A=Full,Half
|
|
|
|
NOTE: The number of adapters that can be configured this way is
|
|
limited in the driver (file skge.c, constant SK_MAX_CARD_PARAM).
|
|
The current limit is 16. If you happen to install
|
|
more adapters, adjust this and recompile.
|
|
|
|
|
|
4.1 Per-Port Parameters
|
|
------------------------
|
|
|
|
These settings are available for each port on the adapter.
|
|
In the following description, '?' stands for the port for
|
|
which you set the parameter (A or B).
|
|
|
|
Speed
|
|
-----
|
|
Parameter: Speed_?
|
|
Values: 10, 100, 1000, Auto
|
|
Default: Auto
|
|
|
|
This parameter is used to set the speed capabilities. It is only valid
|
|
for the SK-98xx V2.0 copper adapters.
|
|
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.
|
|
|
|
Auto-Negotiation
|
|
----------------
|
|
Parameter: AutoNeg_?
|
|
Values: On, Off, Sense
|
|
Default: On
|
|
|
|
The "Sense"-mode automatically detects whether the link partner supports
|
|
auto-negotiation or not.
|
|
|
|
Duplex Capabilities
|
|
-------------------
|
|
Parameter: DupCap_?
|
|
Values: Half, Full, Both
|
|
Default: Both
|
|
|
|
This parameters is only relevant 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.
|
|
This parameter is useful if your link partner does not support all
|
|
possible combinations.
|
|
|
|
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 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: This parameter is ignored if auto-negotiation is set to "Off".
|
|
|
|
Role in Master-Slave-Negotiation (1000Base-T only)
|
|
--------------------------------------------------
|
|
Parameter: Role_?
|
|
Values: Auto, Master, Slave
|
|
Default: Auto
|
|
|
|
This parameter is only valid for the SK-9821 and SK-9822 adapters.
|
|
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 setting
|
|
with this parameter.
|
|
|
|
|
|
4.2 Adapter Parameters
|
|
-----------------------
|
|
|
|
Connection Type (SK-98xx V2.0 copper adapters only)
|
|
---------------
|
|
Parameter: ConType
|
|
Values: Auto, 100FD, 100HD, 10FD, 10HD
|
|
Default: Auto
|
|
|
|
The parameter 'ConType' 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.
|
|
|
|
The following table shows the values of 'ConType' and the corresponding
|
|
combinations of the per-port parameters:
|
|
|
|
ConType | 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
|
|
|
|
Stating any other port parameter together with this 'ConType' variable
|
|
will result in a merged configuration of those settings. This due to
|
|
the fact, that the per-port parameters (e.g. Speed_? ) have a higher
|
|
priority than the combined variable 'ConType'.
|
|
|
|
NOTE: This parameter is always used on both ports of the adapter card.
|
|
|
|
Interrupt Moderation
|
|
--------------------
|
|
Parameter: Moderation
|
|
Values: None, Static, Dynamic
|
|
Default: None
|
|
|
|
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
|
|
'IntsPerSec' parameter, which is explained later below.
|
|
|
|
Possible modes:
|
|
|
|
-- 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.
|
|
|
|
-- 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 '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.
|
|
|
|
-- 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 - at a later
|
|
time - the 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 - as a consequence - leads also to a
|
|
high CPU utilization. When 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
|
|
|
|
This parameter is only used if either static or dynamic interrupt moderation
|
|
is used on a network adapter card. Using this parameter if no moderation is
|
|
applied will lead to no action performed.
|
|
|
|
This parameter determines the length of any interrupt moderation interval.
|
|
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 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.
|
|
|
|
|
|
Preferred Port
|
|
--------------
|
|
Parameter: PrefPort
|
|
Values: A, B
|
|
Default: A
|
|
|
|
This 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 are detected
|
|
as fully functional.
|
|
|
|
RLMT Mode (Redundant Link Management Technology)
|
|
------------------------------------------------
|
|
Parameter: RlmtMode
|
|
Values: CheckLinkState,CheckLocalPort, CheckSeg, DualNet
|
|
Default: CheckLinkState
|
|
|
|
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.
|
|
|
|
Possible modes:
|
|
|
|
-- 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.
|
|
|
|
-- 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).
|
|
|
|
-- 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 only
|
|
to be used if Gigabit Ethernet switches are installed on the network
|
|
that have been configured to use the Spanning Tree protocol.
|
|
|
|
-- 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 eth0
|
|
and port B as eth1. Both ports can be used independently with
|
|
distinct IP addresses. The preferred port setting is not used.
|
|
RLMT is turned off.
|
|
|
|
NOTE: RLMT modes CLP and CLPSS 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.
|
|
***
|
|
|
|
|
|
5 Large Frame Support
|
|
======================
|
|
|
|
The driver supports large frames (also called jumbo frames). Using large
|
|
frames can result in an improved throughput if transferring large amounts
|
|
of data.
|
|
To enable large frames, set the MTU (maximum transfer unit) of the
|
|
interface to the desired value (up to 9000), execute the following
|
|
command:
|
|
ifconfig eth0 mtu 9000
|
|
This will only work if you have two adapters connected back-to-back
|
|
or if you use a switch that supports large frames. When using a switch,
|
|
it should be configured to allow large frames and auto-negotiation should
|
|
be set to OFF. The setting must be configured on all adapters that can be
|
|
reached by the large frames. If one adapter is not set to receive large
|
|
frames, it will simply drop them.
|
|
|
|
You can switch back to the standard ethernet frame size by executing the
|
|
following command:
|
|
ifconfig eth0 mtu 1500
|
|
|
|
To permanently configure this setting, add a script with the 'ifconfig'
|
|
line to the system startup sequence (named something like "S99sk98lin"
|
|
in /etc/rc.d/rc2.d).
|
|
***
|
|
|
|
|
|
6 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
|
|
==================================================================
|
|
|
|
The Marvell Yukon/SysKonnect Linux drivers are able to support VLAN and
|
|
Link Aggregation according to IEEE standards 802.1, 802.1q, and 802.3ad.
|
|
These features are only available after installation of open source
|
|
modules available on the Internet:
|
|
For VLAN go to: http://www.candelatech.com/~greear/vlan.html
|
|
For Link Aggregation go to: http://www.st.rim.or.jp/~yumo
|
|
|
|
NOTE: SysKonnect GmbH does not offer any support for these open source
|
|
modules and does not take the responsibility for any kind of
|
|
failures or problems arising in connection with these modules.
|
|
|
|
NOTE: Configuring Link Aggregation on a SysKonnect dual link adapter may
|
|
cause problems when unloading the driver.
|
|
|
|
|
|
7 Troubleshooting
|
|
==================
|
|
|
|
If any problems occur during the installation process, check the
|
|
following list:
|
|
|
|
|
|
Problem: The SK-98xx adapter cannot be found by the driver.
|
|
Solution: In /proc/pci search for the following entry:
|
|
'Ethernet controller: SysKonnect SK-98xx ...'
|
|
If this entry exists, the SK-98xx or SK-98xx V2.0 adapter has
|
|
been found by the system and should be operational.
|
|
If this entry does not exist or if the file '/proc/pci' is not
|
|
found, there may be a hardware problem or the PCI support may
|
|
not be enabled in your kernel.
|
|
The adapter can be checked using the diagnostics program which
|
|
is available on the SysKonnect web site:
|
|
www.syskonnect.com
|
|
|
|
Some COMPAQ machines have problems dealing with PCI under Linux.
|
|
This problem is described in the 'PCI howto' document
|
|
(included in some distributions or available from the
|
|
web, e.g. at 'www.linux.org').
|
|
|
|
|
|
Problem: Programs such as 'ifconfig' or '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: Upon use of the command 'ping <address>' the message
|
|
"ping: sendto: Network is unreachable" is displayed.
|
|
Reason: Your route is not set correctly.
|
|
Solution: If you are using RedHat, you probably forgot to set up the
|
|
route in the 'network configuration'.
|
|
Check the existing routes with the 'route' command and check
|
|
if an entry for 'eth0' exists, and if so, if it is set correctly.
|
|
|
|
|
|
Problem: The driver can be started, the adapter is connected to the
|
|
network, but you cannot receive or transmit any packets;
|
|
e.g. 'ping' does not work.
|
|
Reason: There is an incorrect route in your routing table.
|
|
Solution: Check the routing table with the command 'route' and read the
|
|
manual help pages dealing with routes (enter 'man route').
|
|
|
|
NOTE: Although the 2.2.x kernel versions generate the routing entry
|
|
automatically, problems of this kind may occur here as well. We've
|
|
come across a situation in which the driver started correctly at
|
|
system start, but after the driver has been removed and reloaded,
|
|
the route of the adapter's network pointed to the 'dummy0'device
|
|
and had to be corrected manually.
|
|
|
|
|
|
Problem: Your computer should act as a router between multiple
|
|
IP subnetworks (using multiple adapters), but computers in
|
|
other subnetworks cannot be reached.
|
|
Reason: Either the router's kernel is not configured for IP forwarding
|
|
or the routing table and gateway configuration of at least one
|
|
computer is not working.
|
|
|
|
Problem: Upon driver start, the following error message is displayed:
|
|
"eth0: -- ERROR --
|
|
Class: internal Software error
|
|
Nr: 0xcc
|
|
Msg: SkGeInitPort() cannot init running ports"
|
|
Reason: You are using a driver compiled for single processor machines
|
|
on a multiprocessor machine with SMP (Symmetric MultiProcessor)
|
|
kernel.
|
|
Solution: Configure your kernel appropriately and recompile the kernel or
|
|
the modules.
|
|
|
|
|
|
|
|
If your problem is not listed here, please contact SysKonnect's technical
|
|
support for help (linux@syskonnect.de).
|
|
When contacting our technical support, please ensure that the following
|
|
information is available:
|
|
- System Manufacturer and HW Informations (CPU, Memory... )
|
|
- PCI-Boards in your system
|
|
- Distribution
|
|
- Kernel version
|
|
- Driver version
|
|
***
|
|
|
|
|
|
|
|
***End of Readme File***
|