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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [devs/] [eth/] [arm/] [ebsa285/] [v2_0/] [ChangeLog] - Blame information for rev 27

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
2002-10-06  Andrew Lunn  
2
 
3
        * include/devs_eth_ebsa285.inl: EBSA has the ethernet devices
4
        multiplexed onto one interrupt. This got losted when generalising
5
        the driver.
6
 
7
2002-05-14  Jesper Skov  
8
 
9
        * include/devs_eth_ebsa285.inl: Fix warnings.
10
 
11
2001-11-19  Hugo Tyson  
12
2001-11-19  Anssi Pulkkinen 
13
 
14
        * src/if_ebsa285.c (TxMachine): The test to see if there is a new
15
        tx to start must also say "go" if the tx queue is full.  Normally,
16
        if the txqueue is full, a tx will be occurring at all times - so
17
        one will complete soon, so the tx queue full flag will soon be
18
        cleared, and this condition will recover.  I suspect a subtle race
19
        which effectively means a new tx is queued and fills the queue in
20
        between two tx's, so no TxDone() follows, causes the hang which we
21
        get without this extra test under high load.  [CASE 106686]
22
 
23
2001-08-31  Hugo Tyson  
24
2001-08-31  Sanjay Bisen 
25
 
26
        * src/if_ebsa285.c (TxDone): Check from prev change is moved to
27
        the logical driver.  Also, we zero the key in global state before
28
        the callback - this should make no difference, but again it's good
29
        practice, and ASCOM's tests indicate a benefit for CASE 106059.
30
 
31
2001-08-22  Gary Thomas  
32
 
33
        * src/if_ebsa285.c:
34
        printf() is no longer a part of RedBoot.  Thus all programs
35
        must use diag_printf() and related functions instead.
36
 
37
2001-06-08  Gary Thomas  
38
 
39
        * src/if_ebsa285.c (TxDone): Defensive programming: only call
40
        tx_done with new/unique key values.
41
 
42
2001-03-12  Hugo Tyson  
43
 
44
        * src/if_ebsa285.c: Make device config more consistent with that
45
        used in other 82559 platforms, and fix a typo.
46
 
47
2001-02-20  Hugo Tyson  
48
2001-02-15  Martin Buck  
49
 
50
        * src/if_ebsa285.c: Configure i82559 not to drop oversized frames.
51
        This is required for VLAN support (because the maximum frame size
52
        including the VLAN tag is 1518 instead of 1514) and shouldn't
53
        hurt otherwise. To do this, we now always configure the chip when
54
        i82559_start is called, instead of relying on the default
55
        configuration if promiscuous mode is off. Another advantage is that
56
        we're now able to turn promiscuous mode off again after it was
57
        enabled once.
58
 
59
2001-01-02  Hugo Tyson  
60
 
61
        * src/if_ebsa285.c (find_82559s_match_func): New func to match
62
        complex PCI device requirements.
63
        (pci_init_find_82559s): Use it, and the new PCI API to correctly
64
        match a disparate bunch of devices on the one board.
65
 
66
2000-12-21  Hugo Tyson  
67
 
68
        * src/if_ebsa285.c (pci_init_find_82559s): Also check for the PCI
69
        device whose name is ... 0x1209; "82559ER".  Thanks to Martin Buck
70
         for the ID for that.
71
 
72
2000-11-19  Gary Thomas  
73
 
74
        * src/if_ebsa285.c (pci_init_find_82559s): Intel has at least
75
        two devices equivalent to the 82559.  Support both (0x1229, 0x01030).
76
 
77
2000-10-05  Hugo Tyson  
78
 
79
        * src/if_ebsa285.c: Deal with device interrupts in a nested
80
        fashion - disable/restore is the semantics now, rather than
81
        unconditionally unmasking.  Also go directly to the 21285 PIC's
82
        interrupt control registers to gain atomicity for these.  Poll for
83
        ready received packets when acknowledging an interrupt in the
84
        tranmitting world; a race here could lose an Rx interrupt.  Which
85
        doesn't matter on a busy system, but in quieter times...  there
86
        will always be such a race because of the vague way the i82559's
87
        status bits reflect how it's yanking the interrupt line; you have
