NXP lwIP Fork Changelog#
This file documents the changes and additions made in the NXP fork of lwIP. For the list of changes in the upstream project version which this fork is based on, see CHANGELOG.
Source code included in this SDK is currently based on development version 2.2.1 taken from 3rd party lwIP GIT repository. The webpage https://git.savannah.nongnu.org/cgit/lwip.git allows to browse that 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 upstream code into the SDK.
KSDK refers to Kinetis SDK, the predecessor of MCUXpresso SDK.
2.2.1_rev9 (newest)#
New features:#
The feature “Iperf now tries to place buffers into fast memory” (introduced in 2.2.1_rev5) can be disabled by defining LWIPERF_QUICKACCESS_TX_BUFFER to 0.
2.2.1_rev8#
New features:#
Applied patch #10465: Overall altcp_tls_mbedtls fixes and enhancements (https://savannah.nongnu.org/patch/?10465):
Copy received TCP flags
Free client’s TLS config on dealloc
Fix abort management. Fix to return ERR_ABRT on altcp_abort(). Add check to altcp_mbedtls_abort().
Free SSL cache and session tickets on tls_free_config()
Mark freed members to prevent double free.
Correctly close and free LISTEN connections
Use handshake steps rather than a single blocking call
Add mbedtls return values.
free rx_app on dealloc
correct ALTCP_MBEDTLS_PLATFORM_ALLOC configuration
Manage write apiflags
Port to mbedtls v3
Fix the return value of altcp_mbdtls_sndbuf when the underlying tcp sndbuf is consumed by ssl expansion bytes.
Switched from mbedTLS 2.x to mbedTLS 3.x:
Updated Kconfig dependencies.
Updated altcp_tls_mbedtls layer to use PSA crypto random number generator abstraction instead of ctr_drbg, which would be initialized twice.
Updated NXP web server (src/apps/httpsrv).
Bug fixes:#
Fixed sys_sem_new in FreeRTOS porting layer:
If the initial count argument was 1, the newly created semaphore was not signalled from the start.
The initial count should be just 0 or 1 according to lwIP documentation, but the implementation allowed it to be more than 1 (counting semaphore). Fixed to allow only binary semaphore behavior.
src/apps/httpsrvupdated to use FreeRTOS API directly where it cannot use sys_sem_t as a counting semaphore anymore.
2.2.1_rev7#
New features:#
Operating system abstraction layer: the default implementation of the sys_msleep function (using a temporary allocated semaphore) is overwritten by a new implementation in the adaptation layer (using vTaskDelay on FreeRTOS).
Bug fixes:#
ENET QoS adaptation layer: initialize the CSR (control and status register) clock field in the driver configuration. This fixes the bug with the number of clock ticks for one-microsecond reference timer being set incorrectly.
Ethernet adaptation layers: Updated logic in ethernetif_pbuf_free_safe to allow the thread to sleep between attempts to schedule pbuf_free on tcpip_thread. Previously, when ETH_RX_TASK_PRIO was higher than tcpip_thread priority and scheduling failed due to resource constraints, ethernetif_pbuf_free_safe would loop indefinitely, preventing tcpip_thread from freeing those resources. Changes include:
Added thread sleep between scheduling attempts to prevent infinite loops
Removed looping on schedule failure in interrupt context (now asserts instead)
Added direct pbuf_free calls when LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT is enabled
2.2.1_rev6#
New features:#
Support for on-demand timers for some of the protocols. Reused from Espressif open source lwIP port. LwIP default protocol timer handlers are invoked periodically, even if there is nothing to do. This is not suitable for low-power applications entering into a sleep mode. The added feature calculates the time when the timer callback should be invoked, instead of waking-up periodically to only check if there is anything to do or not. The feature is turned off by default and can be enabled by the following options:
LWIP_IP4_REASSEMBLY_TIMERS_ONDEMAND
LWIP_IP6_REASSEMBLY_TIMERS_ONDEMAND
LWIP_DNS_TIMERS_ONDEMAND
LWIP_DHCP_FINE_TIMERS_ONDEMAND
LWIP_IGMP_TIMERS_ONDEMAND
LWIP_MLD6_TIMERS_ONDEMAND
Note that other protocols don’t have on-demand timers implemented, so for example if there are open TCP connections, its protocol timers will be still invoked periodically.
NETC adaptation layer: Possibility to use switch port, see NETC_USE_SWT and related options.
New option ETH_USE_GPIO_ADAPTER which can be used on platforms without GPIO adapter to bypass the code using it.
New option ETH_ENET_QOS_MII_MODE to override default MII mode for ENET QoS.
2.2.1_rev5#
New features:#
Iperf now tries to place buffers into fast memory.
2.2.1_rev4#
New features:#
Enabled build of
ALTCP_TLS:This enables option to use
ALTCPwith mbedTLS for transparent TLS.Added new
MCUX_COMPONENT_middleware.lwip.apps.altcp_tlscomponent to Kconfig.Updated CMake to compile the source files if the component is enabled.
Added
ALTCP_MBEDTLSconfiguration settings to Kconfig.
Added support for NETC VSI pre-init.
Removed unused files with LGPL license or unknown origin.
Bug fixes:#
src/apps/altcp_tls: fixed compilation whenMBEDTLS_HAVE_TIMEis not defined.src/core/ipv6/mld6.c: fixed the setting of MLDv6 general report delay. Especially when the maximum response delay was smaller thanMLD6_TMR_INTERVAL, it could be assigned to a value out of the requested range, or end up not sending the report at all.Fixed ethernet transmission issue on USB (not handling chained pbufs).
2.2.1_rev3#
New features:#
Added optional ability to generate lwIP options header file from Kconfig. The feature has been introduced to align with the changes in MCUXpresso SDK. It can be enabled when using Kconfig and lwIP is used directly from repository, for example when using
west buildcommand to generate or build projects. It cannot be used when working with SDK packages, but since lwIP examples (inlwip_examplesfolder) have been switched to this approach in repository, you can find pregeneratedlwipopts_gen.hfiles in SDK packages (note that if you want to add/change some of the pregenerated settings, do it inlwipopts_gen.h, notlwipopts.h).The optional feature is disabled by default and can be enabled by setting
CONFIG_MCUX_PRJSEG_middleware.lwip.generated_config=yinprj.conf. When enabled, lwIP options are configured using the Kconfig system, usually written inprj.conffile(s) or.configfile withCONFIG_prefix. Kconfig system uses this information to generatelwipopts_gen.hduring build phase. It is included fromlwipopts.h(fromtemplate/kconfig). Thelwipopts.hfile is not intended to be edited, it does preprocessing of the values fromlwipopts_gen.h.The list of options, its types, default values and description is in the file named
Kconfig, under themenu "Options (lwipopts_gen.h)".Note that there are some differences from using manually edited
lwipopts.h:Use
CONFIG_prefix in Kconfig, so for exampleCONFIG_LWIP_IPV6instead ofLWIP_IPV6. In the generated header, the prefix is removed.For boolean options, use
yorninstead of0and1in Kconfig. For exampleCONFIG_LWIP_IPV6=yinstead of#define LWIP_IPV6 1.Default values for some integer options are using formulas referencing other options. For example,
TCP_WNDdefault is(4 * TCP_MSS). Kconfig does not support this, so this option has string type instead of int. The consequence is that you must write quotes in Kconfig for such settings, even if entering integer value, for exampleCONFIG_TCP_WND="5840". There are more such options, please pay attention to the type definition in Kconfig and any Kconfig warnings in the output of processing.Default values for some options are referencing other options, without using formulas. For example
TCP_TTLdefaults toIP_DEFAULT_TTL. But since Kconfig translates defaults to values, if you changeIP_DEFAULT_TTLlater, you may need to override theTCP_TTLto the same value as well (if you still want it the same asIP_DEFAULT_TTL).Options which are function macros, taking no parameters, have a single space between the braces. For example the following written in manually edited
lwipopts.h:#define LWIP_ASSERT_CORE_LOCKED() sys_check_core_locking()would be like this in Kconfig instead:
CONFIG_LWIP_ASSERT_CORE_LOCKED( )="sys_check_core_locking()"Some functions macros are used in the lwIP code if they are defined. Because Kconfig generates string options with empty value, it would result in a compilation error. Therefore, such options have
_CUSTOMsuffix in Kconfig and the final option is hidden, without a prompt, generated only when the one with the_CUSTOMsuffix does not have empty string value. Example isLOCK_TCPIP_COREoption, where it could be written asCONFIG_LOCK_TCPIP_CORE_CUSTOM( )="sys_lock_tcpip_core()"instead ofCONFIG_LOCK_TCPIP_CORE( )="sys_lock_tcpip_core()".Function signatures cannot be written in the generated
lwipopts_gen.h. But it can be written inCONFIG_LWIP_OPT_H_CODE_LINE_Noptions, whereNis a line number. It will appear intemplate/kconfig/lwipopts.hbeforelwipopts_gen.his included. That way the signatures will be visible for the code which uses the function macros. For example the options to bring some function signatures from NXP porting layer could be entered like this for FreeRTOS projects:CONFIG_LWIP_OPT_H_CODE_LINE_1="void sys_lock_tcpip_core(void);" CONFIG_LWIP_OPT_H_CODE_LINE_2="void sys_unlock_tcpip_core(void);" CONFIG_LWIP_OPT_H_CODE_LINE_3="void sys_check_core_locking(void);" CONFIG_LWIP_OPT_H_CODE_LINE_4="void sys_mark_tcpip_thread(void);"
or for bare-metal projects:
CONFIG_LWIP_OPT_H_CODE_LINE_1="void sys_check_core_locking(void);"Note that the “line numbers” must be used from 1 and numbers cannot be skipped. So it is not possible to comment or delete
CONFIG_LWIP_OPT_H_CODE_LINE_2and continue withCONFIG_LWIP_OPT_H_CODE_LINE_3, all must be renumbered. The function signatures must use only basic C data types, no data types or typedefs from stdint.h or lwIP etc. There might be a cast used in the function macro option if needed.Some boolean options, which are just defined without value in C code, must still be written with a value. Example is
LWIP_DEBUG, it would be written asCONFIG_LWIP_DEBUG=yorCONFIG_LWIP_DEBUG=n. Other such options areLWIP_PROVIDE_ERRNOandLWIP_ENET_FLEXIBLE_CONFIGURATION.Note that Kconfig does not generate boolean values if they are set to “n”. The file
template/kconfig/lwipopts.hdefines the non-generated options to 0, so that lwIP does not define them again to 1 (if it has such default value in its code).When using Kconfig, do not define
LWIP_RAND. It’s function macro is defined in the porting layer incc.h. SeeLWIP_DEFINE_LWIP_RAND_IN_CC_Hthere and in Kconfig.All options from
opt.hand some of the applications and porting layer options have been enabled Kconfig. If you find something missing, such macro can be added to a project command line or manually edited inlwipopts_gen.h(if it is used and will not be regenerated).Formatting macros like
X8_F,U16_F, etc. are not present in Kconfig system and does not need to be put intolwipopts.h, see below.Default values for formatting macros like
X8_F,U16_F, etc. are defined incc.h, so it does not need to be entered inlwipopts.h.
Bug fixes:#
src/apps/mdns:mdns_resp_remove_netifstops all timeouts related to the netif now. This prevents the timeout handlers to send answers on netifs which already have mDNS responder disabled and prevents access to deallocated structures. It also prevents excessive number of timeouts being scheduled when mDNS responder is disabled and reenabled on netif quickly.
2.2.1_rev2#
Bug fixes:#
src/apps/lwiperf: Fixed calculation of the number of UDP datagrams to transmit. When the desired rate was high and datagram size small, the ideal delay between each transmitted datagram could be smaller than 1 microsecond. The value was truncated to zero and resulted in zero-division and/or no UDP transmitted at all.port/arch/cc.h: code which checks for the presence of Newlib standard C library adds import of a standard header first so the__NEWLIB__macro is always available when Newlib is used. This preventsLWIP_TIMEVAL_PRIVATEfrom having different values in one program.
2.2.1_rev1#
New features:#
Ported lwIP 2.2.1.dev (2024-02-19, branch: master, SHA-1: d0efd9ef7ba08e54b46b1060e2b4629a4907391b) to MCUXpresso SDK.
Added
ETH_MAX_RX_PKTS_AT_ONCEmacro. See port/README.md for details.In
port/netc_ethernetif.c, addedNETC_VSI_NUM_USEDmacro to support using VSI. A thread of SI message handling will be started to handle VSI-PSI messages.
Bug fixes:#
Added the missing implementation for
IP_FORWARD_ALLOW_TX_ON_RX_NETIFoption in the function ip6_forward. Therefore, IPv6 packets could be sent back out on the netif where they were originally received from.NETC adaptation layer: Do not call
xEventGroupSetBitsfrom ISR.Ethernet adaptation layers: Default value of priority of the receive task (
ETH_RX_TASK_PRIO) is set lower than the priority of the FreeRTOS daemon task (timer task).
2.2.0_rev11#
New features:#
NETC adaptation layer: Possible to disable IPv4/TCP/UDP checksum validation done in HW.
EtherCAT EoE(Ethernet over EtherCAT) driver is added to lwip.
Bug fixes:#
src/apps/httpsrv/httpsrv_supp.c: Fixed performing of the HTTP server task priority limitation.
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_MSmacro controls this - setting it to 0 and specifyingethernetif_config_t->phyIntGpioenables 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 patch 10114. The option
LWIP_ND6_NUM_ROUTERShas been removed, and the new optionLWIP_ND6_NUM_ROUTEShas 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 functionsys_assertdoes not callportENTER_CRITICALwhen 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 inHTTPSRV_releaseif caller’s task has higher priority than server task.port/arch/cc.h: LWIP_PLATFORM_DIAG is defined (and can be overridden) independently of theLWIP_DEBUGsetting. 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 withLWIP_IPV6enabled. Server can be also accessed using both IPv4 and IPv6 at the same time if compiled with bothLWIP_IPV4=1andLWIP_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 functionslwiperf_start_tcp_client()andlwiperf_start_udp_client()to configure TCP/UDP packet size.src/apps/lwiperf: Added new parameter “tos” to functionslwiperf_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 settingETH_LINK_POLLING_INTERVAL_MSto value higher than zero.Added helper functions
ethernetif_wait_linkup()andethernetif_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_TASKmacro 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: Delegatingpbuf_freecalls totcpip_threadviapbuf_free_callbackwhere possible (RTOS), ensuringpbuf_freeis not called from interrupt context whenLWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXTis not set (bare metal).port/enet_ethernetif_qos.c- FixedENET_RXBD_NUMwhich was used instead ofENET_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 byENET_RXBUFF_NUMnow, which is2 * ENET_RXBD_NUMby default. Increase was needed because the actual version of LPC ENET driver always holdENET_RXBD_NUMnumber 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 decreasingPBUF_POOL_SIZE, sincePBUF_POOLis 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_CHECKoption 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 byENET_RXBUFF_NUMnow, which is2 * ENET_RXBD_NUMby default. Increase was needed because the actual version of Kinetis ENET and ENET QOS drivers always holdENET_RXBD_NUMnumber 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 decreasingPBUF_POOL_SIZE, sincePBUF_POOLis used only for transmission when Kinetis ENET or ENET QOS is used.Removed
ethernetif_config_t.non_dma_memoryfield which was required to configure memory ranges unusable by ENET DMA on LPC devices. The setting has been replaced byBOARD_ENET_NON_DMA_MEMORY_ARRAYmacro.
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_LOCKEDrelated functions insys_arch.c. It can be enabled inlwipopts.h:#define LWIP_ASSERT_CORE_LOCKED() sys_check_core_locking() #define LWIP_MARK_TCPIP_THREAD() sys_mark_tcpip_thread() // if NO_SYS == 0 #define LOCK_TCPIP_CORE() sys_lock_tcpip_core() // if NO_SYS == 0 and LWIP_TCPIP_CORE_LOCKING == 1 #define UNLOCK_TCPIP_CORE() sys_unlock_tcpip_core() // if NO_SYS == 0 and LWIP_TCPIP_CORE_LOCKING == 1
2.1.2_rev5#
New features:#
Implemented
TCP_USER_TIMEOUTsocket option.Implemented
SIOCOUTQioctl.
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()inenet_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 streamHTTPSRV_cgi_read()- added limiting of the last chunk length according to content length to avoid undesired blocking
Applied
AUTOIPpatch 9847 - with modification to support multiple network interfaces.Fixed buffer overflow in
httpsrvwhen application provided CGI script does not handle the whole content of POST requestRemoved
LwipMibCompilercontrib application as it contained LGPL licensed files inSharpSnmpLib.
2.1.2_rev3#
New features:#
lwiperf updated with UDP client/server support from the patch 9751
2.1.2_rev2#
Bug fixes:#
Fixed
lwiperf_abort()inlwiperf.cto 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.