(C)Copyright 1999-2002 SysKonnect GmbH.
All rights reserved
===========================================================================

sk98lin.txt created 19-Dec-2002

Readme File for sk98lin v6.02
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
 8  History

===========================================================================


1  Overview
===========

The sk98lin driver supports the SysKonnect SK-98xx and SK-95xx family 
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 "SysKonnect SK-98xx and SK-95xx Gigabit Ethernet Adapter
   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 "SysKonnect SK-98xx and SK-95xx Gigabit Ethernet Adapter
   family support" with (M)
5. Execute the command "make modules".
6. Execute the command "make modules_install".
   The appropiate 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 the 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 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 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/modules.conf (or old name: /etc/conf.modules).
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 paramaters 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=On,Off DupCap=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 usefull 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      = Symetric: both link partners are allowed to send 
                  PAUSE frames
   -- SymOrRem = SymetricOrRemote: 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
-----------------------

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 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://scry.wanfear.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 can not 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.
          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' can not 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 (Symetric 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 Model
- Boards in your system
- Distribution
- Kernel version
- Driver version
***

8  History
==========

VERSION 6.00 (In-Kernel version)
New Features:
- Support for SK-98xx V2.0 adapters
- Support for gmac
- Support for kernel 2.4.x and kernel 2.2.x
- Zerocopy support for kernel 2.4.x with sendfile()
- Support for scatter-gather functionality with sendfile()
- Speed support for SK-98xx V2.0 adapters
- New ProcFs entries
- New module parameters
Problems fixed:
- ProcFS initialization
- csum packet error
- Ierror/crc counter error (#10767)
- rx_too_long counter error (#10751)
Known limitations:
- None

VERSION 4.11
New Features:
- none
Problems fixed:
- Error statistic counter fix (#10620)
- RLMT-Fixes (#10659, #10639, #10650)
- LM80 sensor initialization fix (#10623)
- SK-CSUM memory fixes (#10610).
Known limitations:
- None

VERSION 4.10
New Features:
- New ProcFs entries
Problems fixed:
- Corrected some printk's
Known limitations:
- None

VERSION 4.09
New Features:
- IFF_RUNNING support (link status)
- New ProcFs entries
Problems fixed:
- too long counters
- too short counters
- Kernel error compilation
Known limitations:
- None
 
VERSION 4.06 (In-Kernel version)
Problems fixed:
- MTU init problems
 
VERSION 4.04
Problems fixed:
- removed VLAN error messages

VERSION 4.02 (In-Kernel version)
New Features:
- Add Kernel 2.4 changes
Known limitations:
- None

VERSION 4.01 (In-Kernel version)
Problems fixed:
- Full statistics support for DualNet mode
Known limitations:
- None

VERSION 4.00 (In-Kernel version)
Problems fixed:
- Memory leak found 
New Features:
- Proc filesystem integration
- DualNet functionality integrated
- Rlmt networks added
Known limitations:
- statistics partially incorrect in DualNet mode

VERSION 3.04 (In-Kernel version)
Problems fixed:
- Driver start failed on UltraSPARC
- Rx checksum calculation for big endian machines did not work
- Jumbo frames were counted as input-errors in netstat

VERSION 3.03 (Standalone version)
Problems fixed:
- Compilation did not find script "printver.sh" if "." not in PATH
Known limitations:
- None

VERSION 3.02 (In-Kernel version)
Problems fixed:
- None
New Features:
- Integration in Linux kernel source (2.2.14 and 2.3.29) 
Known limitations:
- None

VERSION 3.01
Problems fixed:
- None
New Features:
- Full source release
Known limitations:
- None

VERSION 3.00
Problems fixed:
- None
New Features:
- Support for 1000Base-T adapters (SK-9821 and SK-9822)
Known limitations:
- None

VERSION 1.07
Problems fixed:
- RlmtMode parameter value strings were wrong (#10437)
- Driver sent too many RLMT frames (#10439)
- Driver did not recognize network segmentation (#10440)
- RLMT switched too often on segmented network (#10441)
Known limitations:
- None

VERSION 1.06
Problems fixed:
- System panic'ed after some time when running with 
  RlmtMode=CheckOtherLink or RlmtMode=CheckSeg (#10421)
  Panic message: "Kernel panic: skput: over ... dev: eth0"
- Driver did not switch back to default port when connected
  back-to-back (#10422).
Changes:
- RlmtMode parameter names have changed
New features:
- There is now a version for ALPHA processors
Known limitations:
- None

VERSION 1.05
Problems fixed:
- Driver failed to load on kernels with version information
  for module symbols enabled
Known limitations:
- None

VERSION 1.04
Problems fixed:
- Large frame support does work now (no autonegotiation
  support for large frames, just manually selectable)
New Features:
- Receive checksumming in hardware
- Performance optimizations
  Some numbers (on two PII-400 machines, back-to-back):
  netpipe: 300 MBit/sec, with large frames: 470 MBit/sec
  ttcp:  38 MByte/sec, with large frames: 60 MByte/sec
  ttcp (UDP send): 66 MByte/sec, with large frames: 106 MByte/sec
Known limitations:
- None

VERSION 1.03
Problems fixed:
- Unloading with "rmmod" caused segmentation fault (#10415)
- The link LED flickered from time to time, if no link was
  established (#10402)
- Installation problems with RedHat 6.0 (#10409)
New Features:
- Connection state ouput at "network connection up"
Known limitations:
- None

VERSION 1.02
Problems fixed:
- Failed with multiple adapters
- Failed with Single Port adapters
- Startup string was only displayed if adapter found
- No link could be established on certain switches when the switches were
  rebooted. (#10377)
Known limitations:
- Segmentation fault at "rmmod" with kernel 2.2.3 on some machines

VERSION 1.01
Problems fixed:
- Sensor status was not set back to 'ok' after 'warning/error'. (#10386)
Changes:
- improved parallelism in driver

VERSION 1.00
Known limitations:
- not tested with all kernel versions (I don't have that much time :-)
- only x86 version available (if you need others, ask for it)
- source code not completely available

***End of Readme File***