88
        to poll until the interrupt is gone before returning else spurious
89
        interrupt failures occur.  The issue is to close the window as
90
        tightly as possible, which this change achieves at a minor cost in
91
        performance - because of the time spent polling when not required.
92
 
93
2000-09-11  Hugo Tyson  
94
 
95
        * src/if_ebsa285.c (i82559_poll): Only diddle the interface we
96
        were asked to.  This is more correct in terms of the intent of the
97
        API, though it shouldn't really be necessary.
98
 
99
2000-09-06  Hugo Tyson  
100
 
101
        * src/if_ebsa285.c (pci_init_find_82559s): Add asserts and an
102
        unconditional check that the PCI window as configured matches the
103
        address and size of the pci_window region from the MLT.  This is
104
        here because at present the MLT and CT cannot intercommunicate
105
        enough.  The separation of the PCI window is needed because
106
        otherwise the malloc heap will eat all memory.  [This is related
107
        to CR 902624-CR, "MLT needs to be configuration aware"]
108
 
109
2000-09-01  Hugo Tyson  
110
 
111
        * OVERVIEW: This is part of the change to the network stack to
112
        greatly reduce latencies both of (other) DSRs and of thread
113
        scheduling.  All the work that the network stack *and* individual
114
        ether drivers used to do in DSRs (including alarm callbacks and
115
        data copies to/from the device memory) is moved into a "fast
116
        network thread" instead.  It calls a device's "deliver" function
117
        to do the work that was previously in the DSR.  This is a separate
118
        thread so that it can be set higher priority than application
119
        threads in order to minimize packet loss (depending on the
120
        driver), if required (the application threads presumed to be
121
        higher priority in turn than the network thread).  A crucial
122
        consequence of this is that we are no longer locking against DSRs,
123
        so a plain mutex can be used rather than the global scheduler
124
        lock, thus simplifying all the splfoo/splx() style functions.
125
 
126
        * src/if_ebsa285.c: Minor: fix the big assert in i82559_send()
127
        which suffered a race condition when called from the fast thread
128
        rather than from a DSR.  Major: Add a "deliver" entry to the
129
        interface record for the "fast thread" implementation of the
130
        network internal comms system.  Provide a pass-up DSR to the
131
        logical ether driver's DSR and appropriate delivery routine(s).
132
        i82559_poll() now calls i82559_deliver() rather than the DSR.  Add
133
        valid data for mux'd DSR to pass on up.
134
 
135
2000-09-01  Hugo Tyson  
136
 
137
        * tests/test_net_realtime.h: Tighten up the latency requirements
138
        by a factor of 5; it all seems happy, so committed.
139
 
140
2000-08-25  Hugo Tyson  
141
 
142
        * src/if_ebsa285.c (i82559_ioctl): A little further diddling; have
143
        a bool to say whether the dot3 info is filled in.
144
 
145
2000-08-24  Hugo Tyson  
146
 
147
        * cdl/ebsa285_eth_drivers.cdl: Do not export a symbol for the
148
        device info file (include/ebsa285_info.h) since nobody needs
149
        (portably) to include it now.
150
 
151
        * src/if_ebsa285.c (i82559_ioctl): Handle new ioctl calls
152
        ETH_DRV_GET_IF_STATS_UD and ETH_DRV_GET_IF_STATS to get loads of
153
        statistical information out.  _UD means update.  The nonUD one can
154
        be used instead mostly, if we find the performance hit too large.
155
        This should allow SNMP (a) to not explode, (b) to get useful info
156
        out of other device implementations than this one.
157
 
158
        * include/ebsa285_info.h: Remove all the macro cruft for feature
159
        detecting of lots of individual statistics; we now just have a
160
        catch-all struct that SNMP uses, defined in the common ether
161
        driver environment.
162
 
163
2000-08-15  Hugo Tyson  
164
 
165
        * src/if_ebsa285.c (PacketRxReady): Put back the check for very
166
        small packets into the driver; the layer above checks for that
167
        (defensive programming) but only *after* asserting that the size
168
        is large enough, to help detect that scenario from other drivers.
169
        I believe we only have struct ether_header available if CYGPKG_NET
