forked from Minki/linux
586 lines
12 KiB
Cheetah
586 lines
12 KiB
Cheetah
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||
|
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||
|
|
||
|
<book id="SiS900Guide">
|
||
|
|
||
|
<bookinfo>
|
||
|
|
||
|
<title>SiS 900/7016 Fast Ethernet Device Driver</title>
|
||
|
|
||
|
<authorgroup>
|
||
|
<author>
|
||
|
<firstname>Ollie</firstname>
|
||
|
<surname>Lho</surname>
|
||
|
</author>
|
||
|
|
||
|
<author>
|
||
|
<firstname>Lei Chun</firstname>
|
||
|
<surname>Chang</surname>
|
||
|
</author>
|
||
|
</authorgroup>
|
||
|
|
||
|
<edition>Document Revision: 0.3 for SiS900 driver v1.06 & v1.07</edition>
|
||
|
<pubdate>November 16, 2000</pubdate>
|
||
|
|
||
|
<copyright>
|
||
|
<year>1999</year>
|
||
|
<holder>Silicon Integrated System Corp.</holder>
|
||
|
</copyright>
|
||
|
|
||
|
<legalnotice>
|
||
|
<para>
|
||
|
This program is free software; 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.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This program 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.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
You should have received a copy of the GNU General Public License
|
||
|
along with this program; if not, write to the Free Software
|
||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
</para>
|
||
|
</legalnotice>
|
||
|
|
||
|
<abstract>
|
||
|
<para>
|
||
|
This document gives some information on installation and usage of SiS 900/7016
|
||
|
device driver under Linux.
|
||
|
</para>
|
||
|
</abstract>
|
||
|
|
||
|
</bookinfo>
|
||
|
|
||
|
<toc></toc>
|
||
|
|
||
|
<chapter id="intro">
|
||
|
<title>Introduction</title>
|
||
|
|
||
|
<para>
|
||
|
This document describes the revision 1.06 and 1.07 of SiS 900/7016 Fast Ethernet
|
||
|
device driver under Linux. The driver is developed by Silicon Integrated
|
||
|
System Corp. and distributed freely under the GNU General Public License (GPL).
|
||
|
The driver can be compiled as a loadable module and used under Linux kernel
|
||
|
version 2.2.x. (rev. 1.06)
|
||
|
With minimal changes, the driver can also be used under 2.3.x and 2.4.x kernel
|
||
|
(rev. 1.07), please see
|
||
|
<xref linkend="install"/>. If you are intended to
|
||
|
use the driver for earlier kernels, you are on your own.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The driver is tested with usual TCP/IP applications including
|
||
|
FTP, Telnet, Netscape etc. and is used constantly by the developers.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Please send all comments/fixes/questions to
|
||
|
<ulink url="mailto:lcchang@sis.com.tw">Lei-Chun Chang</ulink>.
|
||
|
</para>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="changes">
|
||
|
<title>Changes</title>
|
||
|
|
||
|
<para>
|
||
|
Changes made in Revision 1.07
|
||
|
|
||
|
<orderedlist>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Separation of sis900.c and sis900.h in order to move most
|
||
|
constant definition to sis900.h (many of those constants were
|
||
|
corrected)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Clean up PCI detection, the pci-scan from Donald Becker were not used,
|
||
|
just simple pci_find_*.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
MII detection is modified to support multiple mii transceiver.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Bugs in read_eeprom, mdio_* were removed.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Lot of sis900 irrelevant comments were removed/changed and
|
||
|
more comments were added to reflect the real situation.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Clean up of physical/virtual address space mess in buffer
|
||
|
descriptors.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Better transmit/receive error handling.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The driver now uses zero-copy single buffer management
|
||
|
scheme to improve performance.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Names of variables were changed to be more consistent.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Clean up of auo-negotiation and timer code.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Automatic detection and change of PHY on the fly.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Bug in mac probing fixed.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Fix 630E equalier problem by modifying the equalizer workaround rule.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Support for ICS1893 10/100 Interated PHYceiver.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Support for media select by ifconfig.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Added kernel-doc extratable documentation.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</orderedlist>
|
||
|
</para>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="tested">
|
||
|
<title>Tested Environment</title>
|
||
|
|
||
|
<para>
|
||
|
This driver is developed on the following hardware
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem>
|
||
|
|
||
|
<para>
|
||
|
Intel Celeron 500 with SiS 630 (rev 02) chipset
|
||
|
</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
|
||
|
<para>
|
||
|
SiS 900 (rev 01) and SiS 7016/7014 Fast Ethernet Card
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
and tested with these software environments
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem>
|
||
|
|
||
|
<para>
|
||
|
Red Hat Linux version 6.2
|
||
|
</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
|
||
|
<para>
|
||
|
Linux kernel version 2.4.0
|
||
|
</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
|
||
|
<para>
|
||
|
Netscape version 4.6
|
||
|
</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
|
||
|
<para>
|
||
|
NcFTP 3.0.0 beta 18
|
||
|
</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
|
||
|
<para>
|
||
|
Samba version 2.0.3
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</para>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="files">
|
||
|
<title>Files in This Package</title>
|
||
|
|
||
|
<para>
|
||
|
In the package you can find these files:
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term>sis900.c</term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Driver source file in C
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term>sis900.h</term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Header file for sis900.c
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term>sis900.sgml</term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
DocBook SGML source of the document
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term>sis900.txt</term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Driver document in plain text
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
</para>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="install">
|
||
|
<title>Installation</title>
|
||
|
|
||
|
<para>
|
||
|
Silicon Integrated System Corp. is cooperating closely with core Linux Kernel
|
||
|
developers. The revisions of SiS 900 driver are distributed by the usuall channels
|
||
|
for kernel tar files and patches. Those kernel tar files for official kernel and
|
||
|
patches for kernel pre-release can be download at
|
||
|
<ulink url="http://ftp.kernel.org/pub/linux/kernel/">official kernel ftp site</ulink>
|
||
|
and its mirrors.
|
||
|
The 1.06 revision can be found in kernel version later than 2.3.15 and pre-2.2.14,
|
||
|
and 1.07 revision can be found in kernel version 2.4.0.
|
||
|
If you have no prior experience in networking under Linux, please read
|
||
|
<ulink url="http://www.tldp.org/">Ethernet HOWTO</ulink> and
|
||
|
<ulink url="http://www.tldp.org/">Networking HOWTO</ulink> available from
|
||
|
Linux Documentation Project (LDP).
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The driver is bundled in release later than 2.2.11 and 2.3.15 so this
|
||
|
is the most easy case.
|
||
|
Be sure you have the appropriate packages for compiling kernel source.
|
||
|
Those packages are listed in Document/Changes in kernel source
|
||
|
distribution. If you have to install the driver other than those bundled
|
||
|
in kernel release, you should have your driver file
|
||
|
<filename>sis900.c</filename> and <filename>sis900.h</filename>
|
||
|
copied into <filename class="directory">/usr/src/linux/drivers/net/</filename> first.
|
||
|
There are two alternative ways to install the driver
|
||
|
</para>
|
||
|
|
||
|
<sect1>
|
||
|
<title>Building the driver as loadable module</title>
|
||
|
|
||
|
<para>
|
||
|
To build the driver as a loadable kernel module you have to reconfigure
|
||
|
the kernel to activate network support by
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
make menuconfig
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
Choose <quote>Loadable module support ---></quote>,
|
||
|
then select <quote>Enable loadable module support</quote>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Choose <quote>Network Device Support ---></quote>, select
|
||
|
<quote>Ethernet (10 or 100Mbit)</quote>.
|
||
|
Then select <quote>EISA, VLB, PCI and on board controllers</quote>,
|
||
|
and choose <quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote>
|
||
|
to <quote>M</quote>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
After reconfiguring the kernel, you can make the driver module by
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
make modules
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
The driver should be compiled with no errors. After compiling the driver,
|
||
|
the driver can be installed to proper place by
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
make modules_install
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
Load the driver into kernel by
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
insmod sis900
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
When loading the driver into memory, some information message can be view by
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen>
|
||
|
dmesg
|
||
|
</screen>
|
||
|
|
||
|
or
|
||
|
|
||
|
<screen>
|
||
|
cat /var/log/message
|
||
|
</screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If the driver is loaded properly you will have messages similar to this:
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
sis900.c: v1.07.06 11/07/2000
|
||
|
eth0: SiS 900 PCI Fast Ethernet at 0xd000, IRQ 10, 00:00:e8:83:7f:a4.
|
||
|
eth0: SiS 900 Internal MII PHY transceiver found at address 1.
|
||
|
eth0: Using SiS 900 Internal MII PHY as default
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
showing the version of the driver and the results of probing routine.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Once the driver is loaded, network can be brought up by
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
/sbin/ifconfig eth0 IPADDR broadcast BROADCAST netmask NETMASK media TYPE
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
where IPADDR, BROADCAST, NETMASK are your IP address, broadcast address and
|
||
|
netmask respectively. TYPE is used to set medium type used by the device.
|
||
|
Typical values are "10baseT"(twisted-pair 10Mbps Ethernet) or "100baseT"
|
||
|
(twisted-pair 100Mbps Ethernet). For more information on how to configure
|
||
|
network interface, please refer to
|
||
|
<ulink url="http://www.tldp.org/">Networking HOWTO</ulink>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The link status is also shown by kernel messages. For example, after the
|
||
|
network interface is activated, you may have the message:
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
eth0: Media Link On 100mbps full-duplex
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
If you try to unplug the twist pair (TP) cable you will get
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
eth0: Media Link Off
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
indicating that the link is failed.
|
||
|
</para>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1>
|
||
|
<title>Building the driver into kernel</title>
|
||
|
|
||
|
<para>
|
||
|
If you want to make the driver into kernel, choose <quote>Y</quote>
|
||
|
rather than <quote>M</quote> on
|
||
|
<quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote>
|
||
|
when configuring the kernel. Build the kernel image in the usual way
|
||
|
</para>
|
||
|
|
||
|
<para><screen>
|
||
|
make clean
|
||
|
|
||
|
make bzlilo
|
||
|
</screen></para>
|
||
|
|
||
|
<para>
|
||
|
Next time the system reboot, you have the driver in memory.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="problems">
|
||
|
<title>Known Problems and Bugs</title>
|
||
|
|
||
|
<para>
|
||
|
There are some known problems and bugs. If you find any other bugs please
|
||
|
mail to <ulink url="mailto:lcchang@sis.com.tw">lcchang@sis.com.tw</ulink>
|
||
|
|
||
|
<orderedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
AM79C901 HomePNA PHY is not thoroughly tested, there may be some
|
||
|
bugs in the <quote>on the fly</quote> change of transceiver.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
A bug is hidden somewhere in the receive buffer management code,
|
||
|
the bug causes NULL pointer reference in the kernel. This fault is
|
||
|
caught before bad things happen and reported with the message:
|
||
|
|
||
|
<computeroutput>
|
||
|
eth0: NULL pointer encountered in Rx ring, skipping
|
||
|
</computeroutput>
|
||
|
|
||
|
which can be viewed with <literal remap="tt">dmesg</literal> or
|
||
|
<literal remap="tt">cat /var/log/message</literal>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The media type change from 10Mbps to 100Mbps twisted-pair ethernet
|
||
|
by ifconfig causes the media link down.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</orderedlist>
|
||
|
</para>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="RHistory">
|
||
|
<title>Revision History</title>
|
||
|
|
||
|
<para>
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
November 13, 2000, Revision 1.07, seventh release, 630E problem fixed
|
||
|
and further clean up.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
November 4, 1999, Revision 1.06, Second release, lots of clean up
|
||
|
and optimization.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
August 8, 1999, Revision 1.05, Initial Public Release
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
</para>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="acknowledgements">
|
||
|
<title>Acknowledgements</title>
|
||
|
|
||
|
<para>
|
||
|
This driver was originally derived form
|
||
|
<ulink url="mailto:becker@cesdis1.gsfc.nasa.gov">Donald Becker</ulink>'s
|
||
|
<ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/pci-skeleton.c"
|
||
|
>pci-skeleton</ulink> and
|
||
|
<ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/rtl8139.c"
|
||
|
>rtl8139</ulink> drivers. Donald also provided various suggestion
|
||
|
regarded with improvements made in revision 1.06.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The 1.05 revision was created by
|
||
|
<ulink url="mailto:cmhuang@sis.com.tw">Jim Huang</ulink>, AMD 79c901
|
||
|
support was added by <ulink url="mailto:lcs@sis.com.tw">Chin-Shan Li</ulink>.
|
||
|
</para>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="functions">
|
||
|
<title>List of Functions</title>
|
||
|
!Idrivers/net/sis900.c
|
||
|
</chapter>
|
||
|
|
||
|
</book>
|