OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [devs/] [eth/] [intel/] [i82559/] [v2_0/] [ChangeLog] - Blame information for rev 174

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.