170
        but I could be wrong.
171
        [CASE 104353]
172
 
173
2000-08-08  Hugo Tyson  
174
 
175
        * src/if_ebsa285.c (eth_set_promiscuous_mode):
176
        - ccs->config_bytes[18]=0x70;
177
        + ccs->config_bytes[18]=0x72; // Keep the Padding Enable bit
178
        ...otherwise short frame sends don't work in promisc mode.
179
        [CASE 104289]
180
 
181
2000-08-07  Gary Thomas  
182
 
183
        * src/if_ebsa285.c (pciwindow_mem_alloc): Take out very noisy debug.
184
 
185
2000-08-03  Gary Thomas  
186
 
187
        * src/if_ebsa285.c: Changes for stand-alone mode.
188
 
189
        * cdl/ebsa285_eth_drivers.cdl: Ethernet driver package hierarchy changed.
190
        Add option to control number of interfaces.
191
 
192
2000-07-28  Hugo Tyson  
193
 
194
        * src/if_ebsa285.c (PacketRxReady): Do not attempt to forward
195
        short packets; eth_drv.c assumes there is at least a header there.
196
        (i82559_recv): Also be more careful and ASSERTive about -ve buffer
197
        sizes; be more defensive about sglists.  [CASE 104206]
198
 
199
2000-07-26  Gary Thomas  
200
 
201
        * src/if_ebsa285.c: Update for new eth_drv interfaces.
202
 
203
2000-07-18  Hugo Tyson  
204
 
205
        * src/if_ebsa285.c (i82559_poll): Fill in the flesh of this, it
206
        just calls ISR and DSR repeatedly.
207
        (i82559_start): Look in the device record for promiscuous mode
208
        flag; it should be passed though the common layer, but it's not
209
        [yet] - this change from Andrew Lunn/ASCOM.  Also a fix and delay
210
        to the promisc mode code per se.
211
 
212
2000-07-17  Hugo Tyson  
213
 
214
        * src/if_ebsa285.c (i82559_poll): New function, just to fill in
215
        the interface record; not used.
216
 
217
2000-06-27  Hugo Tyson  
218
 
219
        * cdl/ebsa285_eth_drivers.cdl: Add sesquipedalian option
220
        CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_82559_STATISTICS in (now)
221
        component CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_STATISTICS to control
222
        keeping (well, harvesting really) the i82559's internal stats.
223
        Reputedly, it doesn't service the net whilst this is happening, so
224
        it could be viewed a bad thing.  Hence the option.
225
 
226
        * include/ebsa285_info.h: Only describe the I82559_COUNTERS
227
        i82559_counters[2]; structs if full stats are to be kept.
228
 
229
        * src/if_ebsa285.c (update_statistics): Only include this if full
230
        stats are to be kept.
231
 
232
2000-06-27  Hugo Tyson  
233
 
234
        * src/if_ebsa285.c (ResetRxRing): Re-do the management of the
235
        RxRing; have an end-of-list flag (EL) in the last entry, and as
236
        you unload filled slots, drag it round after you.
237
 
238
2000-06-14  Hugo Tyson  
239
 
240
        * cdl/ebsa285_eth_drivers.cdl: Add option to control statistics
241
        keeping.
242
 
243
        * include/ebsa285_info.h: Act on it.
244
 
245
2000-06-13  Hugo Tyson  
246
 
247
        * cdl/ebsa285_eth_drivers.cdl: Properly include the new header
248
        file and define symbols to allow client code to get at it without
249
        knowing the particular device driver name.
250
 
251
        * include/ebsa285_info.h: New file: export various statistics
252
        information about the driver for use by monitoring and
253
        network-management systems.  This requires exposing the
254
        (otherwise) internal structures of the driver.
255
 
256
        * src/if_ebsa285.c: remove a lot of structure definitions &c that
257
        are now necessarily in the new header; add a couple of new
258
        routines which provide status and update statistics from the
259
        device into memory; tidy up control of whether stats-keeping is
260
        enabled.
261
 
262
2000-06-06  Hugo Tyson  
263
 
264
        * cdl/ebsa285_eth_drivers.cdl (define_proc): Add #define of
