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