source: SVN/cambria/redboot/packages/devs/eth/intel/i82559/current/ChangeLog @ 1

Last change on this file since 1 was 1, checked in by Tim Harvey, 2 years ago

restored latest version of files from server backup

Signed-off-by: Tim Harvey <tharvey@…>

File size: 32.7 KB
Line 
12004-08-12  Jani Monoses <jani@iv.ro>
2
3        * src/if_i82559.c: Fix builing with lwip.
4
52004-01-15  Jeff Daly  <jeffrey.daly@intel.com>
6
7        * src/if_i82559.c: support for large EEPROMs
8
92004-01-05  Gary Thomas  <gary@mlbassoc.com>
10
11        * src/if_i82559.c: Names of FLASH config types changed.
12
132003-02-27  Mark Salter  <msalter@redhat.com>
14
15        * src/if_i82559.c (eth_set_mac_address): Correct writing
16        of wrong address to EEPROM.
17
182003-02-22  Mark Salter  <msalter@redhat.com>
19
20        * src/if_i82559.c: Fix endian issues with EEPROM writing.
21        Use read-modify-write to set EEPROM mac address. Support
22        writing to EEPROM the mac address obtained from
23        CYGHWR_DEVS_ETH_INTEL_I82559_GET_ESA.
24
252003-02-12  Mark Salter  <msalter@redhat.com>
26
27        * src/if_i82559.c: Remove restriction preventing combination of
28        *_GET_ESA and *_HAS_EEPROM.
29
302003-01-03  Gary Thomas  <gary@mlbassoc.com>
31
32        * src/if_i82559.c:
33        * cdl/intel_i82559_eth_drivers.cdl: Allow finer control over
34        debug (chatter) by making control booldata.
35
362002-12-17  Mark Salter  <msalter@redhat.com>
37
38        * src/if_i82559.c (CYGHWR_DEVS_ETH_INTEL_I82559_ENDIAN_NEUTRAL_IO): New
39        flag to support systems where PCI IO operations are not affected by
40        CPU endianess.
41
422002-10-06  Andrew Lunn  <andrew.lunn@ascom.ch>
43
44        * src/if_i82559.c (pci_init_find_82559s): Changed scope of
45        max_interrupt_handle since its needed in other places.
46        * src/if_i82559.c (i82559_stop): Corrected wrong name of variable
47        in a diag_printf function.
48
492002-07-24  Gary Thomas  <gary@mlbassoc.com>
50
51        * src/if_i82559.c (pci_init_find_82559s):
52        Allow platform to define CYGHWR_DEVS_ETH_INTEL_I82559_USE_MEMORY
53        which forces use of memory instead of I/O space for device access.
54
552002-06-14  Gary Thomas  <gary@chez-thomas.org>
56
57        * src/if_i82559.c:
58        Need to include <pkgconf/io_eth_drivers.h> for proper configuration
59        of stand-alone (polled) vs. system (interrupt driven) mode.
60
612002-04-09  Hugo Tyson  <hmt@redhat.com>
62
63        * src/if_i82559.c (i82559_stop): Free up any pending transmissions
64        to prevent MBUF store leaks if the calling thread - the one that's
65        shutting down the interface - priority ends up higher than (or
66        same as) the network service threads.
67
682002-03-26  Jonathan Larmour  <jlarmour@redhat.com>
69
70        * src/if_i82559.c (wait_for_cmd_done): Don't assert if RUC_ADDR_LOAD
71        command doesn't clear - on some chips it never does.
72
732002-03-18  Hugo Tyson  <hmt@redhat.com>
74
75        * src/if_i82559.c (pci_init_find_82559s): Move allocation of
76        statistics pointer for each device to here, out of
77        i82559_start().  It used to leak PCI window store every time the
78        interface cycled down/up.  [Case 107110]
79
802002-02-25  Mark Salter  <msalter@redhat.com>
81
82        * src/if_i82559.c: Don't call PacketRxReady in standalone configuration
83        unless ready to accept a packet. Limit packet delivery to one packet at
84        a time in standalone configuration.
85
862002-02-20  Hugo Tyson  <hmt@redhat.com>
87
88        * include/i82559_info.h: New fields to record/control multicast
89        all reception, oversized packet reception and promiscuous mode
90        neatly.
91
92        * src/if_i82559.c: Initial support for multicast address reception
93        filtering.
94        (i82559_restart): New routine to restart the device after fiddling
95        with its setup - a tail recursion from i82559_start().
96        (i82559_configure): More generic flags passed in and handled.
97        (i82559_set_multicast): Routine to pass a set of addresses into
98        the device; it works out the bitmap et al for us!
99        (i82559_ioctl): Handle new case arms ETH_DRV_SET_MC_LIST and
100        ETH_DRV_SET_MC_ALL if defined.  Reset and restart the device,
101        diddling its status between.
102       
1032002-02-19  Mark Salter  <msalter@redhat.com>
104
105        * src/if_i82559.c (pci_init_find_82559s): Don't use IRQ support if
106        CYGPKG_IO_ETH_DRIVERS_STAND_ALONE.
107
1082002-01-28  Mark Salter  <msalter@redhat.com>
109
110        * src/if_i82559.c (pci_init_find_82559s): Removed CYG_ASSERT which
111        assumed system PCI window exists.
112
1132002-01-10  Jonathan Larmour  <jlarmour@redhat.com>
114
115        * src/if_i82559.c (find_82559s_match_func): Add some more compatible PCI
116        ids.
117
1182002-01-03  Mark Salter  <msalter@redhat.com>
119
120        * src/if_i82559.c (pci_init_find_82559s): Remove check that
121        assumes driver owns entire PCI window.
122
123        * cdl/intel_i82559_eth_drivers.cdl: Add
124        CYGNUM_DEVS_ETH_INTEL_I82559_MAX_TX_DESCRIPTORS and
125        CYGNUM_DEVS_ETH_INTEL_I82559_MAX_RX_DESCRIPTORS.
126
1272001-11-19  Hugo Tyson  <hmt@redhat.com>
1282001-11-19  Anssi Pulkkinen <Anssi.Pulkkinen@ascom.ch>
129
130        * src/if_i82559.c (TxMachine): The test to see if there is a new
131        tx to start must also say "go" if the tx queue is full.  Normally,
132        if the txqueue is full, a tx will be occurring at all times - so
133        one will complete soon, so the tx queue full flag will soon be
134        cleared, and this condition will recover.  I suspect a subtle race
135        which effectively means a new tx is queued and fills the queue in
136        between two tx's, so no TxDone() follows, causes the hang which we
137        get without this extra test under high load.  [CASE 106686]
138
1392001-09-20  Gary Thomas  <gthomas@redhat.com>
140
141        * src/if_i82559.c: Add declaration of 'i82559_stop' to quiet warning.
142
1432001-09-13  Hugo Tyson  <hmt@redhat.com>
144
145        * cdl/intel_i82559_eth_drivers.cdl:
146        * src/if_i82559.c:
147        Remove the tickle thread from this driver.  The functionality is
148        now in the network timeout functionality which handles the
149        "deliver" calls.  So it's only called if the net is quiet.
150
1512001-09-12  Hugo Tyson  <hmt@redhat.com>
152
153        * src/if_i82559.c (TxDone): Defensive programming; zero the Tx key
154        in the global data before making the callback.  This change
155        appeared useful in our forebear, the EBSA-specific driver.
156
1572001-08-29  Hugo Tyson  <hmt@redhat.com>
158
159        * cdl/intel_i82559_eth_drivers.cdl: New CDL options called
160        CYGPKG_DEVS_ETH_INTEL_I82559_TICKLE_THREAD, .._PRIORITY and
161        .._DELAY to control the thread.  By default this is all disabled
162        because it is not needed for a real network application which
163        itself proactively tries to use the net - it's only needed when
164        the app is totally passive, so the driver otherwise does not get
165        CPU time at all.
166       
167        * src/if_i82559.c (starti82559ticklethread): New code to start a
168        thread (!) to catch lost interrupts and thus restart jammed
169        hardware.  It's only possible if KERNEL and NET - RedBoot is
170        unaffected, and it's not needed for RedBoot 'cos RedBoot polls.
171        (TxMachine): An assert about the CU idle status sometimes fired;
172        made the code more conservative wrt timing here.
173        (comments): more documentation on the possible external configury
174        by .inl file, described the two TIMEOUT macros that can be set,
175        and indeed must be to use the tickling thread meaningfully.
176
1772001-08-22  Gary Thomas  <gthomas@redhat.com>
178
179        * src/if_i82559.c:
180        printf() is no longer a part of RedBoot.  Thus all programs
181        must use diag_printf() and related functions instead.
182
1832001-06-22  Jesper Skov  <jskov@redhat.com>
184
185        * src/if_i82559.c (i82559_init): Handle EEPROMS without CRC.
186
1872001-05-16  Jonathan Larmour  <jlarmour@redhat.com>
188
189        * src/if_i82559.c (udelay): Use virtual vector rather than assuming
190        hal_delay_us() exists.
191
1922001-04-09  Hugo Tyson  <hmt@redhat.com>
193
194        * src/if_i82559.c (pciwindow_mem_alloc): If asked, by
195        CYGHWR_DEVS_ETH_INTEL_I82559_PCIMEM_DISCONTIGUOUS, check for
196        breaks in the physical address of PCI window memory, and discard
197        any block with a break in it, then redo the alloc.  This is for
198        targets where smaller SDRAM chips are fitted than the address
199        width, so they end up with gaps in (physical) memory.
200
2012001-04-09  Hugo Tyson  <hmt@redhat.com>
202
203        * src/if_i82559.c (i82559_init): Support hardware with only one
204        serial EEPROM attached to one device, but multiple devices.  This
205        generally involves moving some decisions for eg. programming
206        EEPROM or not, optionally from compiletime to runtime.  Improved
207        the diagnostics a bit also, and fixed some bugs.
208        (eth_set_mac_address): now takes an arg to say whether we want to
209        program the EEPROM, or are just setting up the chip.
210        (i82559_ioctl): This is the only place we set that arg to write
211        the EEPROM, startup never tries to write EEPROM from any external
212        source such as configured ESA or RedBoot params.
213
2142001-04-09  Hugo Tyson  <hmt@redhat.com>
215
216        * src/if_i82559.c (i82559_start): Warnings fixed; unused vars
217        following previous change.
218
2192001-04-09  Hugo Tyson  <hmt@redhat.com>
220
221        * src/if_i82559.c (i82559_start): Do not wait for command
222        completion after the initial DUMPSTATS operation.  The code to
223        wait was bogus; it was looking at the structure in the wrong way.
224        In any case, there is no need to wait, the wait_for_cmd_done() in
225        any following activity is good enough.
226
2272001-03-28  Hugo Tyson  <hmt@redhat.com>
228
229        * src/if_i82559.c (update_statistics): Fix warning - only declare
230        op_i82559 if we use it - from previous change.
231
2322001-03-23  Hugo Tyson  <hmt@redhat.com>
233
234        * src/if_i82559.c (i82559_can_send, i82559_send): Count up and
235        down entries into these routines, and always say "no" to
236        can_send() if we are recursing, ie. within_send != 0.  This is a
237        good idea because it limits stack usage.  The recursion happens
238        because of the very neccessary polling of rx state within the tx
239        routines - which can deliver packets up into the stack, which can
240        trigger a response tx and so on...  Also fixed a harmless bug
241        where, after polling, the p_i82559 current device state pointer
242        pointer to the wrong device, if we polled both devs regardless; it
243        only caused problems with the within_send recursion count.
244
245        * include/i82559_info.h (I82559): Add within_send field.
246
2472001-03-15  Hugo Tyson  <hmt@redhat.com>
248
249        * src/if_i82559.c (i82559_init): Support external macro
250        CYGHWR_DEVS_ETH_INTEL_I82559_GET_ESA(...), which if defined, is
251        used to acquire a MAC address, on the assumption that there is no
252        EEPROM present.  CYGHWR_DEVS_ETH_INTEL_I82559_HAS_NO_EEPROM
253        confirms that there is no EEPROM attached to the 82559(s) so we
254        can omit all that code.  It's in the negative sense because it's
255        the unusual case.
256
2572001-03-13  Hugo Tyson  <hmt@redhat.com>
258
259        * src/if_i82559.c (CYGHWR_DEVS_ETH_INTEL_I82559_DEMUX_ALL): Fully
260        enable "DEMUX_ALL" option; all devices are scanned for
261        activity/wedging/interrupts at every opportunity.  Multiple
262        devices on the same interrupts are now supported.
263
2642001-03-12  Hugo Tyson  <hmt@redhat.com>
265
266        * src/if_i82559.c (i82559_configure): New routine combines actions
267        of eth_set_promiscuous_mode() and eth_set_config() both of which
268        disappear.  Thus the device is always configured correctly from
269        the start.  [from a patch from Martin Buck  <martin.buck@ascom.ch>
270        via the EBSA285 driver]
271        (eth_dsr): Do not call upper layer unless we are in a networked
272        [non-RedBoot, non-polled] environment.  This is necessary because
273        we call our own DSR from foreground to unstick after a lost
274        interrupt.
275        (find_82559s_match_func): New routine to discover disparate
276        devices on the PCI bus.  Used in pci_init_find_82559s().
277        (dump_txcb): Various junk debug functions removed.
278
2792001-03-12  Hugo Tyson  <hmt@redhat.com>
280
281        * src/if_i82559.c: Some tidying up, and two main additions to the
282        mechanisms used for managing this nasty entomological device.
283        (i82559_can_send): [amongst other places] if it is defined, use
284        CYGHWR_DEVS_ETH_INTEL_I82559_MISSED_INTERRUPT(p_i82559) to detect
285        that we missed an interrupt - and if so, call the ISR and DSR
286        directly.  This is necessary for edge-triggered interrupt
287        controllers being fed by this level-sending device, where an
288        internal event in the device can keep the line low after the code
289        thinks that all events have been handled.
290        (Check82559TxLockupTimeout): This routine runs a timeout (if the
291        HAL provides a pair of watchdog-like macros) which performs a
292        selective reset of the device if it takes too long to transmit.
293        This happens rarely, but when it happens this is the only way out;
294        the tx machine is fixated on one tx and never comes out of it.
295       
296
297        Sadly these two techniques to escape lockup only work if the
298        driver is called (ie. the stack tries to tx); incoming packets
299        cannot unwedge a device.  We might need to add a poll from the
300        stack in future if this causes problems.
301       
302        * include/i82559_info.h (I82559): Added two words for managing tx
303        lockup timeouts since this must be per-device.
304
3052001-03-02  Hugo Tyson  <hmt@redhat.com>
306
307        * src/if_i82559.c: Remove "Platform specific - defaults provided"
308        definitions for CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE/SIZE; all
309        platforms now provide these.
310        Added a little further disclaimer to the comment about LE/BE/GE.
311
3122001-03-01  Hugo Tyson  <hmt@redhat.com>
313
314        * src/if_i82559.c: Global change: what was HAL_READ_UINTxx or
315        HAL_WRITE_UINTxx are now READMEMxx or WRITEMEMxx - just
316        convenience macros that do all the volatile casts we want there.
317        Definitions of INL, INW, INB and OUTL, OUTW, OUTB recast in terms
318        of HAL_READ_UINTxx or HAL_WRITE_UINTxx so that they will use
319        proper IO operations on those CISCy mainframes that have a special
320        way of doing IO.
321
3222001-03-01  Hugo Tyson  <hmt@redhat.com>
323
324        * src/if_i82559.c: Much more configury added, so that I can use it
325        with a new target board.  Including, but not limited to:
326
327        o An essay about addressing, big endian, little endian and GIB
328        endian (sic) and how we treat the various types of access within
329        this module.  In other words, a lot of comments.
330
331        o CYGNUM_DEVS_ETH_INTEL_I82559_SEPARATE_MUX_INTERRUPT to clarify
332        that such an interrupt is SEPARATE from any simplex intrs that are
333        also available.
334
335        o CYGHWR_DEVS_ETH_INTEL_I82559_DEMUX_ALL for hardware where the
336        the only interrupt is a multiplexed (wire or'd) one.  Plus
337        associated macros for direct manipulation of interrupt masks and
338        acknowledgments.
339
340        o Support for external definition from the platform HAL or driver
341        config module of CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE and SIZE.
342        Also CYGHWR_INTEL_I82559_PCI_VIRT_TO_BUS.
343
344        o LE definitions of a few macros that were missing.
345
346        o Separated definitions of structure offsets from BE/LE
347        definitions of consts within the words.  Offsets vary with GIB
348        endian, for those CPUs who just flip bits.  No change for BE
349        machines, needed for LE machines to work.  To enable address-flip
350        within structures, define CYG_ADDRESSING_IS_GIBENDIAN.
351
352        o Re-org of mux/simplex deliver and isr's for new configuration.
353
354        o Couple of extra debug printouts.
355
3562001-01-26  Jesper Skov  <jskov@redhat.com>
357
358        * src/if_i82559.c: Added FIXME for promiscuous mode.
359
3602001-01-25  Jesper Skov  <jskov@redhat.com>
361
362        * src/if_i82559.c: Replace CYGNUM_HAL_INTERRUPT_PCI_IRQ with
363        CYGNUM_DEVS_ETH_INTEL_I82559_MUX_INTERRUPT which platform .inl
364        must provide when appropriate. Changed _deliver functions to match
365        _isr functions.
366        * include/i82559_info.h: Remove debug hacks.
367        Fix declaration.
368
369        * src/if_i82559.c: Moved device descriptors into platform header.
370        Allow individual devices to hardwire ESA. Handle N devices instead
371        of just 1 or 2.
372        * include/i82559_info.h: ESA hardwired flag added.
373        * cdl/intel_i82559_eth_drivers.cdl: Device details moved to
374        platform CDL.
375
376        * src/if_i82559.c (i82559_start): Poll status after dump command.
377
3782001-01-24  Jesper Skov  <jskov@redhat.com>
379
380        * src/if_i82559.c: [changes from yesterday] Some more endian
381        fiddle, and the device coughs out the initial ARP packets.
382        (wait_for_cmd_done): semantics changed to wait for pending CU
383        cmds.
384        (i82559_reset): Cleaned up to spec. Init register bases after
385        reset.
386        Fix initialization of hardwired ESA.
387        Correct configuration command.
388        Fix rcv len masking.
389        (eth_set_mac_address): Set driver's ESA as well. Proper check for
390        completion.
391        Fix LE structure offsets.
392        (i82559_start): Call new eth_set_config to enable device. Last
393        hacks cleaned up.
394        Remove a few printfs.
395
3962001-01-23  Jesper Skov  <jskov@redhat.com>
397
398        * src/if_i82559.c: Debug hackery and some endian issues resolved.
399
4002001-01-22  Jesper Skov  <jskov@redhat.com>
401
402        * src/if_i82559.c: Major changes, getting rid of device structures
403        in favor of HAL IO accessor macros. Also added endian conversion
404        macros where required.
405        * include/i82559_info.h: Change type of device structures to char.
406
4072001-01-19  Jesper Skov  <jskov@redhat.com>
408
409        * cdl/intel_i82559_eth_drivers.cdl: Hack for just one interface
410        now.
411        * src/if_i82559.c: Fix IO functions. Handle EEPROM not being
412        attached to device.
413
414        * src/if_i82559.c: Use uncached/physical address translation
415        macros.
416
4172001-01-15  Jesper Skov  <jskov@redhat.com>
418
419        * src/if_i82559.c: Handle endian differences between controller
420        and CPU. Leave usdelay to HAL. Hack around PCI-base-at-0
421        assumption.
422        Increase SK_DELAY (not that it changed anything, but now it's to
423        the spec), hardwire static ESA.
424       
4252001-01-12  Jesper Skov  <jskov@redhat.com>
426
427        * src/if_i82559.c (pci_init_find_82559s): Check that device has
428        been found before accessing it.
429        (pci_init_find_82559s): Only delay if devices were
430        found. Recognize 82559ER code as well.
431
4322001-01-10  Jesper Skov  <jskov@redhat.com>
433       
434        * src/if_i82559.c: Minor hacks to get it to build.
435        * include/i82559_info.h: Same.
436        * cdl/intel_i82559_eth_drivers.cdl: Same.
437
4382000-12-07  Jesper Skov  <jskov@redhat.com>
439
440        * cdl/intel_i82559_eth_drivers.cdl: Cloned from the EBSA driver.
441        * include/i82559_info.h: Same.
442        * src/if_i82559.c: Same.
443
4442000-11-19  Gary Thomas  <gthomas@redhat.com>
445
446        * src/if_ebsa285.c (pci_init_find_82559s): Intel has at least
447        two devices equivalent to the 82559.  Support both (0x1229, 0x01030).
448
4492000-10-05  Hugo Tyson  <hmt@redhat.com>
450
451        * src/if_ebsa285.c: Deal with device interrupts in a nested
452        fashion - disable/restore is the semantics now, rather than
453        unconditionally unmasking.  Also go directly to the 21285 PIC's
454        interrupt control registers to gain atomicity for these.  Poll for
455        ready received packets when acknowledging an interrupt in the
456        tranmitting world; a race here could lose an Rx interrupt.  Which
457        doesn't matter on a busy system, but in quieter times...  there
458        will always be such a race because of the vague way the i82559's
459        status bits reflect how it's yanking the interrupt line; you have
460        to poll until the interrupt is gone before returning else spurious
461        interrupt failures occur.  The issue is to close the window as
462        tightly as possible, which this change achieves at a minor cost in
463        performance - because of the time spent polling when not required.
464
4652000-09-11  Hugo Tyson  <hmt@cygnus.co.uk>
466
467        * src/if_ebsa285.c (i82559_poll): Only diddle the interface we
468        were asked to.  This is more correct in terms of the intent of the
469        API, though it shouldn't really be necessary.
470
4712000-09-06  Hugo Tyson  <hmt@cygnus.co.uk>
472
473        * src/if_ebsa285.c (pci_init_find_82559s): Add asserts and an
474        unconditional check that the PCI window as configured matches the
475        address and size of the pci_window region from the MLT.  This is
476        here because at present the MLT and CT cannot intercommunicate
477        enough.  The separation of the PCI window is needed because
478        otherwise the malloc heap will eat all memory.  [This is related
479        to CR 902624-CR, "MLT needs to be configuration aware"]
480
4812000-09-01  Hugo Tyson  <hmt@cygnus.co.uk>
482
483        * OVERVIEW: This is part of the change to the network stack to
484        greatly reduce latencies both of (other) DSRs and of thread
485        scheduling.  All the work that the network stack *and* individual
486        ether drivers used to do in DSRs (including alarm callbacks and
487        data copies to/from the device memory) is moved into a "fast
488        network thread" instead.  It calls a device's "deliver" function
489        to do the work that was previously in the DSR.  This is a separate
490        thread so that it can be set higher priority than application
491        threads in order to minimize packet loss (depending on the
492        driver), if required (the application threads presumed to be
493        higher priority in turn than the network thread).  A crucial
494        consequence of this is that we are no longer locking against DSRs,
495        so a plain mutex can be used rather than the global scheduler
496        lock, thus simplifying all the splfoo/splx() style functions.
497
498        * src/if_ebsa285.c: Minor: fix the big assert in i82559_send()
499        which suffered a race condition when called from the fast thread
500        rather than from a DSR.  Major: Add a "deliver" entry to the
501        interface record for the "fast thread" implementation of the
502        network internal comms system.  Provide a pass-up DSR to the
503        logical ether driver's DSR and appropriate delivery routine(s).
504        i82559_poll() now calls i82559_deliver() rather than the DSR.  Add
505        valid data for mux'd DSR to pass on up.
506
5072000-09-01  Hugo Tyson  <hmt@cygnus.co.uk>
508
509        * tests/test_net_realtime.h: Tighten up the latency requirements
510        by a factor of 5; it all seems happy, so committed.
511
5122000-08-25  Hugo Tyson  <hmt@cygnus.co.uk>
513
514        * src/if_ebsa285.c (i82559_ioctl): A little further diddling; have
515        a bool to say whether the dot3 info is filled in.
516
5172000-08-24  Hugo Tyson  <hmt@cygnus.co.uk>
518
519        * cdl/ebsa285_eth_drivers.cdl: Do not export a symbol for the
520        device info file (include/ebsa285_info.h) since nobody needs
521        (portably) to include it now.
522
523        * src/if_ebsa285.c (i82559_ioctl): Handle new ioctl calls
524        ETH_DRV_GET_IF_STATS_UD and ETH_DRV_GET_IF_STATS to get loads of
525        statistical information out.  _UD means update.  The nonUD one can
526        be used instead mostly, if we find the performance hit too large.
527        This should allow SNMP (a) to not explode, (b) to get useful info
528        out of other device implementations than this one.
529
530        * include/ebsa285_info.h: Remove all the macro cruft for feature
531        detecting of lots of individual statistics; we now just have a
532        catch-all struct that SNMP uses, defined in the common ether
533        driver environment.
534
5352000-08-15  Hugo Tyson  <hmt@cygnus.co.uk>
536
537        * src/if_ebsa285.c (PacketRxReady): Put back the check for very
538        small packets into the driver; the layer above checks for that
539        (defensive programming) but only *after* asserting that the size
540        is large enough, to help detect that scenario from other drivers.
541        I believe we only have struct ether_header available if CYGPKG_NET
542        but I could be wrong.
543        [CASE 104353]
544
5452000-08-08  Hugo Tyson  <hmt@cygnus.co.uk>
546
547        * src/if_ebsa285.c (eth_set_promiscuous_mode):
548        - ccs->config_bytes[18]=0x70;
549        + ccs->config_bytes[18]=0x72; // Keep the Padding Enable bit
550        ...otherwise short frame sends don't work in promisc mode.
551        [CASE 104289]
552
5532000-08-07  Gary Thomas  <gthomas@redhat.com>
554
555        * src/if_ebsa285.c (pciwindow_mem_alloc): Take out very noisy debug.
556
5572000-08-03  Gary Thomas  <gthomas@redhat.com>
558
559        * src/if_ebsa285.c: Changes for stand-alone mode.
560
561        * cdl/ebsa285_eth_drivers.cdl: Ethernet driver package hierarchy changed.
562        Add option to control number of interfaces.
563
5642000-07-28  Hugo Tyson  <hmt@cygnus.co.uk>
565
566        * src/if_ebsa285.c (PacketRxReady): Do not attempt to forward
567        short packets; eth_drv.c assumes there is at least a header there.
568        (i82559_recv): Also be more careful and ASSERTive about -ve buffer
569        sizes; be more defensive about sglists.  [CASE 104206]
570
5712000-07-26  Gary Thomas  <gthomas@redhat.com>
572
573        * src/if_ebsa285.c: Update for new eth_drv interfaces.
574
5752000-07-18  Hugo Tyson  <hmt@cygnus.co.uk>
576
577        * src/if_ebsa285.c (i82559_poll): Fill in the flesh of this, it
578        just calls ISR and DSR repeatedly.
579        (i82559_start): Look in the device record for promiscuous mode
580        flag; it should be passed though the common layer, but it's not
581        [yet] - this change from Andrew Lunn/ASCOM.  Also a fix and delay
582        to the promisc mode code per se.
583
5842000-07-17  Hugo Tyson  <hmt@cygnus.co.uk>
585
586        * src/if_ebsa285.c (i82559_poll): New function, just to fill in
587        the interface record; not used.
588
5892000-06-27  Hugo Tyson  <hmt@cygnus.co.uk>
590
591        * cdl/ebsa285_eth_drivers.cdl: Add sesquipedalian option
592        CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_82559_STATISTICS in (now)
593        component CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_STATISTICS to control
594        keeping (well, harvesting really) the i82559's internal stats.
595        Reputedly, it doesn't service the net whilst this is happening, so
596        it could be viewed a bad thing.  Hence the option.
597
598        * include/ebsa285_info.h: Only describe the I82559_COUNTERS
599        i82559_counters[2]; structs if full stats are to be kept.
600
601        * src/if_ebsa285.c (update_statistics): Only include this if full
602        stats are to be kept.
603
6042000-06-27  Hugo Tyson  <hmt@cygnus.co.uk>
605
606        * src/if_ebsa285.c (ResetRxRing): Re-do the management of the
607        RxRing; have an end-of-list flag (EL) in the last entry, and as
608        you unload filled slots, drag it round after you.
609
6102000-06-14  Hugo Tyson  <hmt@cygnus.co.uk>
611
612        * cdl/ebsa285_eth_drivers.cdl: Add option to control statistics
613        keeping.
614
615        * include/ebsa285_info.h: Act on it.
616
6172000-06-13  Hugo Tyson  <hmt@cygnus.co.uk>
618
619        * cdl/ebsa285_eth_drivers.cdl: Properly include the new header
620        file and define symbols to allow client code to get at it without
621        knowing the particular device driver name.
622
623        * include/ebsa285_info.h: New file: export various statistics
624        information about the driver for use by monitoring and
625        network-management systems.  This requires exposing the
626        (otherwise) internal structures of the driver.
627
628        * src/if_ebsa285.c: remove a lot of structure definitions &c that
629        are now necessarily in the new header; add a couple of new
630        routines which provide status and update statistics from the
631        device into memory; tidy up control of whether stats-keeping is
632        enabled.
633
6342000-06-06  Hugo Tyson  <hmt@cygnus.co.uk>
635
636        * cdl/ebsa285_eth_drivers.cdl (define_proc): Add #define of
637        CYGDAT_DEVS_ETH_DESCRIPTION in the config file for information.
638
6392000-05-12  Hugo Tyson  <hmt@cygnus.co.uk>
640
641        * tests/test_net_realtime.h (tnr_print_activity): New routine to
642        check the system is working, tidied up the API.  It works!
643
6442000-05-11  Hugo Tyson  <hmt@cygnus.co.uk>
645
646        * cdl/ebsa285_eth_drivers.cdl: Added export of the test header
647        below, and config opts for controlling EEPROM writing and all the
648        status chatter as the device starts up.
649
650        * src/if_ebsa285.c: Reworked the code for reading and setting the
651        EEPROM that holds the MAC address.  This is very ugly, but now
652        more reliable.  Also tidied up printing cruft with neater
653        configury, and made it an option (for safety) whether it's
654        possible to write the EEPROM at all.
655
656        * tests/test_net_realtime.h: New file - it is intended to be used
657        by networking tests to verify that latency is not compromised by
658        the stack and driver.  It's very platform specific, hence the
659        location in here.  This is a preliminary version only.
660
6612000-04-27  Hugo Tyson  <hmt@cygnus.co.uk>
662
663        * src/if_ebsa285.c: A serious re-write.  This cuts out a lot of
664        code from the old version and improves the performance greatly.
665
666        The cruft was mainly doing lots of explicit event communication
667        between the ISR and DSR, when in fact all the state needed is
668        present in the tx/rx rings.  So both ISRs and DSRs regard their
669        call as an opportunity to progress everything they can, rather
670        than only dealing with one interrupt cause at a time; the
671        connection between them is now rather looser.
672
673        Interrups can now be re-enabled after the ISR (in other words they
674        are not masked in the ISR), no need to wait for the DSR, but in
675        consequence some DSR code must mask/unmask intrs as it works.
676
677        The 82559 appears to be a little slow in reacting to commands and
678        state changes, so some interrupts were being lost - or persisting
679        beyond their desired life - so there's some kinda polling code to
680        deal with that also.  We also rely on the foreground to kind of
681        poll in the same way, in the send/can_send calls - we know the
682        stack will re-try if necessary, though this is rare.
683
684        The driver now works (albeit at much reduced performance) with as
685        few as 6 rx and tx buffers - in other words the "queue full/out of
686        rx buffers" states have been tested and all is well.  It works
687        generally fine with 8 buffers of each kind.
688
689        The mux ISR and DSR are now rather more polled than the old
690        versions; we just try to do things with both devices (if active)
691        by simply calling each unitary ISR/DSR respectively.
692
693        I also re-ordered some of the code, moving utilities to the end of
694        the file and grouping together Tx and Rx machines a bit better.
695
6962000-04-13  Hugo Tyson  <hmt@cygnus.co.uk>
697
698        * src/if_ebsa285.c: Attribution to Ron Spence, Pacific Softworks
699        added as a contributor.
700
7012000-04-07  Hugo Tyson  <hmt@cygnus.co.uk>
702
703        * ecos.db: Re-organize device packages.  This is a massive change
704        involving deleting all the sources for serial and ethernet drivers
705        from where they used to live in
706            packages/io/serial/current/src/ARCH/PLATFORM.[ch]
707            packages/net/drivers/eth/PLATFORM/current/src/...
708        and reinstating them in
709            packages/devs/serial/ARCH/PLATFORM/current/src/...
710            packages/devs/eth/ARCH/PLATFORM/current/src/...
711
712        All these new packages are properly defined in ecos.db, and are
713        all of type "hardware" so that a "target" can grab them.
714       
715        This directory layout is descriptive of the devices we have right
716        now, arch and platform are separate levels just to make it easier
717        to navigate in the filesystem and similar to the HAL structure in
718        the filesystem.
719
720        It is *not* prescriptive of future work; for example, the mythical
721        common highly-portable 16550 serial driver which works on many
722        targets would be called "devs/serial/s16550/current", or a serial
723        device for a particular board (cogent springs to mind) that can
724        work with different CPUs fitted is "devs/serial/cogent/current".
725
726        Changelogs have been preserved and replicated over all the new
727        packages, so that no history is lost.
728
729        The contents of individual source files are unchanged; they build
730        in just the same emvironment except for a very few cases where the
731        config file name changed in this movement.
732
733        Targets in ecos.db have been redefined to bring in all relevant
734        hardware packages including net and serial drivers (but the newly
735        included packages are only active if their desired parent is
736        available.)
737       
738        The names of CDL options (and their #defines of course) stay the
739        same for the serial drivers, for backward compatibility.
740
741        * templates/*/current.ect: these have had CYGPKG_IO_SERIAL added
742        rather than it being in (almost) all target definitions.
743       
7442000-03-29  Hugo Tyson  <hmt@cygnus.co.uk>
745
746        * src/if_ebsa285.c (i82559_recv): Be happy with NULLs in the
747        SGlist; it means the caller is out of memory so drop the packet on
748        the floor.  Also remove a completely redundant test.
749
7502000-03-06  Hugo Tyson  <hmt@cygnus.co.uk>
751
752        * src/if_ebsa285.c (i82559_can_send): Update net driver to new
753        interface style.  This is incomplete wrt promiscuous mode, but
754        that's probably about all.
755
7562000-02-14  Gary Thomas  <gthomas@cygnus.co.uk>
757
758        * cdl/ebsa285_eth_drivers.cdl: Update CDL to indicate multiple
759        interface support.
760
7612000-02-14  Hugo Tyson  <hmt@cygnus.co.uk>
762
763        * src/if_ebsa285.c (pci_init_find_82559s): Tidy comments somewhat
764        and set debug and stats collecting defines to most friendly
765        settings.
766
7672000-02-10  Hugo Tyson  <hmt@cygnus.co.uk>
768
769        * src/if_ebsa285.c (PacketRxReady): Fix bug; current descriptor
770        was not being write back for the callback to use.  Hence asserts
771        on state of rfd were firing in busy times - that leading rfd had
772        already been drained.
773
774        Also rationalized meaning of DEBUG printy symbols a bit - it's now
775        chatty during startup/foreground manipulations but not in any
776        performance related activities ie. rx or tx.
777
7782000-02-09  John Dallaway  <jld@cygnus.co.uk>
779
780        * cdl/ebsa285_eth_drivers.cdl:
781
782        Reparent under CYGPKG_NET_ETH_DRIVERS and tidy display strings.
783
7842000-02-08  Hugo Tyson  <hmt@cygnus.co.uk>
785
786        * src/if_ebsa285.c: New File.
787        * cdl/ebsa285_eth_drivers.cdl: New File.
788
789        Initial Checkin of EBSA285 Ethernet driver.
790
791        It's one monolithic file at present, and should be split up into a
792        more generic Intel 82559 driver plus platform-specific parts (PCI
793        et al) plus eCos/Red-Hat-BSD-stack parts.
794       
795//===========================================================================
796//####ECOSGPLCOPYRIGHTBEGIN####
797// -------------------------------------------
798// This file is part of eCos, the Embedded Configurable Operating System.
799// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
800//
801// eCos is free software; you can redistribute it and/or modify it under
802// the terms of the GNU General Public License as published by the Free
803// Software Foundation; either version 2 or (at your option) any later version.
804//
805// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
806// WARRANTY; without even the implied warranty of MERCHANTABILITY or
807// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
808// for more details.
809//
810// You should have received a copy of the GNU General Public License along
811// with eCos; if not, write to the Free Software Foundation, Inc.,
812// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
813//
814// As a special exception, if other files instantiate templates or use macros
815// or inline functions from this file, or you compile this file and link it
816// with other works to produce a work based on this file, this file does not
817// by itself cause the resulting work to be covered by the GNU General Public
818// License. However the source code for this file must still be made available
819// in accordance with section (3) of the GNU General Public License.
820//
821// This exception does not invalidate any other reasons why a work based on
822// this file might be covered by the GNU General Public License.
823//
824// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
825// at http://sources.redhat.com/ecos/ecos-license/
826// -------------------------------------------
827//####ECOSGPLCOPYRIGHTEND####
828//===========================================================================
829       
830       
831
Note: See TracBrowser for help on using the repository browser.