Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | |
| 2 | SiS 900/7016 Fast Ethernet Device Driver |
| 3 | |
| 4 | Ollie Lho |
| 5 | |
| 6 | Lei Chun Chang |
| 7 | |
| 8 | Copyright © 1999 by Silicon Integrated System Corp. |
| 9 | |
| 10 | This document gives some information on installation and usage of SiS |
| 11 | 900/7016 device driver under Linux. |
| 12 | |
| 13 | This program is free software; you can redistribute it and/or modify |
| 14 | it under the terms of the GNU General Public License as published by |
| 15 | the Free Software Foundation; either version 2 of the License, or (at |
| 16 | your option) any later version. |
| 17 | |
| 18 | This program is distributed in the hope that it will be useful, but |
| 19 | WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 21 | General Public License for more details. |
| 22 | |
| 23 | You should have received a copy of the GNU General Public License |
| 24 | along with this program; if not, write to the Free Software |
| 25 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
| 26 | USA |
| 27 | _________________________________________________________________ |
| 28 | |
| 29 | Table of Contents |
| 30 | 1. Introduction |
| 31 | 2. Changes |
| 32 | 3. Tested Environment |
| 33 | 4. Files in This Package |
| 34 | 5. Installation |
| 35 | |
| 36 | Building the driver as loadable module |
| 37 | Building the driver into kernel |
| 38 | |
| 39 | 6. Known Problems and Bugs |
| 40 | 7. Revision History |
| 41 | 8. Acknowledgements |
| 42 | _________________________________________________________________ |
| 43 | |
| 44 | Chapter 1. Introduction |
| 45 | |
| 46 | This document describes the revision 1.06 and 1.07 of SiS 900/7016 |
| 47 | Fast Ethernet device driver under Linux. The driver is developed by |
| 48 | Silicon Integrated System Corp. and distributed freely under the GNU |
| 49 | General Public License (GPL). The driver can be compiled as a loadable |
| 50 | module and used under Linux kernel version 2.2.x. (rev. 1.06) With |
| 51 | minimal changes, the driver can also be used under 2.3.x and 2.4.x |
| 52 | kernel (rev. 1.07), please see Chapter 5. If you are intended to use |
| 53 | the driver for earlier kernels, you are on your own. |
| 54 | |
| 55 | The driver is tested with usual TCP/IP applications including FTP, |
| 56 | Telnet, Netscape etc. and is used constantly by the developers. |
| 57 | |
| 58 | Please send all comments/fixes/questions to Lei-Chun Chang. |
| 59 | _________________________________________________________________ |
| 60 | |
| 61 | Chapter 2. Changes |
| 62 | |
| 63 | Changes made in Revision 1.07 |
| 64 | |
| 65 | 1. Separation of sis900.c and sis900.h in order to move most constant |
| 66 | definition to sis900.h (many of those constants were corrected) |
| 67 | 2. Clean up PCI detection, the pci-scan from Donald Becker were not |
| 68 | used, just simple pci_find_*. |
| 69 | 3. MII detection is modified to support multiple mii transceiver. |
| 70 | 4. Bugs in read_eeprom, mdio_* were removed. |
| 71 | 5. Lot of sis900 irrelevant comments were removed/changed and more |
| 72 | comments were added to reflect the real situation. |
| 73 | 6. Clean up of physical/virtual address space mess in buffer |
| 74 | descriptors. |
| 75 | 7. Better transmit/receive error handling. |
| 76 | 8. The driver now uses zero-copy single buffer management scheme to |
| 77 | improve performance. |
| 78 | 9. Names of variables were changed to be more consistent. |
| 79 | 10. Clean up of auo-negotiation and timer code. |
| 80 | 11. Automatic detection and change of PHY on the fly. |
| 81 | 12. Bug in mac probing fixed. |
| 82 | 13. Fix 630E equalier problem by modifying the equalizer workaround |
| 83 | rule. |
| 84 | 14. Support for ICS1893 10/100 Interated PHYceiver. |
| 85 | 15. Support for media select by ifconfig. |
| 86 | 16. Added kernel-doc extratable documentation. |
| 87 | _________________________________________________________________ |
| 88 | |
| 89 | Chapter 3. Tested Environment |
| 90 | |
| 91 | This driver is developed on the following hardware |
| 92 | |
| 93 | * Intel Celeron 500 with SiS 630 (rev 02) chipset |
| 94 | * SiS 900 (rev 01) and SiS 7016/7014 Fast Ethernet Card |
| 95 | |
| 96 | and tested with these software environments |
| 97 | |
| 98 | * Red Hat Linux version 6.2 |
| 99 | * Linux kernel version 2.4.0 |
| 100 | * Netscape version 4.6 |
| 101 | * NcFTP 3.0.0 beta 18 |
| 102 | * Samba version 2.0.3 |
| 103 | _________________________________________________________________ |
| 104 | |
| 105 | Chapter 4. Files in This Package |
| 106 | |
| 107 | In the package you can find these files: |
| 108 | |
| 109 | sis900.c |
| 110 | Driver source file in C |
| 111 | |
| 112 | sis900.h |
| 113 | Header file for sis900.c |
| 114 | |
| 115 | sis900.sgml |
| 116 | DocBook SGML source of the document |
| 117 | |
| 118 | sis900.txt |
| 119 | Driver document in plain text |
| 120 | _________________________________________________________________ |
| 121 | |
| 122 | Chapter 5. Installation |
| 123 | |
| 124 | Silicon Integrated System Corp. is cooperating closely with core Linux |
| 125 | Kernel developers. The revisions of SiS 900 driver are distributed by |
| 126 | the usuall channels for kernel tar files and patches. Those kernel tar |
| 127 | files for official kernel and patches for kernel pre-release can be |
| 128 | download at official kernel ftp site and its mirrors. The 1.06 |
| 129 | revision can be found in kernel version later than 2.3.15 and |
| 130 | pre-2.2.14, and 1.07 revision can be found in kernel version 2.4.0. If |
| 131 | you have no prior experience in networking under Linux, please read |
| 132 | Ethernet HOWTO and Networking HOWTO available from Linux Documentation |
| 133 | Project (LDP). |
| 134 | |
| 135 | The driver is bundled in release later than 2.2.11 and 2.3.15 so this |
| 136 | is the most easy case. Be sure you have the appropriate packages for |
| 137 | compiling kernel source. Those packages are listed in Document/Changes |
| 138 | in kernel source distribution. If you have to install the driver other |
| 139 | than those bundled in kernel release, you should have your driver file |
| 140 | sis900.c and sis900.h copied into /usr/src/linux/drivers/net/ first. |
| 141 | There are two alternative ways to install the driver |
| 142 | _________________________________________________________________ |
| 143 | |
| 144 | Building the driver as loadable module |
| 145 | |
| 146 | To build the driver as a loadable kernel module you have to |
| 147 | reconfigure the kernel to activate network support by |
| 148 | |
| 149 | make menuconfig |
| 150 | |
| 151 | Choose "Loadable module support --->", then select "Enable loadable |
| 152 | module support". |
| 153 | |
| 154 | Choose "Network Device Support --->", select "Ethernet (10 or |
| 155 | 100Mbit)". Then select "EISA, VLB, PCI and on board controllers", and |
| 156 | choose "SiS 900/7016 PCI Fast Ethernet Adapter support" to "M". |
| 157 | |
| 158 | After reconfiguring the kernel, you can make the driver module by |
| 159 | |
| 160 | make modules |
| 161 | |
| 162 | The driver should be compiled with no errors. After compiling the |
| 163 | driver, the driver can be installed to proper place by |
| 164 | |
| 165 | make modules_install |
| 166 | |
| 167 | Load the driver into kernel by |
| 168 | |
| 169 | insmod sis900 |
| 170 | |
| 171 | When loading the driver into memory, some information message can be |
| 172 | view by |
| 173 | |
| 174 | dmesg |
| 175 | |
| 176 | or |
| 177 | cat /var/log/message |
| 178 | |
| 179 | If the driver is loaded properly you will have messages similar to |
| 180 | this: |
| 181 | |
| 182 | sis900.c: v1.07.06 11/07/2000 |
| 183 | eth0: SiS 900 PCI Fast Ethernet at 0xd000, IRQ 10, 00:00:e8:83:7f:a4. |
| 184 | eth0: SiS 900 Internal MII PHY transceiver found at address 1. |
| 185 | eth0: Using SiS 900 Internal MII PHY as default |
| 186 | |
| 187 | showing the version of the driver and the results of probing routine. |
| 188 | |
| 189 | Once the driver is loaded, network can be brought up by |
| 190 | |
| 191 | /sbin/ifconfig eth0 IPADDR broadcast BROADCAST netmask NETMASK media TYPE |
| 192 | |
| 193 | where IPADDR, BROADCAST, NETMASK are your IP address, broadcast |
| 194 | address and netmask respectively. TYPE is used to set medium type used |
| 195 | by the device. Typical values are "10baseT"(twisted-pair 10Mbps |
| 196 | Ethernet) or "100baseT" (twisted-pair 100Mbps Ethernet). For more |
| 197 | information on how to configure network interface, please refer to |
| 198 | Networking HOWTO. |
| 199 | |
| 200 | The link status is also shown by kernel messages. For example, after |
| 201 | the network interface is activated, you may have the message: |
| 202 | |
| 203 | eth0: Media Link On 100mbps full-duplex |
| 204 | |
| 205 | If you try to unplug the twist pair (TP) cable you will get |
| 206 | |
| 207 | eth0: Media Link Off |
| 208 | |
| 209 | indicating that the link is failed. |
| 210 | _________________________________________________________________ |
| 211 | |
| 212 | Building the driver into kernel |
| 213 | |
| 214 | If you want to make the driver into kernel, choose "Y" rather than "M" |
| 215 | on "SiS 900/7016 PCI Fast Ethernet Adapter support" when configuring |
| 216 | the kernel. Build the kernel image in the usual way |
| 217 | |
| 218 | make clean |
| 219 | |
| 220 | make bzlilo |
| 221 | |
| 222 | Next time the system reboot, you have the driver in memory. |
| 223 | _________________________________________________________________ |
| 224 | |
| 225 | Chapter 6. Known Problems and Bugs |
| 226 | |
| 227 | There are some known problems and bugs. If you find any other bugs |
| 228 | please mail to lcchang@sis.com.tw |
| 229 | |
| 230 | 1. AM79C901 HomePNA PHY is not thoroughly tested, there may be some |
| 231 | bugs in the "on the fly" change of transceiver. |
| 232 | 2. A bug is hidden somewhere in the receive buffer management code, |
| 233 | the bug causes NULL pointer reference in the kernel. This fault is |
| 234 | caught before bad things happen and reported with the message: |
| 235 | eth0: NULL pointer encountered in Rx ring, skipping which can be |
| 236 | viewed with dmesg or cat /var/log/message. |
| 237 | 3. The media type change from 10Mbps to 100Mbps twisted-pair ethernet |
| 238 | by ifconfig causes the media link down. |
| 239 | _________________________________________________________________ |
| 240 | |
| 241 | Chapter 7. Revision History |
| 242 | |
| 243 | * November 13, 2000, Revision 1.07, seventh release, 630E problem |
| 244 | fixed and further clean up. |
| 245 | * November 4, 1999, Revision 1.06, Second release, lots of clean up |
| 246 | and optimization. |
| 247 | * August 8, 1999, Revision 1.05, Initial Public Release |
| 248 | _________________________________________________________________ |
| 249 | |
| 250 | Chapter 8. Acknowledgements |
| 251 | |
| 252 | This driver was originally derived form Donald Becker's pci-skeleton |
| 253 | and rtl8139 drivers. Donald also provided various suggestion regarded |
| 254 | with improvements made in revision 1.06. |
| 255 | |
| 256 | The 1.05 revision was created by Jim Huang, AMD 79c901 support was |
| 257 | added by Chin-Shan Li. |