summaryrefslogtreecommitdiffstats
path: root/Documentation/networking/8139too.txt
blob: 6a75c7338801c94dfc169946ab3f0732e3802c57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

		"8139too" Fast Ethernet driver for Linux
	  Improved support for RTL-8139 Fast Ethernet adapters

	 Copyright 2000 Jeff Garzik <jgarzik@mandrakesoft.com>


	      Architectures supported (all PCI platforms):
		    x86, Alpha AXP, PowerPC, Sparc64




Disclaimer
----------

THIS DRIVER IS A DEVELOPMENT RELEASE FOR A DEVELOPMENT KERNEL.  DO NOT
USE IN A PRODUCTION ENVIRONMENT.

DO NOT CONTACT DONALD BECKER FOR SUPPORT OF THIS DRIVER, his driver is
completely different and maintained independently of the 8139too code base.



Requirements
------------
Kernel 2.3.41 or later.
A Fast Ethernet adapter containing an RTL8139-based chip.



Introduction
------------

The "8139too" Fast Ethernet driver for Linux 2.4.0 is a substantial
modification of the experimental rtl8139 driver from Donald Becker,
some versions of which appeared in 2.2.x and 2.3.x kernels.  The
RTL-8139 is a very low-cost Fast Ethernet chip, which makes it very
popular.

The step from 2.2.x to 2.4.x kernels brings many new features to Linux
device drivers.  Features for MMIO resources, a standard hot-plug API,
and other interfaces are now becoming requirements, as drivers move
off the x86 platform.  With that in mind, I have begun updating the
RTL-8139 driver to current 2.3.x (2.4) kernel standards and APIs, and
fixing the problems that users have been encountering.



Features of 8139too
-------------------
[note - this list intended for people familiar with kernel drivers]

** 100% MMIO, for full speed operation.  All users (so far) have
reported performance increases over their existing RTL drivers.

** Multi-platform support:  x86, Alpha, PPC, ...

** Use proper SMP spinlocking, fixing SMP interrupt bugs, making the
driver portable to non-x86 SMP platforms in the process.

** Use new PCI driver API for seamless, low-maintenance hot-plug support

** Several bugs fixes from original rtl8139 1.08r (October 5, 1999),
including the very common "transmit timeout" problem.

* Use new resource allocation API, required for hot-plug support
* Use new register read/write macros
* initcall support (module_init/exit)
* vastly improved debug tracing support
* code formatting in many places for readability
* use new init_etherdev() facilities

...and probably some other less important changes which I forgot.



Installation
------------

OPTION 1: Build inside kernel tree (into kernel image, or as module)

	(overwrite 8139too driver in kernel tree with different version)
	1) cp 8139too.c $my_source_tree/drivers/net/8139too.c
	
OPTION 2: Build outside kernel tree

	Use the included Makefile.



Tested Adapters
---------------
AOpen ALN-325C
KTI KF-230TX
KTI KF-230TX/2

(please add your adapter model to this list)



Status of Platform Support
--------------------------

(see errata below for details)

x86:		tested, stable
Alpha AXP:	tested, stable
PowerPC:	tested, unstable
Sparc64:	not tested



Special Thanks
--------------
The following people contributed invaluable testing time, feedback
and/or patches during the development of this driver.  Thanks to all
of them.

Donald Becker, Alan Cox, Richard Stallman, Linus Torvalds - inspiration

Alan Cox, Gerard Roudier - insight on posted MMIO writes

Martin Mares - code review

Tigran Aivazian - testing, code review, and a bug fix

Chmouel Boudjnah, Alexander Dietrich, Oleg Drokin,
James Fidell, Taso Hatzi, Peter K - intrepid test team

And thanks to every supporter free software.



Known Bugs / Errata / To-Do
---------------------------
The following issues are known, and are actively being pursued.  Patches
to resolve these issues is welcome.  If a problem occurs which is not in
the list, please report it.  That's why we do beta releases, after all...



1) Work with Donald to merge fixes and updates into his driver.

2) 2.2.x COMPATIBILITY SUPPORT IS BROKEN.  DO NOT USE IT.
It is included only for enterprising hackers willing to help fix it.

3) PPC platform has stability problems.

4) Sparc64 platform not tested at all.

5) Identify and fix "rx wedge" when ping flooded.

7) N-Way auto-negotiation is known to fail in some cases.  This problem
also occurs in the rtl8139 driver in kernels 2.2.x/2.3.x.  Solution:
Following technique in sunhme and sunbmac, use a kernel timer to
manually perform autonegotiation in case the network or card cannot do
it automatically.  (patches welcome)

8) Much improved command line / module parameter setup.  (patches and
suggestions welcome)

9) Better documentation.  (patches welcome)

10) User-mode (or maybe optional /proc) diagnostics program.




Change History
--------------
Version 0.9.3.3.2 - Feb 22, 2000 - second public beta release

* Begin integration of Daniel Kobras' MMIO flush patch (disabled for now)
* Softnet logic updates to fix bugs and improve performance
* Dynamic sizing of I/O resources (0x80 for older chips, 0xFF for newer ones)
* Remove bogus SiS entries from PCI probe table
* Add support for cards
	"Delta Electronics 8139 10/100BaseTX"
	"Addtron Technolgy 8139 10/100BaseTX"
* Fix major bug with rx ring buffer size (also present in rtl8139.c 1.08r)
* PCI DMA mapping by Dave Miller
* Complete rewrite of SMP locking logic
* Hotplug support
* Call rtl8139_hw_start from rtl8139_open, and remove duplicated code
  from rtl8139_open
* Reset NWay registers to sane defaults on rtl8139_open/hw_start
* Miscellaneous code cleanup

Version 0.7.0 - Feb 7, 2000 - first public beta release


[EOF]