]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/lwIP_Demo_Rowley_ARM7/lwip-1.1.0/CHANGELOG
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / lwIP_Demo_Rowley_ARM7 / lwip-1.1.0 / CHANGELOG
1 FUTURE
2
3   * TODO: The lwIP source code makes some invalid assumptions on processor
4     word-length, storage sizes and alignment. See the mailing lists for
5     problems with exoteric (/DSP) architectures showing these problems.
6     We still have to fix some of these issues neatly.
7
8   * TODO: the ARP layer is not protected against concurrent access. If
9     you run from a multitasking OS, serialize access to ARP (called from
10     your network device driver and from a timeout thread.)
11
12 HISTORY
13
14 (HEAD)
15
16   2004-12-28 Leon Woestenberg <leon.woestenberg@gmx.net>
17   * etharp.*: Disabled multiple packets on the ARP queue.
18     This clashes with TCP queueing.
19
20   2004-11-28 Leon Woestenberg <leon.woestenberg@gmx.net>
21   * etharp.*: Fixed race condition from ARP request to ARP timeout.
22     Halved the ARP period, doubled the period counts.
23     ETHARP_MAX_PENDING now should be at least 2. This prevents
24     the counter from reaching 0 right away (which would allow
25     too little time for ARP responses to be received).
26     
27   2004-11-25 Leon Woestenberg <leon.woestenberg@gmx.net>
28   * dhcp.c: Decline messages were not multicast but unicast.
29   * etharp.c: ETHARP_CREATE is renamed to ETHARP_TRY_HARD.
30     Do not try hard to insert arbitrary packet's source address,
31     etharp_ip_input() now calls etharp_update() without ETHARP_TRY_HARD. 
32     etharp_query() now always DOES call ETHARP_TRY_HARD so that users
33     querying an address will see it appear in the cache (DHCP could
34     suffer from this when a server invalidly gave an in-use address.)
35   * ipv4/ip_addr.h: Renamed ip_addr_maskcmp() to _netcmp() as we are
36     comparing network addresses (identifiers), not the network masks
37     themselves.
38   * ipv4/ip_addr.c: ip_addr_isbroadcast() now checks that the given
39     IP address actually belongs to the network of the given interface.
40
41   2004-11-24 Kieran Mansley <kjm25@cam.ac.uk>
42   * tcp.c: Increment pcb->snd_buf when ACK is received in SYN_SENT state.
43
44 (STABLE-1_1_0-RC1)
45
46   2004-10-16 Kieran Mansley <kjm25@cam.ac.uk>
47   * tcp.c: Add code to tcp_recved() to send an ACK (window update) immediately,
48         even if one is already pending, if the rcv_wnd is above a threshold
49         (currently TCP_WND/2). This avoids waiting for a timer to expire to send a
50         delayed ACK in order to open the window if the stack is only receiving data.
51
52   2004-09-12 Kieran Mansley <kjm25@cam.ac.uk>
53   * tcp*.*: Retransmit time-out handling improvement by Sam Jansen.
54
55   2004-08-20 Tony Mountifield <tony@softins.co.uk>
56   * etharp.c: Make sure the first pbuf queued on an ARP entry
57     is properly ref counted.
58
59   2004-07-27 Tony Mountifield <tony@softins.co.uk>
60   * debug.h: Added (int) cast in LWIP_DEBUGF() to avoid compiler
61     warnings about comparison.
62   * pbuf.c: Stopped compiler complaining of empty if statement
63     when LWIP_DEBUGF() empty.  Closed an unclosed comment.
64   * tcp.c: Stopped compiler complaining of empty if statement
65     when LWIP_DEBUGF() empty.
66   * ip.h Corrected IPH_TOS() macro: returns a byte, so doesn't need htons().
67   * inet.c: Added a couple of casts to quiet the compiler.
68     No need to test isascii(c) before isdigit(c) or isxdigit(c).
69
70   2004-07-22 Tony Mountifield <tony@softins.co.uk>
71   * inet.c: Made data types consistent in inet_ntoa().
72     Added casts for return values of checksum routines, to pacify compiler.
73   * ip_frag.c, tcp_out.c, sockets.c, pbuf.c
74     Small corrections to some debugging statements, to pacify compiler.
75
76   2004-07-21 Tony Mountifield <tony@softins.co.uk>
77   * etharp.c: Removed spurious semicolon and added missing end-of-comment.
78   * ethernetif.c Updated low_level_output() to match prototype for
79     netif->linkoutput and changed low_level_input() similarly for consistency.
80   * api_msg.c: Changed recv_raw() from int to u8_t, to match prototype
81     of raw_recv() in raw.h and so avoid compiler error.
82   * sockets.c: Added trivial (int) cast to keep compiler happier.
83   * ip.c, netif.c Changed debug statements to use the tidier ip4_addrN() macros.
84   
85 (STABLE-1_0_0)
86
87   ++ Changes:
88
89   2004-07-05 Leon Woestenberg <leon.woestenberg@gmx.net>
90   * sockets.*: Restructured LWIP_PRIVATE_TIMEVAL. Make sure
91     your cc.h file defines this either 1 or 0. If non-defined,
92     defaults to 1.
93   * .c: Added <string.h> and <errno.h> includes where used.
94   * etharp.c: Made some array indices unsigned.
95
96   2004-06-27 Leon Woestenberg <leon.woestenberg@gmx.net>
97   * netif.*: Added netif_set_up()/down().
98   * dhcp.c: Changes to restart program flow.
99
100   2004-05-07 Leon Woestenberg <leon.woestenberg@gmx.net>
101   * etharp.c: In find_entry(), instead of a list traversal per candidate, do a
102     single-pass lookup for different candidates. Should exploit locality.
103
104   2004-04-29 Leon Woestenberg <leon.woestenberg@gmx.net>
105   * tcp*.c: Cleaned up source comment documentation for Doxygen processing.
106   * opt.h: ETHARP_ALWAYS_INSERT option removed to comply with ARP RFC.
107   * etharp.c: update_arp_entry() only adds new ARP entries when adviced to by
108     the caller. This deprecates the ETHARP_ALWAYS_INSERT overrule option.
109
110   ++ Bug fixes:
111
112   2004-04-27 Leon Woestenberg <leon.woestenberg@gmx.net>
113   * etharp.c: Applied patch of bug #8708 by Toni Mountifield with a solution
114     suggested by Timmy Brolin. Fix for 32-bit processors that cannot access
115     non-aligned 32-bit words, such as soms 32-bit TCP/IP header fields. Fix
116     is to prefix the 14-bit Ethernet headers with two padding bytes.
117
118   2004-04-23 Leon Woestenberg <leon.woestenberg@gmx.net>
119   * ip_addr.c: Fix in the ip_addr_isbroadcast() check.
120   * etharp.c: Fixed the case where the packet that initiates the ARP request
121     is not queued, and gets lost. Fixed the case where the packets destination
122     address is already known; we now always queue the packet and perform an ARP
123     request.
124   
125 (STABLE-0_7_0)
126
127   ++ Bug fixes:
128
129   * Fixed TCP bug for SYN_SENT to ESTABLISHED state transition.
130   * Fixed TCP bug in dequeueing of FIN from out of order segment queue.
131   * Fixed two possible NULL references in rare cases.
132
133 (STABLE-0_6_6)
134
135   ++ Bug fixes:
136
137   * Fixed DHCP which did not include the IP address in DECLINE messages.
138
139   ++ Changes:
140
141   * etharp.c has been hauled over a bit.
142
143 (STABLE-0_6_5)
144
145   ++ Bug fixes:
146
147   * Fixed TCP bug induced by bad window resizing with unidirectional TCP traffic.
148   * Packets sent from ARP queue had invalid source hardware address.
149
150   ++ Changes:
151
152   * Pass-by ARP requests do now update the cache.
153
154   ++ New features:
155
156   * No longer dependent on ctype.h.
157   * New socket options.
158   * Raw IP pcb support.
159
160 (STABLE-0_6_4)
161
162   ++ Bug fixes:
163
164   * Some debug formatters and casts fixed.
165   * Numereous fixes in PPP.
166
167   ++ Changes:
168
169   * DEBUGF now is LWIP_DEBUGF
170   * pbuf_dechain() has been re-enabled.
171   * Mentioned the changed use of CVS branches in README.
172
173 (STABLE-0_6_3)
174
175   ++ Bug fixes:
176
177   * Fixed pool pbuf memory leak in pbuf_alloc().
178     Occured if not enough PBUF_POOL pbufs for a packet pbuf chain.
179     Reported by Savin Zlobec.
180
181   * PBUF_POOL chains had their tot_len field not set for non-first
182     pbufs. Fixed in pbuf_alloc().
183
184   ++ New features:
185
186   * Added PPP stack contributed by Marc Boucher
187
188   ++ Changes:
189
190   * Now drops short packets for ICMP/UDP/TCP protocols. More robust.
191
192   * ARP queueuing now queues the latest packet instead of the first.
193     This is the RFC recommended behaviour, but can be overridden in
194     lwipopts.h.
195
196 (0.6.2)
197
198   ++ Bugfixes:
199
200   * TCP has been fixed to deal with the new use of the pbuf->ref
201     counter.
202
203   * DHCP dhcp_inform() crash bug fixed.
204
205   ++ Changes:
206
207   * Removed pbuf_pool_free_cache and pbuf_pool_alloc_cache. Also removed
208     pbuf_refresh(). This has sped up pbuf pool operations considerably.
209     Implemented by David Haas.
210
211 (0.6.1)
212
213   ++ New features:
214
215   * The packet buffer implementation has been enhanced to support
216     zero-copy and copy-on-demand for packet buffers which have their
217     payloads in application-managed memory.
218     Implemented by David Haas.
219
220     Use PBUF_REF to make a pbuf refer to RAM. lwIP will use zero-copy
221     if an outgoing packet can be directly sent on the link, or perform
222     a copy-on-demand when necessary.
223
224     The application can safely assume the packet is sent, and the RAM
225     is available to the application directly after calling udp_send()
226     or similar function.
227
228   ++ Bugfixes:
229
230   * ARP_QUEUEING should now correctly work for all cases, including
231     PBUF_REF.
232     Implemented by Leon Woestenberg.
233
234   ++ Changes:
235
236   * IP_ADDR_ANY is no longer a NULL pointer. Instead, it is a pointer
237     to a '0.0.0.0' IP address.
238
239   * The packet buffer implementation is changed. The pbuf->ref counter
240     meaning has changed, and several pbuf functions have been
241     adapted accordingly.
242
243   * netif drivers have to be changed to set the hardware address length field
244     that must be initialized correctly by the driver (hint: 6 for Ethernet MAC).
245     See the contrib/ports/c16x cs8900 driver as a driver example.
246
247   * netif's have a dhcp field that must be initialized to NULL by the driver.
248     See the contrib/ports/c16x cs8900 driver as a driver example.
249
250 (0.5.x) This file has been unmaintained up to 0.6.1. All changes are
251   logged in CVS but have not been explained here.
252
253 (0.5.3) Changes since version 0.5.2
254
255   ++ Bugfixes:
256
257   * memp_malloc(MEMP_API_MSG) could fail with multiple application
258     threads because it wasn't protected by semaphores.
259
260   ++ Other changes:
261
262   * struct ip_addr now packed.
263
264   * The name of the time variable in arp.c has been changed to ctime
265     to avoid conflicts with the time() function.
266
267 (0.5.2) Changes since version 0.5.1
268
269   ++ New features:
270
271   * A new TCP function, tcp_tmr(), now handles both TCP timers.
272
273   ++ Bugfixes:
274
275   * A bug in tcp_parseopt() could cause the stack to hang because of a
276     malformed TCP option.
277
278   * The address of new connections in the accept() function in the BSD
279     socket library was not handled correctly.
280
281   * pbuf_dechain() did not update the ->tot_len field of the tail.
282
283   * Aborted TCP connections were not handled correctly in all
284     situations.
285
286   ++ Other changes:
287
288   * All protocol header structs are now packed.
289
290   * The ->len field in the tcp_seg structure now counts the actual
291     amount of data, and does not add one for SYN and FIN segments.
292
293 (0.5.1) Changes since version 0.5.0
294
295   ++ New features:
296
297   * Possible to run as a user process under Linux.
298
299   * Preliminary support for cross platform packed structs.
300
301   * ARP timer now implemented.
302
303   ++ Bugfixes:
304
305   * TCP output queue length was badly initialized when opening
306     connections.
307
308   * TCP delayed ACKs were not sent correctly.
309
310   * Explicit initialization of BSS segment variables.
311
312   * read() in BSD socket library could drop data.
313
314   * Problems with memory alignment.
315
316   * Situations when all TCP buffers were used could lead to
317     starvation.
318
319   * TCP MSS option wasn't parsed correctly.
320
321   * Problems with UDP checksum calculation.
322
323   * IP multicast address tests had endianess problems.
324
325   * ARP requests had wrong destination hardware address.
326
327   ++ Other changes:
328
329   * struct eth_addr changed from u16_t[3] array to u8_t[6].
330
331   * A ->linkoutput() member was added to struct netif.
332
333   * TCP and UDP ->dest_* struct members where changed to ->remote_*.
334
335   * ntoh* macros are now null definitions for big endian CPUs.
336
337 (0.5.0) Changes since version 0.4.2
338
339   ++ New features:
340
341   * Redesigned operating system emulation layer to make porting easier.
342
343   * Better control over TCP output buffers.
344
345   * Documenation added.
346
347   ++ Bugfixes:
348
349   * Locking issues in buffer management.
350
351   * Bugfixes in the sequential API.
352
353   * IP forwarding could cause memory leakage. This has been fixed.
354
355   ++ Other changes:
356
357   * Directory structure somewhat changed; the core/ tree has been
358     collapsed.
359
360 (0.4.2) Changes since version 0.4.1
361
362   ++ New features:
363
364   * Experimental ARP implementation added.
365
366   * Skeleton Ethernet driver added.
367
368   * Experimental BSD socket API library added.
369
370   ++ Bugfixes:
371
372   * In very intense situations, memory leakage could occur. This has
373     been fixed.
374
375   ++ Other changes:
376
377   * Variables named "data" and "code" have been renamed in order to
378     avoid name conflicts in certain compilers.
379
380   * Variable++ have in appliciable cases been translated to ++variable
381     since some compilers generate better code in the latter case.
382
383 (0.4.1) Changes since version 0.4
384
385   ++ New features:
386
387   * TCP: Connection attempts time out earlier than data
388     transmissions. Nagle algorithm implemented. Push flag set on the
389     last segment in a burst.
390
391   * UDP: experimental support for UDP-Lite extensions.
392
393   ++ Bugfixes:
394
395   * TCP: out of order segments were in some cases handled incorrectly,
396     and this has now been fixed. Delayed acknowledgements was broken
397     in 0.4, has now been fixed. Binding to an address that is in use
398     now results in an error. Reset connections sometimes hung an
399     application; this has been fixed.
400
401   * Checksum calculation sometimes failed for chained pbufs with odd
402     lengths. This has been fixed.
403
404   * API: a lot of bug fixes in the API. The UDP API has been improved
405     and tested. Error reporting and handling has been
406     improved. Logical flaws and race conditions for incoming TCP
407     connections has been found and removed.
408
409   * Memory manager: alignment issues. Reallocating memory sometimes
410     failed, this has been fixed.
411
412   * Generic library: bcopy was flawed and has been fixed.
413
414   ++ Other changes:
415
416   * API: all datatypes has been changed from generic ones such as
417     ints, to specified ones such as u16_t. Functions that return
418     errors now have the correct type (err_t).
419
420   * General: A lot of code cleaned up and debugging code removed. Many
421     portability issues have been fixed.
422
423   * The license was changed; the advertising clause was removed.
424
425   * C64 port added.
426
427   * Thanks: Huge thanks go to Dagan Galarneau, Horst Garnetzke, Petri
428     Kosunen, Mikael Caleres, and Frits Wilmink for reporting and
429     fixing bugs!
430
431 (0.4) Changes since version 0.3.1
432
433   * Memory management has been radically changed; instead of
434     allocating memory from a shared heap, memory for objects that are
435     rapidly allocated and deallocated is now kept in pools. Allocation
436     and deallocation from those memory pools is very fast. The shared
437     heap is still present but is used less frequently.
438
439   * The memory, memory pool, and packet buffer subsystems now support
440     4-, 2-, or 1-byte alignment.
441
442   * "Out of memory" situations are handled in a more robust way.
443
444   * Stack usage has been reduced.
445
446   * Easier configuration of lwIP parameters such as memory usage,
447     TTLs, statistics gathering, etc. All configuration parameters are
448     now kept in a single header file "lwipopts.h".
449
450   * The directory structure has been changed slightly so that all
451     architecture specific files are kept under the src/arch
452     hierarchy.
453
454   * Error propagation has been improved, both in the protocol modules
455     and in the API.
456
457   * The code for the RTXC architecture has been implemented, tested
458     and put to use.
459
460   * Bugs have been found and corrected in the TCP, UDP, IP, API, and
461     the Internet checksum modules.
462
463   * Bugs related to porting between a 32-bit and a 16-bit architecture
464     have been found and corrected.
465
466   * The license has been changed slightly to conform more with the
467     original BSD license, including the advertisement clause.
468
469 (0.3.1) Changes since version 0.3
470
471   * Fix of a fatal bug in the buffer management. Pbufs with allocated
472     RAM never returned the RAM when the pbuf was deallocated.
473
474   * TCP congestion control, window updates and retransmissions did not
475     work correctly. This has now been fixed.
476
477   * Bugfixes in the API.
478
479 (0.3) Changes since version 0.2
480
481   * New and improved directory structure. All include files are now
482     kept in a dedicated include/ directory.
483
484   * The API now has proper error handling. A new function,
485     netconn_err(), now returns an error code for the connection in
486     case of errors.
487
488   * Improvements in the memory management subsystem. The system now
489     keeps a pointer to the lowest free memory block. A new function,
490     mem_malloc2() tries to allocate memory once, and if it fails tries
491     to free some memory and retry the allocation.
492
493   * Much testing has been done with limited memory
494     configurations. lwIP now does a better job when overloaded.
495
496   * Some bugfixes and improvements to the buffer (pbuf) subsystem.
497
498   * Many bugfixes in the TCP code:
499
500     - Fixed a bug in tcp_close().
501
502     - The TCP receive window was incorrectly closed when out of
503       sequence segments was received. This has been fixed.
504
505     - Connections are now timed-out of the FIN-WAIT-2 state.
506
507     - The initial congestion window could in some cases be too
508       large. This has been fixed.
509
510     - The retransmission queue could in some cases be screwed up. This
511       has been fixed.
512
513     - TCP RST flag now handled correctly.
514
515     - Out of sequence data was in some cases never delivered to the
516       application. This has been fixed.
517
518     - Retransmitted segments now contain the correct acknowledgment
519       number and advertised window.
520
521     - TCP retransmission timeout backoffs are not correctly computed
522       (ala BSD). After a number of retransmissions, TCP now gives up
523       the connection.
524
525   * TCP connections now are kept on three lists, one for active
526     connections, one for listening connections, and one for
527     connections that are in TIME-WAIT. This greatly speeds up the fast
528     timeout processing for sending delayed ACKs.
529
530   * TCP now provides proper feedback to the application when a
531     connection has been successfully set up.
532
533   * More comments have been added to the code. The code has also been
534     somewhat cleaned up.
535
536 (0.2) Initial public release.