265
        CYGDAT_DEVS_ETH_DESCRIPTION in the config file for information.
266
 
267
2000-05-12  Hugo Tyson  
268
 
269
        * tests/test_net_realtime.h (tnr_print_activity): New routine to
270
        check the system is working, tidied up the API.  It works!
271
 
272
2000-05-11  Hugo Tyson  
273
 
274
        * cdl/ebsa285_eth_drivers.cdl: Added export of the test header
275
        below, and config opts for controlling EEPROM writing and all the
276
        status chatter as the device starts up.
277
 
278
        * src/if_ebsa285.c: Reworked the code for reading and setting the
279
        EEPROM that holds the MAC address.  This is very ugly, but now
280
        more reliable.  Also tidied up printing cruft with neater
281
        configury, and made it an option (for safety) whether it's
282
        possible to write the EEPROM at all.
283
 
284
        * tests/test_net_realtime.h: New file - it is intended to be used
285
        by networking tests to verify that latency is not compromised by
286
        the stack and driver.  It's very platform specific, hence the
287
        location in here.  This is a preliminary version only.
288
 
289
2000-04-27  Hugo Tyson  
290
 
291
        * src/if_ebsa285.c: A serious re-write.  This cuts out a lot of
292
        code from the old version and improves the performance greatly.
293
 
294
        The cruft was mainly doing lots of explicit event communication
295
        between the ISR and DSR, when in fact all the state needed is
296
        present in the tx/rx rings.  So both ISRs and DSRs regard their
297
        call as an opportunity to progress everything they can, rather
298
        than only dealing with one interrupt cause at a time; the
299
        connection between them is now rather looser.
300
 
301
        Interrups can now be re-enabled after the ISR (in other words they
302
        are not masked in the ISR), no need to wait for the DSR, but in
303
        consequence some DSR code must mask/unmask intrs as it works.
304
 
305
        The 82559 appears to be a little slow in reacting to commands and
306
        state changes, so some interrupts were being lost - or persisting
307
        beyond their desired life - so there's some kinda polling code to
308
        deal with that also.  We also rely on the foreground to kind of
309
        poll in the same way, in the send/can_send calls - we know the
310
        stack will re-try if necessary, though this is rare.
311
 
312
        The driver now works (albeit at much reduced performance) with as
313
        few as 6 rx and tx buffers - in other words the "queue full/out of
314
        rx buffers" states have been tested and all is well.  It works
315
        generally fine with 8 buffers of each kind.
316
 
317
        The mux ISR and DSR are now rather more polled than the old
318
        versions; we just try to do things with both devices (if active)
319
        by simply calling each unitary ISR/DSR respectively.
320
 
321
        I also re-ordered some of the code, moving utilities to the end of
322
        the file and grouping together Tx and Rx machines a bit better.
323
 
324
2000-04-13  Hugo Tyson  
325
 
326
        * src/if_ebsa285.c: Attribution to Ron Spence, Pacific Softworks
327
        added as a contributor.
328
 
329
2000-04-07  Hugo Tyson  
330
 
331
        * ecos.db: Re-organize device packages.  This is a massive change
332
        involving deleting all the sources for serial and ethernet drivers
333
        from where they used to live in
334
            packages/io/serial/current/src/ARCH/PLATFORM.[ch]
335
            packages/net/drivers/eth/PLATFORM/current/src/...
336
        and reinstating them in
337
            packages/devs/serial/ARCH/PLATFORM/current/src/...
338
            packages/devs/eth/ARCH/PLATFORM/current/src/...
339
 
340
        All these new packages are properly defined in ecos.db, and are
341
        all of type "hardware" so that a "target" can grab them.
342
 
343
        This directory layout is descriptive of the devices we have right
344
        now, arch and platform are separate levels just to make it easier
345
        to navigate in the filesystem and similar to the HAL structure in
346
        the filesystem.
347
 
348
        It is *not* prescriptive of future work; for example, the mythical
349
        common highly-portable 16550 serial driver which works on many
350
        targets would be called "devs/serial/s16550/current", or a serial
351
        device for a particular board (cogent springs to mind) that can
352
        work with different CPUs fitted is "devs/serial/cogent/current".
353
 
