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

sk9dlin.txt created 22-Feb-2002

Readme File for sk9dlin v1.03
SysKonnect SK-9Dxx Gigabit Ethernet Adapter driver for LINUX

This file contains
(1) OVERVIEW
(2) REQUIRED FILES
(3) INSTALLATION
(4) INCLUSION OF ADAPTER AT SYSTEM START
(5) DRIVER PARAMETERS
(6) LARGE FRAME SUPPORT
(7) VLAN AND LINK AGGREGATION SUPPORT (IEEE 802.1, 802.1Q, 802.3AD)
(8) TROUBLESHOOTING
(9) HISTORY

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



(1) OVERVIEW
============

The sk9dlin driver supports the SysKonnect SK-9Dxx Gigabit Ethernet
Adapter family on Linux 2.2.x and above.
It has been tested with Linux on Intel/x86 machines.
***


(2) REQUIRED FILES
==================

The linux kernel source.
No additional files required.
***


(3) INSTALLATION
================

The following describes the actions required to install
the driver and start it manually. These steps should be carried
out during the initial driver setup. Once confirmed, the actions can
be included in the system start which is described in the next
chapter.

NOTE 1: To perform the following tasks you need 'root' access.
NOTE 2: In case of problems, read the section "Troubleshooting" below.

Step 1
Compile the driver as a module:
1. Enable 'loadable module support' in the kernel.
   For automatic driver start, the 'Kernel module loader' must be
   enabled, too.
2. Configure these options, then build and install the new kernel.
3. Reboot your system.

Step 2
Load the module manually by entering:
   modprobe sk9dlin

NOTE 1: If you have more than one SysKonnect SK-9Dxx adapter, the
        adapters will be listed as 'eth0', 'eth1', 'eth2', etc.
        For each adapter, repeat the steps 3 and 4.
NOTE 2: If there are other Ethernet adapters installed,
        your SysKonnect SK-9Dxx adapter can be mapped to 'eth1' or
	  'eth2' ...
	  The module installation message (in the system logfile or
	  on the console, depending on /etc/syslog.conf) displays a line
	  for each adapter found, stating the
	  corresponding 'ethX'.

Step 3
Select an IP address and assign it to the desired adapter by
entering:
   ifconfig eth0 <ip-address>
This way, the adapter is connected to the ethernet.
In addition, the following status message is displayed on the console:
"ethX: SysKonnect SK-9Dxx Gigabit Ethernet".

NOTE: If you are in doubt about IP addresses, ask your network
      administrator for assistance.

Your adapter should be fully operational now.

Step 4
1. Check the connection to other computers on your network
   by means of 'ping <otherstation>'.
2. View /proc/net/sk9dlin/[devicename] to receive information
   about the adapter configuration and statistics.

Step 5
To stop and unload the driver module use the following commands:
   ifconfig eth0 down
   rmmod sk9dlin
***


(4) INCLUSION OF ADAPTER AT SYSTEM START
========================================

Since a large number of different Linux distributions is
available, it is impossible to describe a general installation procedure
for the driver module. Instead, we provide some help for manually including
it into the system startup and as an example describe the
installation procedure for two distributions (SuSE and RedHat).
For other distributions, we recommend to refer to the manual of the 
specific distribution to receive information about the network 
configuration.

In the following section we assume that you have at least executed
steps 1-3 of the previous chapter.


4.1 MANUAL INSTALLATION
-----------------------

To initialize the adapter at system start, you must add the
commands from the previous chapter (steps 4-6) to one of the
system startup scripts. To learn more about the boot process and to
locate the correct script read the man pages for 'init' and 'inittab'.
You have to add the full path to the driver module in the 'insmod'-line.


4.2 PROCEDURE VALID FOR ALL DISTRIBUTIONS
-----------------------------------------

1.  Copy the driver module file sk9dlin.o into your modules directory:
 	cp sk9dlin.o /lib/modules/<kernelversion>/kernel/drivers/net/sk9dlin
2.  If this directory does not exist, create it.
    If required, modules can be loaded automatically by a kernel
    daemon on Linux systems.
3.  To make the new module known to this daemon, you must add one line to
    its configuration file (/etc/modules.conf, or old name: 
    /etc/conf.modules):	alias eth0 sk9dlin
    This command identifies the module (sk9dlin.o) that will be loaded as
    soon as accesses are made to the device eth0.
4. Continue with the section describing the distribution you use.


4.3 SuSE DISTRIBUTION
---------------------

1.  Call the SuSE setup tool, 'yast'.
2.  Go to:
 	System administration
 	Network configuration
 	Network base configuration
3.  Select the first unused line.
4.  Press F5.
5.  Select 'Ethernet'.
6.  Press F6.
7.  Enter the required addresses.
8.  Activate the device by pressing F4.
9.  Press F10 to save the new configuration.
10. Quit the setup tool.
11. Reboot your computer.
12. Check whether or not your adapter is working.


4.4 RedHat DISTRIBUTION (5.0)
-----------------------------

In order to use the RedHat configuration tool, Xwindow must be
running.

NOTE: The configuration tool requires a screen mode with at least 
      256 colors.

1.  Start X11 as root or change to the 'root' user by entering 'su'
    in an xterm window.
2.  Call 'control-panel'.
3.  Select 'network configuration'.
    The network configuration window is displayed.
