diff options
Diffstat (limited to 'ecos/packages/devs/eth/arm/ebsa285/current/ChangeLog')
-rw-r--r-- | ecos/packages/devs/eth/arm/ebsa285/current/ChangeLog | 448 |
1 files changed, 448 insertions, 0 deletions
diff --git a/ecos/packages/devs/eth/arm/ebsa285/current/ChangeLog b/ecos/packages/devs/eth/arm/ebsa285/current/ChangeLog new file mode 100644 index 0000000..33d0ed0 --- /dev/null +++ b/ecos/packages/devs/eth/arm/ebsa285/current/ChangeLog @@ -0,0 +1,448 @@ +2002-10-06 Andrew Lunn <andrew.lunn@ascom.ch> + + * include/devs_eth_ebsa285.inl: EBSA has the ethernet devices + multiplexed onto one interrupt. This got losted when generalising + the driver. + +2002-05-14 Jesper Skov <jskov@redhat.com> + + * include/devs_eth_ebsa285.inl: Fix warnings. + +2001-11-19 Hugo Tyson <hmt@redhat.com> +2001-11-19 Anssi Pulkkinen <Anssi.Pulkkinen@ascom.ch> + + * src/if_ebsa285.c (TxMachine): The test to see if there is a new + tx to start must also say "go" if the tx queue is full. Normally, + if the txqueue is full, a tx will be occurring at all times - so + one will complete soon, so the tx queue full flag will soon be + cleared, and this condition will recover. I suspect a subtle race + which effectively means a new tx is queued and fills the queue in + between two tx's, so no TxDone() follows, causes the hang which we + get without this extra test under high load. [CASE 106686] + +2001-08-31 Hugo Tyson <hmt@redhat.com> +2001-08-31 Sanjay Bisen <sanjay.bisen@ascom.ch> + + * src/if_ebsa285.c (TxDone): Check from prev change is moved to + the logical driver. Also, we zero the key in global state before + the callback - this should make no difference, but again it's good + practice, and ASCOM's tests indicate a benefit for CASE 106059. + +2001-08-22 Gary Thomas <gthomas@redhat.com> + + * src/if_ebsa285.c: + printf() is no longer a part of RedBoot. Thus all programs + must use diag_printf() and related functions instead. + +2001-06-08 Gary Thomas <gthomas@redhat.com> + + * src/if_ebsa285.c (TxDone): Defensive programming: only call + tx_done with new/unique key values. + +2001-03-12 Hugo Tyson <hmt@redhat.com> + + * src/if_ebsa285.c: Make device config more consistent with that + used in other 82559 platforms, and fix a typo. + +2001-02-20 Hugo Tyson <hmt@redhat.com> +2001-02-15 Martin Buck <martin.buck@ascom.ch> + + * src/if_ebsa285.c: Configure i82559 not to drop oversized frames. + This is required for VLAN support (because the maximum frame size + including the VLAN tag is 1518 instead of 1514) and shouldn't + hurt otherwise. To do this, we now always configure the chip when + i82559_start is called, instead of relying on the default + configuration if promiscuous mode is off. Another advantage is that + we're now able to turn promiscuous mode off again after it was + enabled once. + +2001-01-02 Hugo Tyson <hmt@redhat.com> + + * src/if_ebsa285.c (find_82559s_match_func): New func to match + complex PCI device requirements. + (pci_init_find_82559s): Use it, and the new PCI API to correctly + match a disparate bunch of devices on the one board. + +2000-12-21 Hugo Tyson <hmt@redhat.com> + + * src/if_ebsa285.c (pci_init_find_82559s): Also check for the PCI + device whose name is ... 0x1209; "82559ER". Thanks to Martin Buck + <martin.buck@ascom.ch> for the ID for that. + +2000-11-19 Gary Thomas <gthomas@redhat.com> + + * src/if_ebsa285.c (pci_init_find_82559s): Intel has at least + two devices equivalent to the 82559. Support both (0x1229, 0x01030). + +2000-10-05 Hugo Tyson <hmt@redhat.com> + + * src/if_ebsa285.c: Deal with device interrupts in a nested + fashion - disable/restore is the semantics now, rather than + unconditionally unmasking. Also go directly to the 21285 PIC's + interrupt control registers to gain atomicity for these. Poll for + ready received packets when acknowledging an interrupt in the + tranmitting world; a race here could lose an Rx interrupt. Which + doesn't matter on a busy system, but in quieter times... there + will always be such a race because of the vague way the i82559's + status bits reflect how it's yanking the interrupt line; you have + to poll until the interrupt is gone before returning else spurious + interrupt failures occur. The issue is to close the window as + tightly as possible, which this change achieves at a minor cost in + performance - because of the time spent polling when not required. + +2000-09-11 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (i82559_poll): Only diddle the interface we + were asked to. This is more correct in terms of the intent of the + API, though it shouldn't really be necessary. + +2000-09-06 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (pci_init_find_82559s): Add asserts and an + unconditional check that the PCI window as configured matches the + address and size of the pci_window region from the MLT. This is + here because at present the MLT and CT cannot intercommunicate + enough. The separation of the PCI window is needed because + otherwise the malloc heap will eat all memory. [This is related + to CR 902624-CR, "MLT needs to be configuration aware"] + +2000-09-01 Hugo Tyson <hmt@cygnus.co.uk> + + * OVERVIEW: This is part of the change to the network stack to + greatly reduce latencies both of (other) DSRs and of thread + scheduling. All the work that the network stack *and* individual + ether drivers used to do in DSRs (including alarm callbacks and + data copies to/from the device memory) is moved into a "fast + network thread" instead. It calls a device's "deliver" function + to do the work that was previously in the DSR. This is a separate + thread so that it can be set higher priority than application + threads in order to minimize packet loss (depending on the + driver), if required (the application threads presumed to be + higher priority in turn than the network thread). A crucial + consequence of this is that we are no longer locking against DSRs, + so a plain mutex can be used rather than the global scheduler + lock, thus simplifying all the splfoo/splx() style functions. + + * src/if_ebsa285.c: Minor: fix the big assert in i82559_send() + which suffered a race condition when called from the fast thread + rather than from a DSR. Major: Add a "deliver" entry to the + interface record for the "fast thread" implementation of the + network internal comms system. Provide a pass-up DSR to the + logical ether driver's DSR and appropriate delivery routine(s). + i82559_poll() now calls i82559_deliver() rather than the DSR. Add + valid data for mux'd DSR to pass on up. + +2000-09-01 Hugo Tyson <hmt@cygnus.co.uk> + + * tests/test_net_realtime.h: Tighten up the latency requirements + by a factor of 5; it all seems happy, so committed. + +2000-08-25 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (i82559_ioctl): A little further diddling; have + a bool to say whether the dot3 info is filled in. + +2000-08-24 Hugo Tyson <hmt@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl: Do not export a symbol for the + device info file (include/ebsa285_info.h) since nobody needs + (portably) to include it now. + + * src/if_ebsa285.c (i82559_ioctl): Handle new ioctl calls + ETH_DRV_GET_IF_STATS_UD and ETH_DRV_GET_IF_STATS to get loads of + statistical information out. _UD means update. The nonUD one can + be used instead mostly, if we find the performance hit too large. + This should allow SNMP (a) to not explode, (b) to get useful info + out of other device implementations than this one. + + * include/ebsa285_info.h: Remove all the macro cruft for feature + detecting of lots of individual statistics; we now just have a + catch-all struct that SNMP uses, defined in the common ether + driver environment. + +2000-08-15 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (PacketRxReady): Put back the check for very + small packets into the driver; the layer above checks for that + (defensive programming) but only *after* asserting that the size + is large enough, to help detect that scenario from other drivers. + I believe we only have struct ether_header available if CYGPKG_NET + but I could be wrong. + [CASE 104353] + +2000-08-08 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (eth_set_promiscuous_mode): + - ccs->config_bytes[18]=0x70; + + ccs->config_bytes[18]=0x72; // Keep the Padding Enable bit + ...otherwise short frame sends don't work in promisc mode. + [CASE 104289] + +2000-08-07 Gary Thomas <gthomas@redhat.com> + + * src/if_ebsa285.c (pciwindow_mem_alloc): Take out very noisy debug. + +2000-08-03 Gary Thomas <gthomas@redhat.com> + + * src/if_ebsa285.c: Changes for stand-alone mode. + + * cdl/ebsa285_eth_drivers.cdl: Ethernet driver package hierarchy changed. + Add option to control number of interfaces. + +2000-07-28 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (PacketRxReady): Do not attempt to forward + short packets; eth_drv.c assumes there is at least a header there. + (i82559_recv): Also be more careful and ASSERTive about -ve buffer + sizes; be more defensive about sglists. [CASE 104206] + +2000-07-26 Gary Thomas <gthomas@redhat.com> + + * src/if_ebsa285.c: Update for new eth_drv interfaces. + +2000-07-18 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (i82559_poll): Fill in the flesh of this, it + just calls ISR and DSR repeatedly. + (i82559_start): Look in the device record for promiscuous mode + flag; it should be passed though the common layer, but it's not + [yet] - this change from Andrew Lunn/ASCOM. Also a fix and delay + to the promisc mode code per se. + +2000-07-17 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (i82559_poll): New function, just to fill in + the interface record; not used. + +2000-06-27 Hugo Tyson <hmt@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl: Add sesquipedalian option + CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_82559_STATISTICS in (now) + component CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_STATISTICS to control + keeping (well, harvesting really) the i82559's internal stats. + Reputedly, it doesn't service the net whilst this is happening, so + it could be viewed a bad thing. Hence the option. + + * include/ebsa285_info.h: Only describe the I82559_COUNTERS + i82559_counters[2]; structs if full stats are to be kept. + + * src/if_ebsa285.c (update_statistics): Only include this if full + stats are to be kept. + +2000-06-27 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (ResetRxRing): Re-do the management of the + RxRing; have an end-of-list flag (EL) in the last entry, and as + you unload filled slots, drag it round after you. + +2000-06-14 Hugo Tyson <hmt@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl: Add option to control statistics + keeping. + + * include/ebsa285_info.h: Act on it. + +2000-06-13 Hugo Tyson <hmt@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl: Properly include the new header + file and define symbols to allow client code to get at it without + knowing the particular device driver name. + + * include/ebsa285_info.h: New file: export various statistics + information about the driver for use by monitoring and + network-management systems. This requires exposing the + (otherwise) internal structures of the driver. + + * src/if_ebsa285.c: remove a lot of structure definitions &c that + are now necessarily in the new header; add a couple of new + routines which provide status and update statistics from the + device into memory; tidy up control of whether stats-keeping is + enabled. + +2000-06-06 Hugo Tyson <hmt@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl (define_proc): Add #define of + CYGDAT_DEVS_ETH_DESCRIPTION in the config file for information. + +2000-05-12 Hugo Tyson <hmt@cygnus.co.uk> + + * tests/test_net_realtime.h (tnr_print_activity): New routine to + check the system is working, tidied up the API. It works! + +2000-05-11 Hugo Tyson <hmt@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl: Added export of the test header + below, and config opts for controlling EEPROM writing and all the + status chatter as the device starts up. + + * src/if_ebsa285.c: Reworked the code for reading and setting the + EEPROM that holds the MAC address. This is very ugly, but now + more reliable. Also tidied up printing cruft with neater + configury, and made it an option (for safety) whether it's + possible to write the EEPROM at all. + + * tests/test_net_realtime.h: New file - it is intended to be used + by networking tests to verify that latency is not compromised by + the stack and driver. It's very platform specific, hence the + location in here. This is a preliminary version only. + +2000-04-27 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c: A serious re-write. This cuts out a lot of + code from the old version and improves the performance greatly. + + The cruft was mainly doing lots of explicit event communication + between the ISR and DSR, when in fact all the state needed is + present in the tx/rx rings. So both ISRs and DSRs regard their + call as an opportunity to progress everything they can, rather + than only dealing with one interrupt cause at a time; the + connection between them is now rather looser. + + Interrups can now be re-enabled after the ISR (in other words they + are not masked in the ISR), no need to wait for the DSR, but in + consequence some DSR code must mask/unmask intrs as it works. + + The 82559 appears to be a little slow in reacting to commands and + state changes, so some interrupts were being lost - or persisting + beyond their desired life - so there's some kinda polling code to + deal with that also. We also rely on the foreground to kind of + poll in the same way, in the send/can_send calls - we know the + stack will re-try if necessary, though this is rare. + + The driver now works (albeit at much reduced performance) with as + few as 6 rx and tx buffers - in other words the "queue full/out of + rx buffers" states have been tested and all is well. It works + generally fine with 8 buffers of each kind. + + The mux ISR and DSR are now rather more polled than the old + versions; we just try to do things with both devices (if active) + by simply calling each unitary ISR/DSR respectively. + + I also re-ordered some of the code, moving utilities to the end of + the file and grouping together Tx and Rx machines a bit better. + +2000-04-13 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c: Attribution to Ron Spence, Pacific Softworks + added as a contributor. + +2000-04-07 Hugo Tyson <hmt@cygnus.co.uk> + + * ecos.db: Re-organize device packages. This is a massive change + involving deleting all the sources for serial and ethernet drivers + from where they used to live in + packages/io/serial/current/src/ARCH/PLATFORM.[ch] + packages/net/drivers/eth/PLATFORM/current/src/... + and reinstating them in + packages/devs/serial/ARCH/PLATFORM/current/src/... + packages/devs/eth/ARCH/PLATFORM/current/src/... + + All these new packages are properly defined in ecos.db, and are + all of type "hardware" so that a "target" can grab them. + + This directory layout is descriptive of the devices we have right + now, arch and platform are separate levels just to make it easier + to navigate in the filesystem and similar to the HAL structure in + the filesystem. + + It is *not* prescriptive of future work; for example, the mythical + common highly-portable 16550 serial driver which works on many + targets would be called "devs/serial/s16550/current", or a serial + device for a particular board (cogent springs to mind) that can + work with different CPUs fitted is "devs/serial/cogent/current". + + Changelogs have been preserved and replicated over all the new + packages, so that no history is lost. + + The contents of individual source files are unchanged; they build + in just the same emvironment except for a very few cases where the + config file name changed in this movement. + + Targets in ecos.db have been redefined to bring in all relevant + hardware packages including net and serial drivers (but the newly + included packages are only active if their desired parent is + available.) + + The names of CDL options (and their #defines of course) stay the + same for the serial drivers, for backward compatibility. + + * templates/*/current.ect: these have had CYGPKG_IO_SERIAL added + rather than it being in (almost) all target definitions. + +2000-03-29 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (i82559_recv): Be happy with NULLs in the + SGlist; it means the caller is out of memory so drop the packet on + the floor. Also remove a completely redundant test. + +2000-03-06 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (i82559_can_send): Update net driver to new + interface style. This is incomplete wrt promiscuous mode, but + that's probably about all. + +2000-02-14 Gary Thomas <gthomas@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl: Update CDL to indicate multiple + interface support. + +2000-02-14 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (pci_init_find_82559s): Tidy comments somewhat + and set debug and stats collecting defines to most friendly + settings. + +2000-02-10 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c (PacketRxReady): Fix bug; current descriptor + was not being write back for the callback to use. Hence asserts + on state of rfd were firing in busy times - that leading rfd had + already been drained. + + Also rationalized meaning of DEBUG printy symbols a bit - it's now + chatty during startup/foreground manipulations but not in any + performance related activities ie. rx or tx. + +2000-02-09 John Dallaway <jld@cygnus.co.uk> + + * cdl/ebsa285_eth_drivers.cdl: + + Reparent under CYGPKG_NET_ETH_DRIVERS and tidy display strings. + +2000-02-08 Hugo Tyson <hmt@cygnus.co.uk> + + * src/if_ebsa285.c: New File. + * cdl/ebsa285_eth_drivers.cdl: New File. + + Initial Checkin of EBSA285 Ethernet driver. + + It's one monolithic file at present, and should be split up into a + more generic Intel 82559 driver plus platform-specific parts (PCI + et al) plus eCos/Red-Hat-BSD-stack parts. + +//=========================================================================== +// ####GPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +// +// This program 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. +// +// This program 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 this program; if not, write to the +// Free Software Foundation, Inc., 51 Franklin Street, +// Fifth Floor, Boston, MA 02110-1301, USA. +// ------------------------------------------- +// ####GPLCOPYRIGHTEND#### +//=========================================================================== + + + |