354
        Changelogs have been preserved and replicated over all the new
355
        packages, so that no history is lost.
356
 
357
        The contents of individual source files are unchanged; they build
358
        in just the same emvironment except for a very few cases where the
359
        config file name changed in this movement.
360
 
361
        Targets in ecos.db have been redefined to bring in all relevant
362
        hardware packages including net and serial drivers (but the newly
363
        included packages are only active if their desired parent is
364
        available.)
365
 
366
        The names of CDL options (and their #defines of course) stay the
367
        same for the serial drivers, for backward compatibility.
368
 
369
        * templates/*/current.ect: these have had CYGPKG_IO_SERIAL added
370
        rather than it being in (almost) all target definitions.
371
 
372
2000-03-29  Hugo Tyson  
373
 
374
        * src/if_ebsa285.c (i82559_recv): Be happy with NULLs in the
375
        SGlist; it means the caller is out of memory so drop the packet on
376
        the floor.  Also remove a completely redundant test.
377
 
378
2000-03-06  Hugo Tyson  
379
 
380
        * src/if_ebsa285.c (i82559_can_send): Update net driver to new
381
        interface style.  This is incomplete wrt promiscuous mode, but
382
        that's probably about all.
383
 
384
2000-02-14  Gary Thomas  
385
 
386
        * cdl/ebsa285_eth_drivers.cdl: Update CDL to indicate multiple
387
        interface support.
388
 
389
2000-02-14  Hugo Tyson  
390
 
391
        * src/if_ebsa285.c (pci_init_find_82559s): Tidy comments somewhat
392
        and set debug and stats collecting defines to most friendly
393
        settings.
394
 
395
2000-02-10  Hugo Tyson  
396
 
397
        * src/if_ebsa285.c (PacketRxReady): Fix bug; current descriptor
398
        was not being write back for the callback to use.  Hence asserts
399
        on state of rfd were firing in busy times - that leading rfd had
400
        already been drained.
401
 
402
        Also rationalized meaning of DEBUG printy symbols a bit - it's now
403
        chatty during startup/foreground manipulations but not in any
404
        performance related activities ie. rx or tx.
405
 
406
2000-02-09  John Dallaway  
407
 
408
        * cdl/ebsa285_eth_drivers.cdl:
409
 
410
        Reparent under CYGPKG_NET_ETH_DRIVERS and tidy display strings.
411
 
412
2000-02-08  Hugo Tyson  
413
 
414
        * src/if_ebsa285.c: New File.
415
        * cdl/ebsa285_eth_drivers.cdl: New File.
416
 
417
        Initial Checkin of EBSA285 Ethernet driver.
418
 
419
        It's one monolithic file at present, and should be split up into a
420
        more generic Intel 82559 driver plus platform-specific parts (PCI
421
        et al) plus eCos/Red-Hat-BSD-stack parts.
422
 
423
//===========================================================================
424
//####ECOSGPLCOPYRIGHTBEGIN####
425
// -------------------------------------------
426
// This file is part of eCos, the Embedded Configurable Operating System.
427
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
428
//
429
// eCos is free software; you can redistribute it and/or modify it under
430
// the terms of the GNU General Public License as published by the Free
431
// Software Foundation; either version 2 or (at your option) any later version.
432
//
433
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
434
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
435
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
436
// for more details.
437
//
438
// You should have received a copy of the GNU General Public License along
439
// with eCos; if not, write to the Free Software Foundation, Inc.,
440
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
441
//
442
// As a special exception, if other files instantiate templates or use macros
443
// or inline functions from this file, or you compile this file and link it
444
// with other works to produce a work based on this file, this file does not
445
// by itself cause the resulting work to be covered by the GNU General Public
446
// License. However the source code for this file must still be made available
447
// in accordance with section (3) of the GNU General Public License.
448
//
449
// This exception does not invalidate any other reasons why a work based on
450
// this file might be covered by the GNU General Public License.
451
//
452
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
453
// at http://sources.redhat.com/ecos/ecos-license/
454
// -------------------------------------------
455
//####ECOSGPLCOPYRIGHTEND####
456
//===========================================================================
457
 
458
 
459
 

powered by: WebSVN 2.1.0

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