218 lines
15 KiB
Plaintext
218 lines
15 KiB
Plaintext
/*!
|
|
@page middleware_log Middleware Change Log
|
|
|
|
@section lwip lwIP for MCUXpresso SDK
|
|
Lightweight IP (lwIP) is a small independent implementation of the TCP/IP protocol suite.
|
|
Source code included in this SDK is based on version 2.2.0 taken from 3rd party lwIP GIT repository.
|
|
The webpage https://git.savannah.nongnu.org/cgit/lwip.git allows to browse the repository and also contains URLs for its cloning.
|
|
The development versions (X.Y.Z.dev) do not refer to a single source code snapshots. To avoid ambiguity,
|
|
change log below contains SHA-1 hashes of GIT commits used when importing the code into the SDK.
|
|
|
|
- 2.2.0_rev10
|
|
- New features:
|
|
- Ported lwIP 2.2.0 (2023-09-25, branch: master, SHA-1: 0a0452b2c39bdd91e252aef045c115f88f6ca773, tag: STABLE-2_2_0_RELEASE) to MCUXpresso SDK.
|
|
- Enabled hardware-accelerated CRC computation and verification (MAC, IPv4, TCP, UDP, ICMPv4, ICMPv6) for ENET Kinetis, ENET QoS and ENET LPC.
|
|
- Enabled link state detection based on PHY interrupts.
|
|
The ETH_LINK_POLLING_INTERVAL_MS macro controls this - setting it to 0 and specifying ethernetif_config_t->phyIntGpio enables it, setting it to a value greater
|
|
than zero enables polling instead. Supported only under an RTOS (NO_SYS == 0). By default, the link state is polled.
|
|
- ND6: Implemented RFC 4191 type C host, which means default router list (learned from Router Advertisement messages)
|
|
has been replaced with routing table, which contains default route records for each router and also routes learned
|
|
from received Route Information Options. Changes partially based on https://savannah.nongnu.org/patch/?10114.
|
|
The option LWIP_ND6_NUM_ROUTERS has been removed, and the new option LWIP_ND6_NUM_ROUTES has been added
|
|
to configure the size of the routing table.
|
|
- IPv6: Implemented a new hook - LWIP_HOOK_IP6_CANFORWARD. This hook can be used, for example, for multicast
|
|
forwarding between netifs. Defining this hook enables multicast traffic forwarding, thus the hook is also invoked
|
|
for multicast traffic.
|
|
- MLD6: Multicast Listener Discovery v1 replaced by v2 (RFC 3810) but without support of source specific multicast.
|
|
- port/enet_ethernetif_kinetis.c: Added check to generate/validate ICMPv6 checksum in SW as the Kinetis ENET peripheral does not do it.
|
|
- Added disabling of Rx interrupt when the port is out of Rx buffers. See port/README.md for more details.
|
|
- Bug fixes:
|
|
- src/apps/lwiperf: Fixed access to invalid data when UDP report is to be sent from a timer but abort has been called before.
|
|
- src/apps/lwiperf: Fixed deallocation of TCP server started by client (in reverse or dual modes) which failed to connect.
|
|
- port/netc_ethernetif.c: Fixed cache control enablement macro (FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL > FSL_ETH_ENABLE_CACHE_CONTROL).
|
|
- port/sys_arch.c: The function sys_assert does not call portENTER_CRITICAL when called from an interrupt.
|
|
- src/core/ipv4/ip4.c: Fixed checksum reset condition.
|
|
- ND6:
|
|
- Lladdr length is now taken from netif->hwaddr_len so ND6 works properly regardless of NETIF_MAX_HWADDR_LEN.
|
|
- Added check of sufficient length of lladdr options from incoming messages.
|
|
- src/apps/httpsrv/httpsrv.c: Fixed hangup in HTTPSRV_release if caller's task has higher priority than server task.
|
|
- port/arch/cc.h: LWIP_PLATFORM_DIAG is defined (and can be overridden) independently of the LWIP_DEBUG setting.
|
|
Removed printing extra newline symbols from LWIP_PLATFORM_DIAG.
|
|
- src/apps/lwiperf: The "end of test" UDP datagram is resent more often.
|
|
This increases the probability of the server to receive it and end the test when datagrams are getting lost.
|
|
- Added port/README.md describing possible settings and helper functions in the port layer.
|
|
|
|
- 2.2.0_rev9
|
|
- New features:
|
|
- Ported lwIP 2.2.0.dev (2023-01-03, branch: master, SHA-1: 3fe8d2fc43a9b69f7ed28c63d44a7744f9c0def9) to MCUXpresso SDK.
|
|
- Applied patch to allow sending IPv6 router advertisement. Improved to allow selection of interface and router life time
|
|
and to allow sending route information options.
|
|
- src/apps/lwiperf: Support for reverse test (client receives, server sends). Requires iperf version 2.1.0 or newer.
|
|
- Bug fixes:
|
|
- src/apps/httpsrv: Fixed operation with LWIP_IPV6 enabled. Server can be also accessed using both IPv4 and IPv6 at the same
|
|
time if compiled with both LWIP_IPV4=1 and LWIP_IPV6=1.
|
|
Note the type of the field struct httpsrv_param_struct.address has changed from struct sockaddr to struct sockaddr_storage.
|
|
|
|
- 2.2.0_rev8
|
|
- New features:
|
|
- src/apps/lwiperf: Added new parameter "buffer_len" to functions lwiperf_start_tcp_client() and lwiperf_start_udp_client()
|
|
to configure TCP/UDP packet size.
|
|
- src/apps/lwiperf: Added new parameter "tos" to functions lwiperf_start_tcp_client() to configure TCP packet priority.
|
|
- NETC adaptation layer: Not forcing the RX/TX buffers placement in non-cacheable memory.
|
|
Requires the symbol FSL_ETH_ENABLE_CACHE_CONTROL to be defined on project level if the memory region,
|
|
where the buffers are placed by a linker, has cache enabled.
|
|
- Bug fixes:
|
|
- src/apps/httpsrv: Added missing includes.
|
|
- src/apps/lwiperf: Fixed TCP client to send settings at the beginning of each 128 KB block like the PC iperf 2.0.x application does.
|
|
- src/apps/lwiperf: Fixed validation of TCP received data (with LWIPERF_CHECK_RX_DATA enabled, works with iperf 2.0.x).
|
|
- src/apps/lwiperf: Fixed lwiperf_list_remove() to clear references to the removed item.
|
|
- src/apps/lwiperf: Program does not assert when buffer cannot be cloned in UDP test, only "can't clone buffer" message is printed.
|
|
|
|
- 2.2.0_rev7
|
|
- New features:
|
|
- Ported lwIP 2.2.0.dev (2022-05-09, branch: master, SHA-1: 239918ccc173cb2c2a62f41a40fd893f57faf1d6) to MCUXpresso SDK.
|
|
- Added function ethernetif_probe_link() which reads actual link, speed and duplex settings from phy and passes them to driver.
|
|
Stack could be set to call this function periodically by setting ETH_LINK_POLLING_INTERVAL_MS to value higher than zero.
|
|
- Added helper functions ethernetif_wait_linkup() and ethernetif_wait_ipv4_valid() to allow blocking of RTOS task or
|
|
bare metal application until link is up or IPv4 address becomes valid.
|
|
- Added NETC adaptation layer.
|
|
- Processing of rx packets under RTOS moved from ISR to a separate task to improve system reaction times.
|
|
Switch back to old behavior can be done by setting ETH_DO_RX_IN_SEPARATE_TASK macro to 0.
|
|
- Bug fixes:
|
|
- port: Fixed copying of pbuf contents. Previous code was using an incorrect end condition and could result
|
|
in the overrun of the destination buffer if more packets were on the queue.
|
|
- port: Delegating pbuf_free calls to tcpip_thread via pbuf_free_callback where possible (RTOS),
|
|
ensured pbuf_free is not called from interrupt context when LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT is not set (bare metal).
|
|
- port/enet_ethernetif_qos.c - Fixed ENET_RXBD_NUM which was used instead of ENET_TXBD_NUM.
|
|
- port/enet_ethernetif_qos.c - Fixed buffer alignment to be at least 64.
|
|
- src/apps/lwiperf: Fixed IPv6 TCP TX throughput lower than IPv4 by modifying maximum segment size
|
|
to avoid sending two segments instead of one.
|
|
- src/apps/lwiperf: Out-of-order datagrams in UDP RX server mode are counted to the throughput.
|
|
- src/apps/httpsrv: Implemented receive timeouts on sockets.
|
|
- src/apps/httpsrv: Don't assert on HTTP session task creation failure.
|
|
- src/apps/httpsrv: Fixed build with IPv6 enabled.
|
|
- src/apps/httpsrv: Updated endianess macros required for websocket SHA generation.
|
|
- src/apps/httpsrv: Added missing includes.
|
|
|
|
- 2.2.0_rev6
|
|
- New features:
|
|
- Ported lwIP 2.2.0.dev (2022-03-25, branch: master, SHA-1: 124dc0a64ef5d7c14a27e3115e5888df6559cb72) to MCUXpresso SDK.
|
|
- Implemented leaving of multicast groups on ENET and ENET QOS.
|
|
|
|
- 2.2.0_rev5
|
|
- New features:
|
|
- Ported lwIP 2.2.0.dev (2021-05-11, branch: master, SHA-1: 7ec4e9be304e7f8953740f10b2c810a292e89449) to MCUXpresso SDK.
|
|
- LPC ENET adaptation layer allocates more buffers for frame reception now.
|
|
Previously the number of receive buffers was determined by ENET_RXBD_NUM, which defaults to 5.
|
|
It is determined by ENET_RXBUFF_NUM now, which is 2 * ENET_RXBD_NUM by default.
|
|
Increase was needed because the actual version of LPC ENET driver always hold ENET_RXBD_NUM number of buffers
|
|
and few additional buffers are needed for passing zero-copy frame data to lwIP.
|
|
If this takes too much memory in your application, you can counteract by decreasing PBUF_POOL_SIZE,
|
|
since PBUF_POOL is used only for transmission when LPC ENET, Kinetis ENET or ENET QOS is used.
|
|
|
|
- 2.2.0_rev4
|
|
- New features:
|
|
- Ported lwIP 2.2.0.dev (2021-03-05, branch: master, SHA-1: 0056522cc974d2be2005c324f37187b5b3695765) to KSDK 2.0.0.
|
|
- LWIP_DHCP_DOES_ACD_CHECK option default changed to 0 (disabled):
|
|
- Although the ACD check makes getting IP address from DHCP more robust, it added several seconds delay at startup of all applications which use DHCP.
|
|
- This feature was not present in earlier versions of lwIP.
|
|
- ENET QOS adaptation layer - implemented zero-copy on receive.
|
|
- Kinetis ENET and ENET QOS adaptation layers allocate more buffers for frame reception now.
|
|
Previously the number of receive buffers was determined by ENET_RXBD_NUM, which defaults to 5.
|
|
It is determined by ENET_RXBUFF_NUM now, which is 2 * ENET_RXBD_NUM by default.
|
|
Increase was needed because the actual version of Kinetis ENET and ENET QOS drivers always hold ENET_RXBD_NUM number of buffers
|
|
and few additional buffers are needed for passing zero-copy frame data to lwIP.
|
|
If this takes too much memory in your application, you can counteract by decreasing PBUF_POOL_SIZE,
|
|
since PBUF_POOL is used only for transmission when Kinetis ENET or ENET QOS is used.
|
|
- Removed ethernetif_config_t.non_dma_memory field which was required to configure memory ranges unusable by ENET DMA on LPC devices.
|
|
The setting has been replaced by BOARD_ENET_NON_DMA_MEMORY_ARRAY macro.
|
|
|
|
- 2.2.0_rev3
|
|
- New features:
|
|
- Ported lwIP 2.2.0.dev (2020-07-07, branch: master, SHA-1: c385f31076b27efb8ee37f00cb5568783a58f299) to KSDK 2.0.0.
|
|
|
|
- 2.2.0_rev2
|
|
- New features:
|
|
- Kinetis ENET adaptation layer - implemented zero-copy on receive.
|
|
- lwiperf - counter of transferred bytes extended from 32 to 64 bit
|
|
- Bug fixes:
|
|
- Fixed restarting Auto IP from DHCP.
|
|
|
|
- 2.2.0_rev1
|
|
- New features:
|
|
- Ported lwIP 2.2.0.dev (2019-12-12, branch: master, SHA-1: 555812dcec38c9a2ef1ef9b31816291549fbf9f8) to KSDK 2.0.0.
|
|
- Implemented LWIP_ASSERT_CORE_LOCKED related functions in sys_arch.c. It can be enabled in lwipopts.h:
|
|
- <tt>\#define LWIP_ASSERT_CORE_LOCKED() sys_check_core_locking()</tt>
|
|
- <tt>\#define LWIP_MARK_TCPIP_THREAD() sys_mark_tcpip_thread() // if NO_SYS == 0</tt>
|
|
- <tt>\#define LOCK_TCPIP_CORE() sys_lock_tcpip_core() // if NO_SYS == 0 and LWIP_TCPIP_CORE_LOCKING == 1</tt>
|
|
- <tt>\#define UNLOCK_TCPIP_CORE() sys_unlock_tcpip_core() // if NO_SYS == 0 and LWIP_TCPIP_CORE_LOCKING == 1</tt>
|
|
|
|
- 2.1.2_rev5
|
|
- New features:
|
|
- Implemented TCP_USER_TIMEOUT socket option.
|
|
- Implemented SIOCOUTQ ioctl.
|
|
|
|
- 2.1.2_rev4
|
|
- New features:
|
|
- Ported lwIP 2.1.3.dev (2019-02-27, branch: STABLE-2_1_x, SHA-1: 1bb6e7f52de1cd86be0eed31e348431edc2cd01e) to KSDK 2.0.0.
|
|
- Updated sys_thread_new implementation and comment.
|
|
- Kinetis ENET adaptation layer - reading frames into a pbuf chain is conditionally compiled only when a single pbuf from pool
|
|
cannot hold maximum frame size (PBUF_POOL_BUFSIZE >= maximum frame size).
|
|
Avoiding this code also reduces stack size requirements by about 1.5 kilobytes.
|
|
- Bug fixes:
|
|
- Fixes in ethernetif_linkoutput() in enet_ethernetif_lpc.c:
|
|
- Removed access to possibly freed pbuf.
|
|
- Call pbuf_free() when transmit buffers not available.
|
|
- When copying pbuf chain, updating the number of necessary transmit buffers to wait for, which can be often smaller in the copy.
|
|
- When CGI script is reading POST data by chunks, the loop in httpsrv_read() may cause blocking in receive function waiting for more data at the end of the stream
|
|
- HTTPSRV_cgi_read() - added limiting of the last chunk length according to content length to avoid undesired blocking
|
|
- Applied AUTOIP patch https://savannah.nongnu.org/patch/?9847 - with modification to support multiple network interfaces.
|
|
- Fixed buffer overflow in httpsrv when application provided CGI script does not handle the whole content of POST request
|
|
- Removed LwipMibCompiler contrib application as it contained LGPL licensed files in SharpSnmpLib.
|
|
|
|
- 2.1.2_rev3
|
|
- New features:
|
|
- lwiperf updated with UDP client/server support from the patch 9751 (https://savannah.nongnu.org/patch/?9751)
|
|
|
|
- 2.1.2_rev2
|
|
- Bug fixes:
|
|
- Fixed lwiperf_abort() in lwiperf.c to correctly close connections and free resources
|
|
|
|
- 2.1.2_rev1
|
|
- New features:
|
|
- Ported lwIP 2.1.2 (2018-11-22, SHA-1: 159e31b689577dbf69cf0683bbaffbd71fa5ee10) to KSDK 2.0.0.
|
|
- Ported lwIP-contrib 2.1.0 (2018-09-24, SHA-1: 35b011d4cf4c4b480f8859c456587a884ec9d287) to KSDK 2.0.0.
|
|
|
|
- 2.0.3_rev1
|
|
- New features:
|
|
- Ported lwIP 2.0.3 (2017-09-15, SHA-1: 92f23d6ca0971a32f2085b9480e738d34174417b) to KSDK 2.0.0.
|
|
|
|
- 2.0.2_rev1
|
|
- New features:
|
|
- Ported lwIP 2.0.2 (2017-03-13, SHA-1: c0862d60746e2d1ceae69af4c6f24e469570ecef) to KSDK 2.0.0.
|
|
|
|
- 2.0.0_rev3
|
|
- New features:
|
|
- Ported lwIP 2.0.0 (2016-11-10, SHA-1: 216bf89491815029aa15463a18744afa04df58fe) to KSDK 2.0.0.
|
|
|
|
- 2.0.0_rev2
|
|
- New features:
|
|
- Ported lwIP 2.0.0 RC2 (2016-08-08, SHA-1: b1dfd00f9233d124514a36a8c8606990016f2ad4) to KSDK 2.0.0.
|
|
|
|
- 2.0.0_rev1
|
|
- New features:
|
|
- Ported lwIP 2.0.0 RC0 (2016-05-26) to KSDK 2.0.0.
|
|
- Changed lwIP bare-metal examples to use poll-driven approach instead of interrupt-driven one.
|
|
|
|
- 1.4.1_rev2
|
|
- New features:
|
|
- Enabled critical sections in lwIP.
|
|
- Bug fixes:
|
|
- Fixed default lwIP packet-buffer size to be able to accept a maximum size frame from the ENET driver.
|
|
- Fixed possible drop of multi-frame packets during transmission.
|
|
|
|
- 1.4.1_rev1
|
|
- New features:
|
|
- Ported lwIP 1.4.1 to KSDK 2.0.0.
|
|
*/
|