]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
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> |