1
2 "8139too" Fast Ethernet driver for Linux
3 Improved support for RTL-8139 10/100 Fast Ethernet adapters
4
5 Copyright 2000 Jeff Garzik <jgarzik@mandrakesoft.com>
6
7
8 Architectures supported (all PCI platforms):
9 x86, Alpha AXP, PowerPC, Sparc64
10
11 Kernel versions supported: 2.4.x
12
13
14
15 Disclaimer
16 ----------
17
18 THIS DRIVER IS A DEVELOPMENT RELEASE FOR A DEVELOPMENT KERNEL. DO NOT
19 USE IN A PRODUCTION ENVIRONMENT.
20
21 DO NOT CONTACT DONALD BECKER FOR SUPPORT OF THIS DRIVER, his driver is
22 completely different and maintained independently of the 8139too code base.
23
24
25
26 Requirements
27 ------------
28 Kernel 2.3.41 or later.
29 A Fast Ethernet adapter containing an RTL8139-based chip.
30
31
32
33 Introduction
34 ------------
35
36 The "8139too" Fast Ethernet driver for Linux 2.4.0 is a substantial
37 modification of the experimental rtl8139 driver from Donald Becker,
38 some versions of which appeared in 2.2.x and 2.3.x kernels. The
39 RTL-8139 is a very low-cost Fast Ethernet chip, which makes it very
40 popular.
41
42 The step from 2.2.x to 2.4.x kernels brings many new features to Linux
43 device drivers. Features for MMIO resources, a standard hot-plug API,
44 and other interfaces are now becoming requirements, as drivers move
45 off the x86 platform. With that in mind, I have begun updating the
46 RTL-8139 driver to current 2.3.x (2.4) kernel standards and APIs, and
47 fixing the problems that users have been encountering.
48
49
50
51 Features of 8139too
52 -------------------
53 [note - this list intended for people familiar with kernel drivers]
54
55 ** 100% MMIO, for full speed operation. All users (so far) have
56 reported performance increases over their existing RTL drivers.
57
58 ** Multi-platform support: x86, Alpha, PPC, ...
59
60 ** Use proper SMP spinlocking, fixing SMP interrupt bugs, making the
61 driver portable to non-x86 SMP platforms in the process.
62
63 ** Use new PCI driver API for seamless, low-maintenance hot-plug support
64
65 ** Several bugs fixes from original rtl8139 1.08r (October 5, 1999),
66 including the very common "transmit timeout" problem.
67
68 * Use new resource allocation API, required for hot-plug support
69 * Use new register read/write macros
70 * initcall support (module_init/exit)
71 * vastly improved debug tracing support
72 * code formatting in many places for readability
73 * use new init_etherdev() facilities
74
75 ...and probably some other less important changes which I forgot.
76
77
78
79 Installation
80 ------------
81
82 OPTION 1: Build inside kernel tree (into kernel image, or as module)
83
84 (overwrite 8139too driver in kernel tree with different version)
85 1) cp 8139too.c $my_source_tree/drivers/net/8139too.c
86
87 OPTION 2: Build outside kernel tree
88
89 Use the included Makefile.
90
91
92
93 Tested Adapters
94 ---------------
95 AOpen ALN-325C
96 KTI KF-230TX
97 KTI KF-230TX/2
98
99 (please add your adapter model to this list)
100
101
102
103 Status of Platform Support
104 --------------------------
105
106 (see errata below for details)
107
108 x86: tested, stable
109 Alpha AXP: tested, stable
110 PowerPC: tested, unstable
111 Sparc64: not tested
112
113
114
115 Special Thanks
116 --------------
117 The following people contributed invaluable testing time, feedback
118 and/or patches during the development of this driver. Thanks to all
119 of them.
120
121 Donald Becker, Alan Cox, Richard Stallman, Linus Torvalds - inspiration
122
123 Alan Cox, Gerard Roudier - insight on posted MMIO writes
124
125 Martin Mares - code review
126
127 Tigran Aivazian - testing, code review, and a bug fix
128
129 Chmouel Boudjnah, Alexander Dietrich, Oleg Drokin,
130 James Fidell, Taso Hatzi, Peter K - intrepid test team
131
132 And thanks to every supporter free software.
133
134 (see top of 8139too.c for further credits and kudos)
135
136
137
138 Submitting Bug Reports
139 ----------------------
140 Obtain and compile the modified rtl8139-diag source code from the
141 8139too driver Web site. This diagnostics programs, originally
142 from Donald Becker, has been modified to display all registers
143 on your RTL8139 chip, not just the first 0x80.
144
145 If possible, send the output of a working and broken driver with
146 rtl8139-diag -mmmaaavvveefN > my-output-file.txt
147
148 Send "lspci -vvv" or "cat /proc/pci" output for PCI information.
149
150
151
152 Known Bugs / Errata / To-Do
153 ---------------------------
154 The following issues are known, and are actively being pursued. Patches
155 to resolve these issues is welcome. If a problem occurs which is not in
156 the list, please report it. That's why we do beta releases, after all...
157
158
159
160 1) Work with Donald to merge fixes and updates into his driver.
161
162 2) ethtool support
163
164 3) PPC platform has stability problems. (XXX: verify this is still true)
165
166 4) Sparc64 platform not tested at all.
167
168 8) Much improved command line / module parameter setup. (patches and
169 suggestions welcome) (WIP)
170
171 9) Better documentation. (patches welcome)
172
173 11) RTL8139C support untested.
174
175 12) 10base-T support flaky or slow (todo: verify this is still true)
176
177
178
179
180 Change History
181 --------------
182
183 Version 0.9.11 - October 28, 2000
184
185 * Do not fail when PIO and MMIO region lengths do not match.
186 (They don't on some CardBus models, at least)
187 * Sanity check Rx packet status and size (Tobias)
188 * When handling a Tx timeout, disable Tx ASAP if not already.
189 * Do not inline Tx interrupt handler (better register usage)
190 * Handle dirty_tx signed integer wrap
191 * Do not abort Rx processing on lack of memory, keep going
192 until the current Rx ring is completely handling. (Tobias)
193 * Clean up rtl8139_close
194 * Whitespace correction for dev_kfree_skb_irq call
195
196
197 Version 0.9.10 - September 12, 2000
198
199 * Never wrap an Rx packet (faster Rx interrupt handling)
200 * Clear all TxAborted conditions (bug fix)
201 * Correct copyright
202 * More credits
203 * Update NWay doc URL
204 * Clean up commonly used ifdef switches
205 * Reorg info displayed at bootup/modprobe time
206 * Remove some unneeded spinlocks
207 * Misc cosmetic code cleanup
208 * Always print interrupt status for abnormal interrupts
209 * Use RealTek-recommended FIFO and DMA burst settings (1024 bytes)
210
211
212 Version 0.9.9 - September 9, 2000
213
214 * Fix oops-able bug in Rx ring wrap calculation (David Ford)
215 * Use PIO instead of MMIO when USE_IO_OPS is defined
216 * Move Rx error handling out of Rx interrupt handler, resulting in
217 tighter Rx interrupt processing
218
219
220 Version 0.9.8 - September 7, 2000
221
222 * Propagate request_irq error value (andrew morton)
223 * Correct potential oops bug in PCI DMA unmap code
224 * Fix bugs related to counting/discounting of 32-bit CRC in each Rx packet
225 * Fix 16/32-bit bug in interrupt status check
226 * Timer cleanups (andrew morton)
227
228
229 Version 0.9.7 - June 11, 2000
230
231 * Fix support for older chips (RTL8139 early chips should now work again)
232
233
234 Version 0.9.6 - May 30, 2000
235
236 * Fix 4-extra-bytes bug
237 (thanks to Markus Westergren, via Santiago Garcia Mantinan)
238 * Yet more improved chip recognition
239
240
241 Version 0.9.5 - May 17, 2000
242
243 * Improved chip version recognition
244 * Continue banging away at receiver hang problem
245 * Use spin_lock_irq in another spot
246 * Don't print anything on pci_enable_device, it does so for us
247 * Disable buggy NWay code
248 * Define TxConfig bitmasks
249
250
251 Version 0.9.4.1 - April 27, 2000 - third public beta release
252
253 * Replace several "magic numbers" with symbolic constants
254 * Differentiate between board-specific info and chip-specific info
255 (allows for easier support of specific boards or chips)
256 * Move some of the transmit side outside of the spinlock
257 by using atomic variables. Use spin_lock_irq instead of
258 spin_lock_irq{save,restore} in select places, for better performance.
259 * New module option "media" for forcing media selection. Functions the
260 same as "options" in other drivers, and will soon be renamed
261 'options' to be homogeneous.
262 * New power management wake-up code
263 * Slightly more verbose chip id messages in kernel log
264 * Add/correct chip register constant list
265 * New chipset wake up (open) logic
266 * No longer locks CONFIGx updates
267 * Do not set Interfame Gap (IFG) bits in TxConfig
268 * Better Rx reset logic in case of Rx FIFO Overflow
269 * For chips which support it, enable bit to automatically clear Rx
270 FIFO overflow
271 * No longer enable and disable interrupts in interrupt handler
272 (technique borrowed from BSD driver, appears to have problems
273 with some chips)
274 * H/W spinlock now protects ioctl
275 * Chipset-dependent RxConfig settings
276
277
278 Version 0.9.3.3.2 - Feb 22, 2000 - second public beta release
279
280 * Begin integration of Daniel Kobras' MMIO flush patch (disabled for now)
281 * Softnet logic updates to fix bugs and improve performance
282 * Dynamic sizing of I/O resources (0x80 for older chips, 0xFF for newer ones)
283 * Remove bogus SiS entries from PCI probe table
284 * Add support for cards
285 "Delta Electronics 8139 10/100BaseTX"
286 "Addtron Technolgy 8139 10/100BaseTX"
287 * Fix major bug with rx ring buffer size (also present in rtl8139.c 1.08r)
288 * PCI DMA mapping by Dave Miller
289 * Complete rewrite of SMP locking logic
290 * Hotplug support
291 * Call rtl8139_hw_start from rtl8139_open, and remove duplicated code
292 from rtl8139_open
293 * Reset NWay registers to sane defaults on rtl8139_open/hw_start
294 * Miscellaneous code cleanup
295
296
297 Version 0.7.0 - Feb 7, 2000 - first public beta release
298 * Initial public version, derived from Donald Becker's rtl8139.c v1.08r
299
300 [EOF]
301
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.