Mercurial > ecos
diff packages/devs/eth/mips/upd985xx/current/ChangeLog @ 208:e0c0827131d1 ecos
Merge from eCos master repository on 2002-05-20-20:11:54-BST
| author | jlarmour |
|---|---|
| date | Mon, 20 May 2002 22:19:26 +0000 |
| parents | |
| children | d2c90368aeef |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/devs/eth/mips/upd985xx/current/ChangeLog @@ -0,0 +1,259 @@ +2001-09-13 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (upd985xx_eth_upd985xx_init): Fake an ESA if + we see all ones from the EEPROM as well as all zeros. + +2001-08-30 Hugo Tyson <hmt@redhat.com> + + * cdl/upd985xx_eth_drivers.cdl: Make the "..._E2ONLY" workaround + option on by default since this is how it will be used - the CPU + load does suffer somewhat if promisc mode is set in the hardware. + This should be unset to allow the workaround for E1 at 100Mbit. + +2001-08-30 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (PacketRxReady): Re-write the manual + implementation of ESA matching for workaround E1E2 when the device + is in promiscuous mode. It was having problems with the previous + version; this works better. + +2001-08-24 Hugo Tyson <hmt@redhat.com> + + * cdl/upd985xx_eth_drivers.cdl: Configury for an alternate case + where we workaround hardware bug E2 only, as a subset of the E1E2 + complete fix. Added more description to the options too. + + * src/if_upd985xx.c (eth_upd985xx_configure): Handle an alternate + case where we workaround hardware bug E2 only. This means leaving + the device in normal mode (unless set to promisc) and doing MAC + address filtering by hand anyway. + +2001-08-20 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c: Guard all entrypoints that can mess with + hardware state by "active" check. If the net is included in an + app, but not used, it is init'd but not started - this can leave a + pending interrupt from RedBoot's use of the network to take us + completely by surprise. So init() acks and masks the interrupt, + can_send(), recv() and deliver() now demur if not active. + Also some additional STATIC's on entrypoint functions. + +2001-08-16 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (upd985xx_eth_upd985xx_init): If the EEPROM + contains nothing (or isn't fitted?) fake an ESA so we can get + RedBoot going on the board without special configury. + +2001-08-16 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (eth_upd985xx_configure): Use smaller numbers + for the Tx Fill Threshold [TX_FLTH] and DMA Tx Burst Size [DTBS] + because the hardware is even more broken than first throught - + this is new information on fault E4. I also tagged this with the + name of the option we would use if this were cdl controlled - but + since it's just setup I see no need to change it, so no CDL. + +2001-08-16 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (TxDone): Since it still wedged occasionally, + with an "out of rx buffers" status but nothing else, this is a + much simplified workaround for bug E8. If we see the suspect + transmit status, simply reset the whole subsystem there and then. + This leaves it in far more of a known state. It's neater anyway. + +2001-08-15 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (eth_upd985xx_send): Small hacks to recover + from various wedged states with bogus or unexpected ETH_ISR + values... 0x80000000: We detect this in the deliver routine and + totally reset the system. "out of rx buffers" with no "good rx": + we unmask and check for all these RX interrupts, not just "good + rx". Also PacketRxReady() shortcuts to resetting the receive + engine when it sees the problem. I suspect these might be caused + by the E8 workaround below, perhaps introducing some race + condition with turning off the receiver just when it rx'd - and of + course E1E2 means it receives far more packets. + +2001-08-07 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c: Workaround various bugs in the hardware; + these workarounds are conditionally compiled via CDL options named + CYGOPT_DEVS_ETH_MIPS_UPD985XX_HARDWARE_BUGS_xxx in general; 'xxx' + is the reference for the mis-feature. All are enabled by default. + + To summarize: + (eth_upd985xx_reset): xxx=S1: insert reads between writes to the + device to avoid a possible deadlock; macro FLUSH_WRITES(). + (PacketRxReady): xxx=E1E2: we set the device in promiscuous mode + always, and implement ESA matching in code. The cost is small. + If promisc mode is set by the stack, we pass all packets. + (eth_upd985xx_send): xxx=E3: we copy any transmit that uses 3 or + more SGs into a static contiguous buffer and transmit from that + thus using only one buffer descriptor. + (eth_upd985xx_send): + (TxDone): xxx=E8: we make a note that a tx ended badly and when + starting the next tx, we disable and reset the transmitter. + + * cdl/upd985xx_eth_drivers.cdl: New subcomponent for controlling + these workarounds: CYGPKG_DEVS_ETH_MIPS_UPD985XX_HARDWARE_BUGS. + "Workarounds for Ethernet Hardware bugs" + +2001-07-16 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (PacketRxReady): Test for, rather than assert, + packet size in range. The hardware can report a tiny packet as + AOK, with no bad in the status, despite the doc's reassurances. + +2001-07-13 Hugo Tyson <hmt@redhat.com> + + * cdl/upd985xx_eth_drivers.cdl: Turn off the startup chatter. + +2001-07-13 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (TxDone): Test a few more bits for tx + complete; it turns out you can get tx underruns when the CPU us + heavily loaded, as in the tcp_echo tests with high load. + +2001-07-13 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (eth_upd985xx_send): Use HAL_DCACHE_STORE() + rather than syncing the whole of cache every sglist entry(=mbuf). + Turns out the cache op must be cache line aligned to work on the + 4120, boo, unlike other MIPS and unlike the doc, even. + +2001-07-12 Hugo Tyson <hmt@redhat.com> + + * cdl/upd985xx_eth_drivers.cdl (CYGPKG_DEVS_ETH_MIPS_UPD985XX_ETH0): + Whole new section to address configuring the source of the MAC + address. Also allows configury of the device's name ("eth0") for + cohabitation with additional devices. + + * src/if_upd985xx.c (upd985xx_eth_upd985xx_init): Pick up the ESA + from EEPROM if it's available, also support a fixed ESA from CDL + configuration land. A few minor changes to the structure + initialization to accommodate this; also pick up the interrupt + vector from struct init. + (eth_set_mac_address): New routine available via the ioctl() + entry, for use when neither a fixed nor EEPROM address is + available. + +2001-07-12 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (NUM_RXBUFS): Reduce NUM_RXBUFS to 8; IME + fewer results in lost rx's in typical systems. Enlarge rx buffers + slightly, to accommodate oversize VLAN packets. 128 bytes extra + should be enough. Implemented eth_upd985xx_configure() selection + of promiscuous mode and allow oversize packets - up to the allowed + oversize. Otherwise we would get confused if a packet ate more + than 1 rx buffer. + +2001-07-12 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c: Tidy up debug print defaults; make functions + static; add a few extra statistics to the device object; pass a + p_eth_upd985xx around more consistently for if we switch to + multiple devices in future; comment out mii_write(); handle + stopping the device with a tx pending; remove some commented-out + templates copied from another driver; and fill in SNMP statistics. + In other words, many minor changes. + +2001-07-11 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c (PacketRxReady): Recover from running out of + receive buffers. All very dodgy, but it seems to work. + Additional efforts are also made to reset the device, having + realized how hard it is to re-initialize the receive engine once + it has been awakened. + +2001-07-11 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c: Efficient Rx now essentially working, with a + simple circular buffer, always linked into a ring, and one entry + of which is always NULL,NULL to bring the rx machinery to a halt. + If it reaches thus far the rx mechanism seems to jam; will deal + with that next. + +2001-07-09 Hugo Tyson <hmt@redhat.com> + + * src/if_upd985xx.c: Rejigged version of the rx buffer system; + still not working properly, still not a good match for the + hardware's elusive semantics. Committed anyway, to keep it around + for reference. + (eth_upd985xx_status): Also removed all the cruft about + renegotiating line status; it's not needed. + +2001-07-06 Hugo Tyson <hmt@redhat.com> + + * include/upd985xx_eth.h (ETH_MADR_PHY_DEVICE_PHYS_ADDRESS): + Change name of PHY address symbol to generic not SEEQ. + Comment out the non-standard symbols for useful bits that the + previous PHY device supported. + + * src/if_upd985xx.c (eth_upd985xx_reset): If there is a valid ESA + in the MAC already, run with it - it would have come from the + not-fitted serial EEPROM, via some different registers. + (upd985xx_eth_upd985xx_init): Moved the call to reset about to + accommodate this. + (eth_upd985xx_status): Omit renegotiation of link properties and + use the intersection of the capabilities bits to report what + speed, duplex, we are running at. More portable. + (mii_write): + (mii_read): Change name of PHY address symbol to generic not SEEQ + 'cos the board has changed. + +2001-07-06 Hugo Tyson <hmt@redhat.com> + + * ChangeLog: + * cdl/upd985xx_eth_drivers.cdl: + * include/upd985xx_eth.h: + * src/if_upd985xx.c: + New files. Initial checkin of limping along version of + NEC upd985xx ethernet driver. + + Limitations: + ESA is hard coded. + It talks to the PHY just to make sure - helped with debug anyway. + No SNMP data exported. + No ioctl() for promiscuous mode or VLAN mode. + Only one TX at once. + Only one RX buffer, so no RX until serviced. + It seems to loose interrupts - inevitably, for an eth device - and + there's no "catchup" defense against this yet. + + It's oriented to the "old" (already) board - so the particular PHY + and GPIO layout. + +//=========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// +// eCos is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 or (at your option) any later version. +// +// eCos is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. +// +// You should have received a copy of the GNU General Public License along +// with eCos; if not, write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +// +// As a special exception, if other files instantiate templates or use macros +// or inline functions from this file, or you compile this file and link it +// with other works to produce a work based on this file, this file does not +// by itself cause the resulting work to be covered by the GNU General Public +// License. However the source code for this file must still be made available +// in accordance with section (3) of the GNU General Public License. +// +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// +// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//===========================================================================