4.  Select 'Interfaces'.
5.  Select 'Add'.
6.  Select 'Ethernet'.
7.  Press 'Ok'.
8.  Insert the IP address in the appropriate field.
9.  Press ENTER.
    The network address and the netmask will be inserted automatically.
10. Select the check box 'Activate interface at boot time'.
11. Press 'Done'.
    You will return to the network configuration window.
12. Press 'Activate'.
13. Select 'Routing'.
14. Select 'Add'.
15. Enter:
 	Device:    eth0
 	Network:   <network address>
 	Netmask:   <netmask>
 	Gateway:   <enter gateway address if you use one>

NOTE: A gateway is a device that connects your IP network to other IP 
      networks. If you are not sure whether you need one, ask your 
      network administrator.

16. Press 'Done'.
17. Press 'Save'.
18. Press 'Quit'.
19. Close the control panel.
20. Reboot your computer.
21. Check whether or not your adapter is working.
    If you re-enter the configuration tool later, your device
    will correctly be displayed as 'eth0'.
***


(5) 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 also pass parameters 
to the driver module.

If you use the kernel module loader, you can set driver parameters
in the file /etc/modules.conf.
1. To set the driver parameters in this file,
   insert a line of the form :
 	options sk9dlin ...
   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 sk9dlin 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 AutoNegotiation
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 sk9dlin AutoNeg=On,Off DupCap=Full,Half

NOTE: The number of adapters configurable this way is
      limited by the driver (file skgi.c, constant SK_MAX_CARD_PARAM).
      The current limit is 16. If you want to install more adapters
      adjust this number and recompile the file.


Adapter Parameters
------------------

- Auto-Negotiation
  Parameter: AutoNeg
  Values:    On, Off, Sense
  Default:   Sense

  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 is not set to
  "Sense".
  If auto-negotiation is "On", all three settings can be chosen.
  If auto-negotiation is "Off", only "Full" and "Half" are allowed.
  This setting is recommended 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 adapter reports during auto-negotiation.
  The meaning of the different modes is:
  -- Sym = Symetric:
     Both stations are allowed to send and receive PAUSE frames.
  -- SymOrRem = SymetricOrRemote: 
     Either both stations may send and receive PAUSE frames or at least 
     the local station agrees to receive PAUSE frames.
  -- LocSend = LocalSend: 
     Only the local station is allowed to send PAUSE frames.
  -- None: 
     Neither transmitting nor receiving station is allowed to send PAUSE 
     frames.

NOTE: This parameter is ignored if auto-negotiation is set to "Off".

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

This parameter defines the role of the port for the physical clock 
generation. In order for two 1000Base-T ports to communicate, one must 
take the role as master (providing timing information), while the other 
must be 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.

The 'Role' parameter are only valid for the SK-9D21 adapters.
***


(6) LARGE FRAME SUPPORT
=======================

Large frames (also referred to as jumbo frames) are supported by the
driver. This might lead to considerably improved throughput when large
amounts of data are transferred.
To enable large frames, set the MTU (maximum transfer unit)
of the interface to the desired value (up to 9000) by executing the
command:
	ifconfig eth0 mtu 9000

This command does only have an effect if two adapters are connected back-
to-back or if you use a switch that supports large frames. The switch 
should be configured to allow large frames (without auto-negotiation).
The setting must be executed for all adapters which are to accept large 
frames. If one adapter is not set to accept large frames, it will simply 
drop them.

You can switch back to the standard ethernet frame size by executing
the command:
	ifconfig eth0 mtu 1500

To make this setting persistent, add a script containing an 'ifconfig'
line to the system startup sequence (called "S99sk9dlin" or similar)
in /etc/rc.d/rc2.d).
***

(7) 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.
***


(8) TROUBLESHOOTING
===================

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

Problem:  The SK-9Dxx adapter cannot be found by the driver.
Solution: Look in /proc/pci for the following entry:
          'Ethernet controller: SysKonnect ...,
          'Vendor id=1148. Device id=4400.'
          If this entry exists, the SK-9Dxx 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.
          
          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'). It might be fixed in the
          2.2.x kernel versions.

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

Problem:  Upon use of the command 'ping <address>' the message
          "ping: sendto: Network is unreachable" is displayed.
Solution: Your route is not set correctly.
          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 see 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.
Solution: There is an incorrect route in your routing table.
          Check the routing table with the command 'route' and
          read the help section 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.
Solution: 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"
Solution: You are using a driver compiled for single processor
          machines on a multiprocessor machine with SMP (Symetric
          MultiProcessor) kernel.
          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 (support@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
***

(9) HISTORY
===========

VERSION 1.03

Changes:
- New driver info and boot messages

Problems fixed:
- GCC linker problems with RedHat distribution
- proc file system for 2.4.x kernel versions
- VLAN Error
- FlowCtrl init
- Module parameters
- Speed output (ProcFS)

Known limitations:
- only x86 version available
- only as module
- HalfDuplex not as Parameter


VERSION 1.02

Problems fixed:
- link problems with SK-9D21
- 'Role' parameter (master/slave)

Changes:
  Shows status after link up

Known limitations:
- only x86 version available
- proc file system works only for 2.2.x kernel versions



VERSION 1.01

Known limitations:
- only x86 version available
- link problems with SK-9D21
- proc file system works only for 2.2.x kernel versions

***End of Readme File***





