]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/devs/eth/mips/upd985xx/v2_0/ChangeLog
Initial revision
[karo-tx-redboot.git] / packages / devs / eth / mips / upd985xx / v2_0 / ChangeLog
1 2002-06-14  Gary Thomas  <gary@chez-thomas.org>
2
3         * src/if_upd985xx.c: 
4         Need to include <pkgconf/io_eth_drivers.h> for proper configuration
5         of stand-alone (polled) vs. system (interrupt driven) mode.
6
7 2001-09-13  Hugo Tyson  <hmt@redhat.com>
8
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.
11
12 2001-08-30  Hugo Tyson  <hmt@redhat.com>
13
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.
18
19 2001-08-30  Hugo Tyson  <hmt@redhat.com>
20
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.
25
26 2001-08-24  Hugo Tyson  <hmt@redhat.com>
27
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.
31
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.
36
37 2001-08-20  Hugo Tyson  <hmt@redhat.com>
38
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.
46
47 2001-08-16  Hugo Tyson  <hmt@redhat.com>
48
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.
52
53 2001-08-16  Hugo Tyson  <hmt@redhat.com>
54
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.
61
62 2001-08-16  Hugo Tyson  <hmt@redhat.com>
63
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.
69
70 2001-08-15  Hugo Tyson  <hmt@redhat.com>
71
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.
82
83 2001-08-07  Hugo Tyson  <hmt@redhat.com>
84
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.
89
90         To summarize:
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.
99         (eth_upd985xx_send):
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.
102
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"
106
107 2001-07-16  Hugo Tyson  <hmt@redhat.com>
108
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.
112
113 2001-07-13  Hugo Tyson  <hmt@redhat.com>
114
115         * cdl/upd985xx_eth_drivers.cdl: Turn off the startup chatter.
116
117 2001-07-13  Hugo Tyson  <hmt@redhat.com>
118
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.
122
123 2001-07-13  Hugo Tyson  <hmt@redhat.com>
124
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.
129
130 2001-07-12  Hugo Tyson  <hmt@redhat.com>
131
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.
136
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
144         available.
145
146 2001-07-12  Hugo Tyson  <hmt@redhat.com>
147
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
154         than 1 rx buffer.
155
156 2001-07-12  Hugo Tyson  <hmt@redhat.com>
157
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.
165
166 2001-07-11  Hugo Tyson  <hmt@redhat.com>
167
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.
173
174 2001-07-11  Hugo Tyson  <hmt@redhat.com>
175
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
180         with that next.
181
182 2001-07-09  Hugo Tyson  <hmt@redhat.com>
183
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
187         for reference.
188         (eth_upd985xx_status): Also removed all the cruft about
189         renegotiating line status; it's not needed.
190
191 2001-07-06  Hugo Tyson  <hmt@redhat.com>
192
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.
197
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
202         accommodate this.
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.
206         (mii_write):
207         (mii_read): Change name of PHY address symbol to generic not SEEQ
208         'cos the board has changed.
209
210 2001-07-06  Hugo Tyson  <hmt@redhat.com>
211
212         * ChangeLog:
213         * cdl/upd985xx_eth_drivers.cdl:
214         * include/upd985xx_eth.h:
215         * src/if_upd985xx.c:
216         New files.  Initial checkin of limping along version of 
217         NEC upd985xx ethernet driver.
218
219         Limitations:
220         ESA is hard coded.
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.
224         Only one TX at once.
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.
228
229         It's oriented to the "old" (already) board - so the particular PHY
230         and GPIO layout.
231
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.
237 //
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.
241 //
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
245 // for more details.
246 //
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.
250 //
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.
257 //
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.
260 //
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 //===========================================================================