Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" |
| 3 | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> |
| 4 | |
| 5 | <book id="SiS900Guide"> |
| 6 | |
| 7 | <bookinfo> |
| 8 | |
| 9 | <title>SiS 900/7016 Fast Ethernet Device Driver</title> |
| 10 | |
| 11 | <authorgroup> |
| 12 | <author> |
| 13 | <firstname>Ollie</firstname> |
| 14 | <surname>Lho</surname> |
| 15 | </author> |
| 16 | |
| 17 | <author> |
| 18 | <firstname>Lei Chun</firstname> |
| 19 | <surname>Chang</surname> |
| 20 | </author> |
| 21 | </authorgroup> |
| 22 | |
| 23 | <edition>Document Revision: 0.3 for SiS900 driver v1.06 & v1.07</edition> |
| 24 | <pubdate>November 16, 2000</pubdate> |
| 25 | |
| 26 | <copyright> |
| 27 | <year>1999</year> |
| 28 | <holder>Silicon Integrated System Corp.</holder> |
| 29 | </copyright> |
| 30 | |
| 31 | <legalnotice> |
| 32 | <para> |
| 33 | This program is free software; you can redistribute it and/or modify |
| 34 | it under the terms of the GNU General Public License as published by |
| 35 | the Free Software Foundation; either version 2 of the License, or |
| 36 | (at your option) any later version. |
| 37 | </para> |
| 38 | |
| 39 | <para> |
| 40 | This program is distributed in the hope that it will be useful, |
| 41 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 42 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 43 | GNU General Public License for more details. |
| 44 | </para> |
| 45 | |
| 46 | <para> |
| 47 | You should have received a copy of the GNU General Public License |
| 48 | along with this program; if not, write to the Free Software |
| 49 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 50 | </para> |
| 51 | </legalnotice> |
| 52 | |
| 53 | <abstract> |
| 54 | <para> |
| 55 | This document gives some information on installation and usage of SiS 900/7016 |
| 56 | device driver under Linux. |
| 57 | </para> |
| 58 | </abstract> |
| 59 | |
| 60 | </bookinfo> |
| 61 | |
| 62 | <toc></toc> |
| 63 | |
| 64 | <chapter id="intro"> |
| 65 | <title>Introduction</title> |
| 66 | |
| 67 | <para> |
| 68 | This document describes the revision 1.06 and 1.07 of SiS 900/7016 Fast Ethernet |
| 69 | device driver under Linux. The driver is developed by Silicon Integrated |
| 70 | System Corp. and distributed freely under the GNU General Public License (GPL). |
| 71 | The driver can be compiled as a loadable module and used under Linux kernel |
| 72 | version 2.2.x. (rev. 1.06) |
| 73 | With minimal changes, the driver can also be used under 2.3.x and 2.4.x kernel |
| 74 | (rev. 1.07), please see |
| 75 | <xref linkend="install"/>. If you are intended to |
| 76 | use the driver for earlier kernels, you are on your own. |
| 77 | </para> |
| 78 | |
| 79 | <para> |
| 80 | The driver is tested with usual TCP/IP applications including |
| 81 | FTP, Telnet, Netscape etc. and is used constantly by the developers. |
| 82 | </para> |
| 83 | |
| 84 | <para> |
| 85 | Please send all comments/fixes/questions to |
| 86 | <ulink url="mailto:lcchang@sis.com.tw">Lei-Chun Chang</ulink>. |
| 87 | </para> |
| 88 | </chapter> |
| 89 | |
| 90 | <chapter id="changes"> |
| 91 | <title>Changes</title> |
| 92 | |
| 93 | <para> |
| 94 | Changes made in Revision 1.07 |
| 95 | |
| 96 | <orderedlist> |
| 97 | <listitem> |
| 98 | <para> |
| 99 | Separation of sis900.c and sis900.h in order to move most |
| 100 | constant definition to sis900.h (many of those constants were |
| 101 | corrected) |
| 102 | </para> |
| 103 | </listitem> |
| 104 | |
| 105 | <listitem> |
| 106 | <para> |
| 107 | Clean up PCI detection, the pci-scan from Donald Becker were not used, |
| 108 | just simple pci_find_*. |
| 109 | </para> |
| 110 | </listitem> |
| 111 | |
| 112 | <listitem> |
| 113 | <para> |
| 114 | MII detection is modified to support multiple mii transceiver. |
| 115 | </para> |
| 116 | </listitem> |
| 117 | |
| 118 | <listitem> |
| 119 | <para> |
| 120 | Bugs in read_eeprom, mdio_* were removed. |
| 121 | </para> |
| 122 | </listitem> |
| 123 | |
| 124 | <listitem> |
| 125 | <para> |
| 126 | Lot of sis900 irrelevant comments were removed/changed and |
| 127 | more comments were added to reflect the real situation. |
| 128 | </para> |
| 129 | </listitem> |
| 130 | |
| 131 | <listitem> |
| 132 | <para> |
| 133 | Clean up of physical/virtual address space mess in buffer |
| 134 | descriptors. |
| 135 | </para> |
| 136 | </listitem> |
| 137 | |
| 138 | <listitem> |
| 139 | <para> |
| 140 | Better transmit/receive error handling. |
| 141 | </para> |
| 142 | </listitem> |
| 143 | |
| 144 | <listitem> |
| 145 | <para> |
| 146 | The driver now uses zero-copy single buffer management |
| 147 | scheme to improve performance. |
| 148 | </para> |
| 149 | </listitem> |
| 150 | |
| 151 | <listitem> |
| 152 | <para> |
| 153 | Names of variables were changed to be more consistent. |
| 154 | </para> |
| 155 | </listitem> |
| 156 | |
| 157 | <listitem> |
| 158 | <para> |
| 159 | Clean up of auo-negotiation and timer code. |
| 160 | </para> |
| 161 | </listitem> |
| 162 | |
| 163 | <listitem> |
| 164 | <para> |
| 165 | Automatic detection and change of PHY on the fly. |
| 166 | </para> |
| 167 | </listitem> |
| 168 | |
| 169 | <listitem> |
| 170 | <para> |
| 171 | Bug in mac probing fixed. |
| 172 | </para> |
| 173 | </listitem> |
| 174 | |
| 175 | <listitem> |
| 176 | <para> |
| 177 | Fix 630E equalier problem by modifying the equalizer workaround rule. |
| 178 | </para> |
| 179 | </listitem> |
| 180 | |
| 181 | <listitem> |
| 182 | <para> |
| 183 | Support for ICS1893 10/100 Interated PHYceiver. |
| 184 | </para> |
| 185 | </listitem> |
| 186 | |
| 187 | <listitem> |
| 188 | <para> |
| 189 | Support for media select by ifconfig. |
| 190 | </para> |
| 191 | </listitem> |
| 192 | |
| 193 | <listitem> |
| 194 | <para> |
| 195 | Added kernel-doc extratable documentation. |
| 196 | </para> |
| 197 | </listitem> |
| 198 | |
| 199 | </orderedlist> |
| 200 | </para> |
| 201 | </chapter> |
| 202 | |
| 203 | <chapter id="tested"> |
| 204 | <title>Tested Environment</title> |
| 205 | |
| 206 | <para> |
| 207 | This driver is developed on the following hardware |
| 208 | |
| 209 | <itemizedlist> |
| 210 | <listitem> |
| 211 | |
| 212 | <para> |
| 213 | Intel Celeron 500 with SiS 630 (rev 02) chipset |
| 214 | </para> |
| 215 | </listitem> |
| 216 | <listitem> |
| 217 | |
| 218 | <para> |
| 219 | SiS 900 (rev 01) and SiS 7016/7014 Fast Ethernet Card |
| 220 | </para> |
| 221 | </listitem> |
| 222 | |
| 223 | </itemizedlist> |
| 224 | |
| 225 | and tested with these software environments |
| 226 | |
| 227 | <itemizedlist> |
| 228 | <listitem> |
| 229 | |
| 230 | <para> |
| 231 | Red Hat Linux version 6.2 |
| 232 | </para> |
| 233 | </listitem> |
| 234 | <listitem> |
| 235 | |
| 236 | <para> |
| 237 | Linux kernel version 2.4.0 |
| 238 | </para> |
| 239 | </listitem> |
| 240 | <listitem> |
| 241 | |
| 242 | <para> |
| 243 | Netscape version 4.6 |
| 244 | </para> |
| 245 | </listitem> |
| 246 | <listitem> |
| 247 | |
| 248 | <para> |
| 249 | NcFTP 3.0.0 beta 18 |
| 250 | </para> |
| 251 | </listitem> |
| 252 | <listitem> |
| 253 | |
| 254 | <para> |
| 255 | Samba version 2.0.3 |
| 256 | </para> |
| 257 | </listitem> |
| 258 | |
| 259 | </itemizedlist> |
| 260 | |
| 261 | </para> |
| 262 | |
| 263 | </chapter> |
| 264 | |
| 265 | <chapter id="files"> |
| 266 | <title>Files in This Package</title> |
| 267 | |
| 268 | <para> |
| 269 | In the package you can find these files: |
| 270 | </para> |
| 271 | |
| 272 | <para> |
| 273 | <variablelist> |
| 274 | |
| 275 | <varlistentry> |
| 276 | <term>sis900.c</term> |
| 277 | <listitem> |
| 278 | <para> |
| 279 | Driver source file in C |
| 280 | </para> |
| 281 | </listitem> |
| 282 | </varlistentry> |
| 283 | |
| 284 | <varlistentry> |
| 285 | <term>sis900.h</term> |
| 286 | <listitem> |
| 287 | <para> |
| 288 | Header file for sis900.c |
| 289 | </para> |
| 290 | </listitem> |
| 291 | </varlistentry> |
| 292 | |
| 293 | <varlistentry> |
| 294 | <term>sis900.sgml</term> |
| 295 | <listitem> |
| 296 | <para> |
| 297 | DocBook SGML source of the document |
| 298 | </para> |
| 299 | </listitem> |
| 300 | </varlistentry> |
| 301 | |
| 302 | <varlistentry> |
| 303 | <term>sis900.txt</term> |
| 304 | <listitem> |
| 305 | <para> |
| 306 | Driver document in plain text |
| 307 | </para> |
| 308 | </listitem> |
| 309 | </varlistentry> |
| 310 | |
| 311 | </variablelist> |
| 312 | </para> |
| 313 | </chapter> |
| 314 | |
| 315 | <chapter id="install"> |
| 316 | <title>Installation</title> |
| 317 | |
| 318 | <para> |
| 319 | Silicon Integrated System Corp. is cooperating closely with core Linux Kernel |
| 320 | developers. The revisions of SiS 900 driver are distributed by the usuall channels |
| 321 | for kernel tar files and patches. Those kernel tar files for official kernel and |
| 322 | patches for kernel pre-release can be download at |
| 323 | <ulink url="http://ftp.kernel.org/pub/linux/kernel/">official kernel ftp site</ulink> |
| 324 | and its mirrors. |
| 325 | The 1.06 revision can be found in kernel version later than 2.3.15 and pre-2.2.14, |
| 326 | and 1.07 revision can be found in kernel version 2.4.0. |
| 327 | If you have no prior experience in networking under Linux, please read |
| 328 | <ulink url="http://www.tldp.org/">Ethernet HOWTO</ulink> and |
| 329 | <ulink url="http://www.tldp.org/">Networking HOWTO</ulink> available from |
| 330 | Linux Documentation Project (LDP). |
| 331 | </para> |
| 332 | |
| 333 | <para> |
| 334 | The driver is bundled in release later than 2.2.11 and 2.3.15 so this |
| 335 | is the most easy case. |
| 336 | Be sure you have the appropriate packages for compiling kernel source. |
| 337 | Those packages are listed in Document/Changes in kernel source |
| 338 | distribution. If you have to install the driver other than those bundled |
| 339 | in kernel release, you should have your driver file |
| 340 | <filename>sis900.c</filename> and <filename>sis900.h</filename> |
| 341 | copied into <filename class="directory">/usr/src/linux/drivers/net/</filename> first. |
| 342 | There are two alternative ways to install the driver |
| 343 | </para> |
| 344 | |
| 345 | <sect1> |
| 346 | <title>Building the driver as loadable module</title> |
| 347 | |
| 348 | <para> |
| 349 | To build the driver as a loadable kernel module you have to reconfigure |
| 350 | the kernel to activate network support by |
| 351 | </para> |
| 352 | |
| 353 | <para><screen> |
| 354 | make menuconfig |
| 355 | </screen></para> |
| 356 | |
| 357 | <para> |
| 358 | Choose <quote>Loadable module support ---></quote>, |
| 359 | then select <quote>Enable loadable module support</quote>. |
| 360 | </para> |
| 361 | |
| 362 | <para> |
| 363 | Choose <quote>Network Device Support ---></quote>, select |
| 364 | <quote>Ethernet (10 or 100Mbit)</quote>. |
| 365 | Then select <quote>EISA, VLB, PCI and on board controllers</quote>, |
| 366 | and choose <quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote> |
| 367 | to <quote>M</quote>. |
| 368 | </para> |
| 369 | |
| 370 | <para> |
| 371 | After reconfiguring the kernel, you can make the driver module by |
| 372 | </para> |
| 373 | |
| 374 | <para><screen> |
| 375 | make modules |
| 376 | </screen></para> |
| 377 | |
| 378 | <para> |
| 379 | The driver should be compiled with no errors. After compiling the driver, |
| 380 | the driver can be installed to proper place by |
| 381 | </para> |
| 382 | |
| 383 | <para><screen> |
| 384 | make modules_install |
| 385 | </screen></para> |
| 386 | |
| 387 | <para> |
| 388 | Load the driver into kernel by |
| 389 | </para> |
| 390 | |
| 391 | <para><screen> |
| 392 | insmod sis900 |
| 393 | </screen></para> |
| 394 | |
| 395 | <para> |
| 396 | When loading the driver into memory, some information message can be view by |
| 397 | </para> |
| 398 | |
| 399 | <para> |
| 400 | <screen> |
| 401 | dmesg |
| 402 | </screen> |
| 403 | |
| 404 | or |
| 405 | |
| 406 | <screen> |
| 407 | cat /var/log/message |
| 408 | </screen> |
| 409 | </para> |
| 410 | |
| 411 | <para> |
| 412 | If the driver is loaded properly you will have messages similar to this: |
| 413 | </para> |
| 414 | |
| 415 | <para><screen> |
| 416 | sis900.c: v1.07.06 11/07/2000 |
| 417 | eth0: SiS 900 PCI Fast Ethernet at 0xd000, IRQ 10, 00:00:e8:83:7f:a4. |
| 418 | eth0: SiS 900 Internal MII PHY transceiver found at address 1. |
| 419 | eth0: Using SiS 900 Internal MII PHY as default |
| 420 | </screen></para> |
| 421 | |
| 422 | <para> |
| 423 | showing the version of the driver and the results of probing routine. |
| 424 | </para> |
| 425 | |
| 426 | <para> |
| 427 | Once the driver is loaded, network can be brought up by |
| 428 | </para> |
| 429 | |
| 430 | <para><screen> |
| 431 | /sbin/ifconfig eth0 IPADDR broadcast BROADCAST netmask NETMASK media TYPE |
| 432 | </screen></para> |
| 433 | |
| 434 | <para> |
| 435 | where IPADDR, BROADCAST, NETMASK are your IP address, broadcast address and |
| 436 | netmask respectively. TYPE is used to set medium type used by the device. |
| 437 | Typical values are "10baseT"(twisted-pair 10Mbps Ethernet) or "100baseT" |
| 438 | (twisted-pair 100Mbps Ethernet). For more information on how to configure |
| 439 | network interface, please refer to |
| 440 | <ulink url="http://www.tldp.org/">Networking HOWTO</ulink>. |
| 441 | </para> |
| 442 | |
| 443 | <para> |
| 444 | The link status is also shown by kernel messages. For example, after the |
| 445 | network interface is activated, you may have the message: |
| 446 | </para> |
| 447 | |
| 448 | <para><screen> |
| 449 | eth0: Media Link On 100mbps full-duplex |
| 450 | </screen></para> |
| 451 | |
| 452 | <para> |
| 453 | If you try to unplug the twist pair (TP) cable you will get |
| 454 | </para> |
| 455 | |
| 456 | <para><screen> |
| 457 | eth0: Media Link Off |
| 458 | </screen></para> |
| 459 | |
| 460 | <para> |
| 461 | indicating that the link is failed. |
| 462 | </para> |
| 463 | </sect1> |
| 464 | |
| 465 | <sect1> |
| 466 | <title>Building the driver into kernel</title> |
| 467 | |
| 468 | <para> |
| 469 | If you want to make the driver into kernel, choose <quote>Y</quote> |
| 470 | rather than <quote>M</quote> on |
| 471 | <quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote> |
| 472 | when configuring the kernel. Build the kernel image in the usual way |
| 473 | </para> |
| 474 | |
| 475 | <para><screen> |
| 476 | make clean |
| 477 | |
| 478 | make bzlilo |
| 479 | </screen></para> |
| 480 | |
| 481 | <para> |
| 482 | Next time the system reboot, you have the driver in memory. |
| 483 | </para> |
| 484 | |
| 485 | </sect1> |
| 486 | </chapter> |
| 487 | |
| 488 | <chapter id="problems"> |
| 489 | <title>Known Problems and Bugs</title> |
| 490 | |
| 491 | <para> |
| 492 | There are some known problems and bugs. If you find any other bugs please |
| 493 | mail to <ulink url="mailto:lcchang@sis.com.tw">lcchang@sis.com.tw</ulink> |
| 494 | |
| 495 | <orderedlist> |
| 496 | |
| 497 | <listitem> |
| 498 | <para> |
| 499 | AM79C901 HomePNA PHY is not thoroughly tested, there may be some |
| 500 | bugs in the <quote>on the fly</quote> change of transceiver. |
| 501 | </para> |
| 502 | </listitem> |
| 503 | |
| 504 | <listitem> |
| 505 | <para> |
| 506 | A bug is hidden somewhere in the receive buffer management code, |
| 507 | the bug causes NULL pointer reference in the kernel. This fault is |
| 508 | caught before bad things happen and reported with the message: |
| 509 | |
| 510 | <computeroutput> |
| 511 | eth0: NULL pointer encountered in Rx ring, skipping |
| 512 | </computeroutput> |
| 513 | |
| 514 | which can be viewed with <literal remap="tt">dmesg</literal> or |
| 515 | <literal remap="tt">cat /var/log/message</literal>. |
| 516 | </para> |
| 517 | </listitem> |
| 518 | |
| 519 | <listitem> |
| 520 | <para> |
| 521 | The media type change from 10Mbps to 100Mbps twisted-pair ethernet |
| 522 | by ifconfig causes the media link down. |
| 523 | </para> |
| 524 | </listitem> |
| 525 | |
| 526 | </orderedlist> |
| 527 | </para> |
| 528 | </chapter> |
| 529 | |
| 530 | <chapter id="RHistory"> |
| 531 | <title>Revision History</title> |
| 532 | |
| 533 | <para> |
| 534 | <itemizedlist> |
| 535 | |
| 536 | <listitem> |
| 537 | <para> |
| 538 | November 13, 2000, Revision 1.07, seventh release, 630E problem fixed |
| 539 | and further clean up. |
| 540 | </para> |
| 541 | </listitem> |
| 542 | |
| 543 | <listitem> |
| 544 | <para> |
| 545 | November 4, 1999, Revision 1.06, Second release, lots of clean up |
| 546 | and optimization. |
| 547 | </para> |
| 548 | </listitem> |
| 549 | |
| 550 | <listitem> |
| 551 | <para> |
| 552 | August 8, 1999, Revision 1.05, Initial Public Release |
| 553 | </para> |
| 554 | </listitem> |
| 555 | |
| 556 | </itemizedlist> |
| 557 | </para> |
| 558 | </chapter> |
| 559 | |
| 560 | <chapter id="acknowledgements"> |
| 561 | <title>Acknowledgements</title> |
| 562 | |
| 563 | <para> |
| 564 | This driver was originally derived form |
| 565 | <ulink url="mailto:becker@cesdis1.gsfc.nasa.gov">Donald Becker</ulink>'s |
| 566 | <ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/pci-skeleton.c" |
| 567 | >pci-skeleton</ulink> and |
| 568 | <ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/rtl8139.c" |
| 569 | >rtl8139</ulink> drivers. Donald also provided various suggestion |
| 570 | regarded with improvements made in revision 1.06. |
| 571 | </para> |
| 572 | |
| 573 | <para> |
| 574 | The 1.05 revision was created by |
| 575 | <ulink url="mailto:cmhuang@sis.com.tw">Jim Huang</ulink>, AMD 79c901 |
| 576 | support was added by <ulink url="mailto:lcs@sis.com.tw">Chin-Shan Li</ulink>. |
| 577 | </para> |
| 578 | </chapter> |
| 579 | |
| 580 | <chapter id="functions"> |
| 581 | <title>List of Functions</title> |
| 582 | !Idrivers/net/sis900.c |
| 583 | </chapter> |
| 584 | |
| 585 | </book> |