1 2002-06-14 Gary Thomas <gary@chez-thomas.org>
4 Need to include <pkgconf/io_eth_drivers.h> for proper configuration
5 of stand-alone (polled) vs. system (interrupt driven) mode.
7 2001-09-13 Hugo Tyson <hmt@redhat.com>
9 * src/if_upd985xx.c (upd985xx_eth_upd985xx_init): Fake an ESA if
10 we see all ones from the EEPROM as well as all zeros.
12 2001-08-30 Hugo Tyson <hmt@redhat.com>
14 * cdl/upd985xx_eth_drivers.cdl: Make the "..._E2ONLY" workaround
15 option on by default since this is how it will be used - the CPU
16 load does suffer somewhat if promisc mode is set in the hardware.
17 This should be unset to allow the workaround for E1 at 100Mbit.
19 2001-08-30 Hugo Tyson <hmt@redhat.com>
21 * src/if_upd985xx.c (PacketRxReady): Re-write the manual
22 implementation of ESA matching for workaround E1E2 when the device
23 is in promiscuous mode. It was having problems with the previous
24 version; this works better.
26 2001-08-24 Hugo Tyson <hmt@redhat.com>
28 * cdl/upd985xx_eth_drivers.cdl: Configury for an alternate case
29 where we workaround hardware bug E2 only, as a subset of the E1E2
30 complete fix. Added more description to the options too.
32 * src/if_upd985xx.c (eth_upd985xx_configure): Handle an alternate
33 case where we workaround hardware bug E2 only. This means leaving
34 the device in normal mode (unless set to promisc) and doing MAC
35 address filtering by hand anyway.
37 2001-08-20 Hugo Tyson <hmt@redhat.com>
39 * src/if_upd985xx.c: Guard all entrypoints that can mess with
40 hardware state by "active" check. If the net is included in an
41 app, but not used, it is init'd but not started - this can leave a
42 pending interrupt from RedBoot's use of the network to take us
43 completely by surprise. So init() acks and masks the interrupt,
44 can_send(), recv() and deliver() now demur if not active.
45 Also some additional STATIC's on entrypoint functions.
47 2001-08-16 Hugo Tyson <hmt@redhat.com>
49 * src/if_upd985xx.c (upd985xx_eth_upd985xx_init): If the EEPROM
50 contains nothing (or isn't fitted?) fake an ESA so we can get
51 RedBoot going on the board without special configury.
53 2001-08-16 Hugo Tyson <hmt@redhat.com>
55 * src/if_upd985xx.c (eth_upd985xx_configure): Use smaller numbers
56 for the Tx Fill Threshold [TX_FLTH] and DMA Tx Burst Size [DTBS]
57 because the hardware is even more broken than first throught -
58 this is new information on fault E4. I also tagged this with the
59 name of the option we would use if this were cdl controlled - but
60 since it's just setup I see no need to change it, so no CDL.
62 2001-08-16 Hugo Tyson <hmt@redhat.com>
64 * src/if_upd985xx.c (TxDone): Since it still wedged occasionally,
65 with an "out of rx buffers" status but nothing else, this is a
66 much simplified workaround for bug E8. If we see the suspect
67 transmit status, simply reset the whole subsystem there and then.
68 This leaves it in far more of a known state. It's neater anyway.
70 2001-08-15 Hugo Tyson <hmt@redhat.com>
72 * src/if_upd985xx.c (eth_upd985xx_send): Small hacks to recover
73 from various wedged states with bogus or unexpected ETH_ISR
74 values... 0x80000000: We detect this in the deliver routine and
75 totally reset the system. "out of rx buffers" with no "good rx":
76 we unmask and check for all these RX interrupts, not just "good
77 rx". Also PacketRxReady() shortcuts to resetting the receive
78 engine when it sees the problem. I suspect these might be caused
79 by the E8 workaround below, perhaps introducing some race
80 condition with turning off the receiver just when it rx'd - and of
81 course E1E2 means it receives far more packets.
83 2001-08-07 Hugo Tyson <hmt@redhat.com>
85 * src/if_upd985xx.c: Workaround various bugs in the hardware;
86 these workarounds are conditionally compiled via CDL options named
87 CYGOPT_DEVS_ETH_MIPS_UPD985XX_HARDWARE_BUGS_xxx in general; 'xxx'
88 is the reference for the mis-feature. All are enabled by default.
91 (eth_upd985xx_reset): xxx=S1: insert reads between writes to the
92 device to avoid a possible deadlock; macro FLUSH_WRITES().
93 (PacketRxReady): xxx=E1E2: we set the device in promiscuous mode
94 always, and implement ESA matching in code. The cost is small.
95 If promisc mode is set by the stack, we pass all packets.
96 (eth_upd985xx_send): xxx=E3: we copy any transmit that uses 3 or
97 more SGs into a static contiguous buffer and transmit from that
98 thus using only one buffer descriptor.
100 (TxDone): xxx=E8: we make a note that a tx ended badly and when
101 starting the next tx, we disable and reset the transmitter.
103 * cdl/upd985xx_eth_drivers.cdl: New subcomponent for controlling
104 these workarounds: CYGPKG_DEVS_ETH_MIPS_UPD985XX_HARDWARE_BUGS.
105 "Workarounds for Ethernet Hardware bugs"
107 2001-07-16 Hugo Tyson <hmt@redhat.com>
109 * src/if_upd985xx.c (PacketRxReady): Test for, rather than assert,
110 packet size in range. The hardware can report a tiny packet as
111 AOK, with no bad in the status, despite the doc's reassurances.
113 2001-07-13 Hugo Tyson <hmt@redhat.com>
115 * cdl/upd985xx_eth_drivers.cdl: Turn off the startup chatter.
117 2001-07-13 Hugo Tyson <hmt@redhat.com>
119 * src/if_upd985xx.c (TxDone): Test a few more bits for tx
120 complete; it turns out you can get tx underruns when the CPU us
121 heavily loaded, as in the tcp_echo tests with high load.
123 2001-07-13 Hugo Tyson <hmt@redhat.com>
125 * src/if_upd985xx.c (eth_upd985xx_send): Use HAL_DCACHE_STORE()
126 rather than syncing the whole of cache every sglist entry(=mbuf).
127 Turns out the cache op must be cache line aligned to work on the
128 4120, boo, unlike other MIPS and unlike the doc, even.
130 2001-07-12 Hugo Tyson <hmt@redhat.com>
132 * cdl/upd985xx_eth_drivers.cdl (CYGPKG_DEVS_ETH_MIPS_UPD985XX_ETH0):
133 Whole new section to address configuring the source of the MAC
134 address. Also allows configury of the device's name ("eth0") for
135 cohabitation with additional devices.
137 * src/if_upd985xx.c (upd985xx_eth_upd985xx_init): Pick up the ESA
138 from EEPROM if it's available, also support a fixed ESA from CDL
139 configuration land. A few minor changes to the structure
140 initialization to accommodate this; also pick up the interrupt
141 vector from struct init.
142 (eth_set_mac_address): New routine available via the ioctl()
143 entry, for use when neither a fixed nor EEPROM address is
146 2001-07-12 Hugo Tyson <hmt@redhat.com>
148 * src/if_upd985xx.c (NUM_RXBUFS): Reduce NUM_RXBUFS to 8; IME
149 fewer results in lost rx's in typical systems. Enlarge rx buffers
150 slightly, to accommodate oversize VLAN packets. 128 bytes extra
151 should be enough. Implemented eth_upd985xx_configure() selection
152 of promiscuous mode and allow oversize packets - up to the allowed
153 oversize. Otherwise we would get confused if a packet ate more
156 2001-07-12 Hugo Tyson <hmt@redhat.com>
158 * src/if_upd985xx.c: Tidy up debug print defaults; make functions
159 static; add a few extra statistics to the device object; pass a
160 p_eth_upd985xx around more consistently for if we switch to
161 multiple devices in future; comment out mii_write(); handle
162 stopping the device with a tx pending; remove some commented-out
163 templates copied from another driver; and fill in SNMP statistics.
164 In other words, many minor changes.
166 2001-07-11 Hugo Tyson <hmt@redhat.com>
168 * src/if_upd985xx.c (PacketRxReady): Recover from running out of
169 receive buffers. All very dodgy, but it seems to work.
170 Additional efforts are also made to reset the device, having
171 realized how hard it is to re-initialize the receive engine once
172 it has been awakened.
174 2001-07-11 Hugo Tyson <hmt@redhat.com>
176 * src/if_upd985xx.c: Efficient Rx now essentially working, with a
177 simple circular buffer, always linked into a ring, and one entry
178 of which is always NULL,NULL to bring the rx machinery to a halt.
179 If it reaches thus far the rx mechanism seems to jam; will deal
182 2001-07-09 Hugo Tyson <hmt@redhat.com>
184 * src/if_upd985xx.c: Rejigged version of the rx buffer system;
185 still not working properly, still not a good match for the
186 hardware's elusive semantics. Committed anyway, to keep it around
188 (eth_upd985xx_status): Also removed all the cruft about
189 renegotiating line status; it's not needed.
191 2001-07-06 Hugo Tyson <hmt@redhat.com>
193 * include/upd985xx_eth.h (ETH_MADR_PHY_DEVICE_PHYS_ADDRESS):
194 Change name of PHY address symbol to generic not SEEQ.
195 Comment out the non-standard symbols for useful bits that the
196 previous PHY device supported.
198 * src/if_upd985xx.c (eth_upd985xx_reset): If there is a valid ESA
199 in the MAC already, run with it - it would have come from the
200 not-fitted serial EEPROM, via some different registers.
201 (upd985xx_eth_upd985xx_init): Moved the call to reset about to
203 (eth_upd985xx_status): Omit renegotiation of link properties and
204 use the intersection of the capabilities bits to report what
205 speed, duplex, we are running at. More portable.
207 (mii_read): Change name of PHY address symbol to generic not SEEQ
208 'cos the board has changed.
210 2001-07-06 Hugo Tyson <hmt@redhat.com>
213 * cdl/upd985xx_eth_drivers.cdl:
214 * include/upd985xx_eth.h:
216 New files. Initial checkin of limping along version of
217 NEC upd985xx ethernet driver.
221 It talks to the PHY just to make sure - helped with debug anyway.
222 No SNMP data exported.
223 No ioctl() for promiscuous mode or VLAN mode.
225 Only one RX buffer, so no RX until serviced.
226 It seems to loose interrupts - inevitably, for an eth device - and
227 there's no "catchup" defense against this yet.
229 It's oriented to the "old" (already) board - so the particular PHY
232 //===========================================================================
233 //####ECOSGPLCOPYRIGHTBEGIN####
234 // -------------------------------------------
235 // This file is part of eCos, the Embedded Configurable Operating System.
236 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
238 // eCos is free software; you can redistribute it and/or modify it under
239 // the terms of the GNU General Public License as published by the Free
240 // Software Foundation; either version 2 or (at your option) any later version.
242 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
243 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
244 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
247 // You should have received a copy of the GNU General Public License along
248 // with eCos; if not, write to the Free Software Foundation, Inc.,
249 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
251 // As a special exception, if other files instantiate templates or use macros
252 // or inline functions from this file, or you compile this file and link it
253 // with other works to produce a work based on this file, this file does not
254 // by itself cause the resulting work to be covered by the GNU General Public
255 // License. However the source code for this file must still be made available
256 // in accordance with section (3) of the GNU General Public License.
258 // This exception does not invalidate any other reasons why a work based on
259 // this file might be covered by the GNU General Public License.
261 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
262 // at http://sources.redhat.com/ecos/ecos-license/
263 // -------------------------------------------
264 //####ECOSGPLCOPYRIGHTEND####
265 //===========================================================================