The Embedded Experts

Release notes for emNet

Version 3.40a [29. June 2020]

New Features

  1. Core: New API added:
    • IP_SOCK_recvfrom_info()
  2. FTP server (optional add-on): Added new API to send custom sign on messages:
    • IP_FTPS_SetSignOnMsgCallback()
    • IP_FTPS_SendFormattedString()
    • IP_FTPS_SendMem()
    • IP_FTPS_SendString()
    • IP_FTPS_SendUnsigned()

Improvements

  1. SNMP agent (optional add-on): Added the OID trap define IP_SNMP_GENERIC_TRAP_OID_ENTERPRISE_SPECIFIC for traps sent for enterprise/customer branch specific reasons.
  2. MQTT client (optional add-on): PINGRESP handling optimized.

Program corrections

  1. Core: The PHY write test added in v3.40 expects the software reset bit (bit 15 in BMCR register) to be useable. For switches the bit is present but read only, resulting the loopback bit remaining active after the test. Fixed by writing back the register value initially read.
  2. Core: IP_DHCPC_SetVendorOptionsCallback() renamed to IP_DHCPS_SetVendorOptionsCallback() as it has been wrongly given the DHCP client prefix.
  3. MQTT client (optional add-on): Duplicate flag in publish message header is not at the correct position. Fixed.
  4. MQTT client (optional add-on): Availability of error handling callback was not checked. Fixed.

Version 3.40 [2. April 2020]

New Features

  1. Core: IP_SetNanosecondsCallback() added. Timestamps taken based on IP_SetMicrosecondsCallback() will internally be multiplied by 1000. Only one callback has to be set.
  2. Core: IP_MDNS_ResolveHostSingleIP() added.
  3. Core: IP_NI_PauseRx() added for better anti-flood counter measure (better implementration than IP_NI_PauseRxInt() that was added with v3.22a). Has to be supported by the NI driver.
  4. Core: IP_NI_ConfigUsePromiscuousMode() added to be able to force the driver into promiscuous mode if supported.
  5. Core: IP layer PacketId now gets randomized based on the time the first Ethernet packet is received.
  6. Core: Socket option IP_TLL and IP_MULTICAST_TTL added to setsockopt()/getsockopt() .
  7. Core: New API added:
    • IP_ConfigReportSameMacOnNet()
    • IP_DHCPC_GetOptionRequestList()
    • IP_DHCPC_SetOnOptionCallback()
    • IP_DHCPC_SetOptionRequestList()
    • IP_IsInitialized()
    • IP_SetUseRxTask()
    • IP_ShutDown()
    • IP_SOCKET_AddGetSetOptHook()
    • IP_SOCKET_GetErrorCode()
  8. DHCP server (optional add-on): IP_DHCPS_SetReservedAddresses() can now reserve addresses based on HW/MAC address, hostname or both.
  9. PTP OC (optional add-on): IP_PTP_OC_SetInfoCallback() added.
  10. Driver: CADENCE driver, new API added:
    • IP_NI_CADENCE_SetPhyUpdateCallback()
  11. Driver: Added automatic MDIO clock divider selection (MDIO CR value) to Synopsys and Synopsys QOS if BSP_IP_API->pfGetEthClock() callback is available.
  12. Driver: Added support for NXP i.MXRT11xx (Fast Ethernet) support to Kinetis driver.
  13. Driver: Added support for GigaDevice GD32F450 to generic Synopsys driver.
  14. Driver: Added support for TI TMS432E to generic Synopsys driver.
  15. Driver: Synopsys NI driver, new API added:
    • IP_NI_SYNOPSYS_ConfigUseTxCopy()
  16. Driver: Synopsys PTP HW driver, new API added:
    • IP_NI_SYNOPSYS_PTP_GetFineValues()
  17. Driver: Synopsys PTP HW driver now can be used with Synopsys QOS NI driver as well.
  18. Driver: Synopsys QOS support for Synopsys [QOS] PTP HW driver added.
  19. Driver: Added Enterprise IEEE 802.1x aka RADIUS support to Microchip/ATMEL (AT)WILC1000 WiFi driver. Use ASF v3.45 SDK as there is a bug in m2m_wifi_download_cert() .
    • New API IP_NI_WIFI_ATMEL_ATWILC_DownloadCert() added.
    • WiFi sample callbacks and IP_Config updated with samples and instructions.
  20. Driver: New driver API added to Redpine Signals RS9113 WiFi driver to update the module firmware:
    • IP_NI_WIFI_REDPINE_RS9113_SetUpdateCallback()
  21. FTP client (optional add-on): Added support for active FTP mode.
  22. FTP server (optional add-on): New configuration member NumBytesInBufBeforeFlush added to structure FTPS_BUFFER_SIZES. Can be used to synchronize writes to the FS layer sector size.
  23. Web server (optional add-on): IP_WEBS_Send204NoContent() for a captive portal added.
  24. Web server (optional add-on): New progress status WEBS_PROGRESS_STATUS_HEADER_PARSED added.
  25. Web server (optional add-on): New header configuration member sStartLine added to WEBS_HEADER_CONFIG when WEBS_USE_ENHANCED_FORM_HANDLING is used.
  26. Web server (optional add-on): In addition to gzip, static files like Javascript can now be stored with other encodings like Brotli as well:
    • IP_WEBS_ConfigStaticEncodedFiletypes()

Improvements

  1. Product: The product has been renamed from embOS/IP to emNet to make it more visible that it is not necessarily bundled/relies on embOS as RTOS.
     
  2. Core: IP_Init() has been extended with a return value. Lower layers (including the driver) can now report a problem during IP_Init() to the application. Adaptation for drivers that use infinite loops on init or other operations that are expected to be successful on stable hardware need to be requested by the customer or will be changed with future releases. Memory constraints during init should still be verified and tested with a build that support IP_PANIC() checks!
  3. Core: Trying to sync newly added internal timers to existing timers with same execution periods. This reduces waking up at different times for management tasks.
  4. Core: Define IP_TCP_RETRANS_NUM added.
  5. Core: A TCP race condition on the wire when sending FIN after sending payload can cause retransmits. Improved.
  6. Core: The backlog value given to listen()/IP_SOCK_listen() was previously limited by the IP_SOCKET_MAX_CONN define which defaults to 16. The define has been removed as it should not limit the amount set by the application without knowledge of the user or in a library.
  7. Core: Most IP_DHCPC_* API now has return values (previously void) to reflect memory allocation errors if called after IP_Init()/IP_X_Config() .
  8. Core: Added some more parameter checks for socket API.
  9. Core: IP_SetPacketToS() can now be used to set the DSCP field for IPv4 and IPv6 as well.
  10. Core: Sockets spawned form a server side parent/listen socket now carry over the ToS/DSCP setting from the parent.
  11. Driver: Added IP_DeInit() support to ATMEL/Microchip ATWILC1000 WiFi driver.
  12. Driver: Removed infinite loops in Synopsys and Synopsys QoS driver init. Errors during IP_Init() are reported back to application.
  13. Driver: Added internal scan retries on failure to Redpine Signals RS9113 driver for better network detection.
  14. Driver: Added output of module firmware version to Redpine Signals RS9113 driver.
  15. Driver: CADENCE IP in Xilinx Zynq seems to have a problem with the padding option offered by the Ethernet DMA, resulting in hardware checksums to succeed but delivering corrupted data via DMA. Disabled the 2 byte HW padding for Xilinx Zynq.
  16. Driver: Updated Redpine Signals RS9113 WiFi driver to Redpine Signals WiseConnect SDK v1.7.8 . Updating to this SDK version is advised. Please note that there are slight API changes in the SDK that now make the driver incompatible when being used out of the box with older SDK versions.
  17. FTP server (optional add-on): Workaround added for Google Chrome sending "LIST -l" where the "-l" parameter is actually not FTP standard.
  18. PTP OC (optional add-on): General code improvements.

Program corrections

  1. Core: TCP retransmit counter is not reset when the connection recovers to normal, causing a RST after several retransmits even as the connection is able to recover. Fixed.
  2. Core: Calling recv() or recvfrom() on a UDP socket with the flag MSG_TRUNC might return invalid data. Fixed.
  3. Core: Under some rare circumstances TCP segmentation could lead to presenting data in an alignment not supported by the NI driver. Fixed.
  4. Driver: Driver does not free all resources on IP_DeInit() and might use old memory instead of re-allocating memory on re-init. Fixed. Applies to the following drivers:
    • CADENCE
    • EtherC
    • NIOSII Altera TSE
    • Synopsys
    • Synopsys QoS
  5. Driver: Some drivers contain recover strategies for critical states that might interfere with access from other tasks at the same time. This typically only happens if the hardware/network is not stable enough and even then it requires certain criteria to be met to actually end up in a problem state when trying to recover. Fixed. Recover strategies for the following drivers have been changed:
    • EtherC
    • Kinetis
    • Synopsys
    • Synopsys QoS
  6. Driver: ASIX AX88180 driver does not reset its static configuration variables on IP_DeInit() . Fixed.
  7. Driver: Synopsys driver tries to recover from various not specified Ethernet errors by re-initializing itself. The peripheral reset involved will also reset the PTP hardware unit and restart the PTP timing and lose any previous synchronization. Fixed by not asserting the peripheral reset if a PTP HW driver has been added. For most of these errors it should be possible to recover by re-initializing the peripheral without reset.
  8. Driver: Synopsys PTP HW driver might return an old timestamp if the seconds register is read and the nanoseconds register overlaps and increases the seconds register before we can read the nanoseconds register. Fixed by reading the nanoseconds register before and after the seconds register and correcting the seconds if we detect the overlap of the nanoseconds register.
  9. FTP server (optional add-on): A CWD command to a file as done by Google Chrome to test if this is a directory or file was not correctly evaluated as file, resulting in reporting success to CWD to a file which confused Chrome. Fixed.
  10. MQTT client (optional add-on): IP_MQTT_CLIENT_Unsubscribe() might not unlock its API if the connection breaks down while sending data. Fixed.
  11. PTP OC (optional add-on): General code cleanup.
  12. PTP OC (optional add-on): Delay request timeouts sent by the master other than 1s lead to an underflow of the request delay timeout leading to a huge timeout. Fixed.
  13. SMTP client (optional add-on): Chunked sending of attachments encodes each chunk as its own base64 item. Surprisingly this is understood by Mozilla Thunderbird but all other clients like Microsoft Outlook seem to expect only a single base64 encoded item per multipart section. Fixed by using proper chunked encoding into a single big base64 encoded item.
  14. SNMP agent (optional add-on): Accessing a branch with a zero ID as second digit (e.g. iso(1).std(0).x) selects the parent instead (e.g. iso(1).x). Fixed.
  15. Web server (optional add-on): Potential buffer overflow if the end of a CGI tag can not be found. Fixed.
  16. Web server (optional add-on): IP_WEBS_WEBSOCKET_AddHook() could only be used with a sub protocol while this should be optional. Fixed by allowing to use an empty string for no sub protocol.
  17. Web server (optional add-on): A 401 unauthorized response for authentication always uses the realm from the very first access list entry. Fixed.
  18. Web server (optional add-on): For various reasons that are arguable a broswer might send a POST with "Content-Length: 0" which is not correctly handled, leading to an abort of the request. Fixed.
  19. WebSocket protocol (optional add-on): The CloseCode when sending a CLOSE frame was incorrectly counted towards the header and not counted for the payload length. Fixed. Most implementations do not even bother to evaluate the closing reason at all and simply close the socket on a CLOSE frame without reading its payload.

Version 3.30d [19. December 2019]

New Features

  1. Core: Socket option SO_RCVTIMEO can now be used as timeout for accept() and returns with IP_ERR_TIMEDOUT in this case. Similar behavior as Linux and some other BSD compatible stacks.
  2. Core: Socket option SO_SNDTIMEO can now be used as timeout for connect() and returns with IP_ERR_TIMEDOUT in this case. Similar behavior as Linux and some other BSD compatible stacks.

Improvements

  1. Core: Added more length checks to IP/ICMP/UDP (TCP not affected) layers as defense against malicious hand crafted packets.
  2. Core: If using a Gigabit PHY and limiting modes to 10/100 and the PHY has the Gigabit AutoNeg advertisement bits set by default they do not get cleared. Fixed/Improved. This is a rather unusual setup as having a Gigabit capable MAC and having a Gigabit PHY BUT limiting to 10/100 by magnetics is a rather unusual or at least new situation. There are new System-On-Module (SOM) solutions that come with Gigabit capable CPU/MAC and Gigabit PHY on the module but the mode can still be limited on the magnetics used as they are not part of the SOM!
  3. FTP server (optional add-on): Allowing non ASCII characters to be used to support various charsets like Shift JIS for Japanese characters.
  4. Web server (optional add-on): Support for paths with URL encoding added.
  5. Web server (optional add-on): Workaround for a bug in Google Chrome added where the filename="" field is missing if no file to upload is selected.

Program corrections

  1. Core: TCP keepalive values exceeding 16-bit values were internally truncated to the lower 16-bit of the original value, shortening the keepalive probe period. Fixed.
  2. Core: DHCP client interface configuration does not get reset in all cases where the state falls back to INIT. Fixed.
  3. Core: DHCP client starting with an IP address set in order to try to request the same address again does not work. Fixed.
  4. Core: A malicious hand crafted IP packet can traverse to the ICMP layer and cause access to a NULL pointer. Fixed by adding more length checks, see improvements.
  5. Driver: Buffer overflow in Microchip/Micrel KSZ8851SNL driver if a packet bigger than 1518 bytes (Ethernet standard) is received. Fixed.
  6. FTP server (optional add-on): Wildcard support introduced in v3.14 does not work correctly with wildcards in file names but only in folder names. Fixed.
  7. FTP server (optional add-on): Data connection is not always closed in case of bad sequence of commands. Fixed.
  8. Web server (optional add-on): Receiving a Sec-WebSocket-Key header field that exceeds the maximum of 24 base64 encoded bytes as specified in the WebSocket standard might result in a buffer overflow. Fixed.

Version 3.30c [10. January 2019]

Improvements

  1. Driver: MICROCHIP ENC424J600/ENC624J600 optimized by using set data pointer command in SPI mode instead of reading away data to discard.
  2. Driver: Added IP_DeInit() support to Kinetis driver.

Program corrections

  1. Core: ACD defend callback is always called for interface 0 instead of the real interface Id. Fixed.
  2. Driver: CADENCE driver uses a wrong register offset when writing precise filters for devices with GMAC Ethernet controller. This results in writing to wrong registers if multiple precise filters are used e.g. with multicast usage. Fixed.
  3. Driver: Synopsys QOS driver uses the wrong bits to disable its Tx/Rx logic (used for example with IP_NI_PauseRxInt() for flood counter measure). Fixed.
  4. Discover package (optional add-on): If multiple TXT records are added the free space within the packet to send is not correctly calculated. Fixed.
  5. FTP client (optional add-on): File handle might not get closed correctly during a STOR command if an error occurs on socket level. Fixed.
  6. MQTT client (optional add-on): IP_MQTT_CLIENT_SetLastWill() and IP_MQTT_CLIENT_SetKeepAlive() can only be set during an established connection instead of not being connected. Fixed.
  7. Web server (optional add-on): The new progress status WEBS_PROGRESS_STATUS_METHOD_URI_VER_PARSED that has been introduced with v3.30b leads to a memory leak with the shipped DynContent sample code. Fixed in the sample. Please use the updated _cbOnProgressNotify() callback.

Version 3.30b [26. October 2018]

New Features

  1. Core: New API added:
    • IP_RAW_ReducePayloadLen()
    • IP_UDP_ReducePayloadLen()
  2. Driver: NXP i.MXRT105x support added to NXP/Freescale Kinetis driver.
  3. Driver: NXP i.MX6 Solo/DualLite support added to NXP/Freescale Kinetis driver.
  4. Driver: Added NXP LPC54xxx support to generic Synopsys QOS driver.
  5. PHY driver: Support for KSZ8863 added to Micrel switch driver.
  6. Web server (optional add-on): New progress status WEBS_PROGRESS_STATUS_METHOD_URI_VER_PARSED added.

Improvements

  1. Core: Improvements for IP/FS and WiFi implementation samples/layers.
  2. Driver: WiFi Redpine Signals RS9113 driver detection for WPA/WPA2 mixed security added.
  3. Discover package (optional add-on): If a PTR record is explicitly requested and added to an answer the SRV and TXT records will be added for better compatibility. Optional according to RFC.
  4. Web server (optional add-on): IP_WEBS_Redirect() can now be called from more locations like VFile hooks and other callbacks.
  5. Web server (optional add-on): Content type "image/svg+xml" for .svg files added.
  6. WebSocket protocol (optional add-on): Support for PING frames added. These would previously simply cause a disconnect if required by the peer.

Program corrections

  1. Core: An IP_TIMER added very late during runtime might not correctly time out. Fixed.
  2. Core: Unicast DHCP messages might be wrongly discarded with multi interface configurations. Fixed.
  3. Core: Despite careful testing, unicast DHCP as in the DHCP RFC does not seem to be supported by some Access Points, making it a bad choice as default. Reverted back to old pre v3.30 default of using broadcast with mode switching disabled. Unicast and/or mode switching can still be enabled using IP_DHCPC_ConfigUniBcStartMode() .
  4. Core: Some modules do not compile with IP_NO_BSD_SOCK_API enabled. Fixed.
  5. Core: ACK sequence number used in keepalive requests is decremented by one. This works fine but gets detected by some TCP test suites. Fixed.
  6. Driver: The restriction for STM32F7 and Tightly-Coupled-Memory and its configuration check introduced with v3.30 does not apply and has been removed.
  7. Driver: WiFi Redpine Signals RS9113 driver auto region detection can cause problems when enabled to automatic mode. Fixed by now setting it manually if required.
  8. Discover package (optional add-on): Packets might be sent with additional garbage data at the end, resulting in clients discarding the message. Fixed.
  9. FTP server (optional add-on): It is possible to store filenames longer than the filename buffer supports, resulting in not being able to delete the file via FTP. Fixed.
  10. MQTT client (optional add-on): Username and password can only be set during an established connection with IP_MQTT_CLIENT_SetUserPass() instead of not being connected. Fixed.
  11. NTP client (optional add-on): NTP API calls use public DNS client API which causes a double API lock and might cause returning with a timeout. Fixed.
  12. PPP/PPPoE (optional add-on): Packet resend does not work as intended. Fixed.
  13. SMTP client (optional add-on): According to RFC a second EHLO has to be sent for a secured connection which is not done but seems to be tolerated by many servers. Fixed.
  14. Web server (optional add-on): Form data not sent URL encoded is not correctly handled in all cases. Fixed.
  15. Web server (optional add-on): IP_WEBS_METHOD_CopyData() might run into an endless loop situation if no data is left in the input buffer. Fixed.
  16. WebSocket protocol (optional add-on): The continue handling for non-blocking sockets does not correctly work when discarding a frame/message. Fixed.
  17. WebSocket protocol (optional add-on): The socket error status is not correctly returned if sending got interrupted and sending continued with sending the payload. Fixed.
  18. WebSocket protocol (optional add-on): IP_WEBSOCKET_Recv() returns only after the amount of bytes requested has been fulfilled or on error. Should return after at least one byte can be returned or error. Fixed.

Version 3.30a [9. July 2018]

New Features

  1. Web server (optional add-on): New configurable all-in-one emWeb sample IP_WebserverSample_IPv4_IPv6_SSL.c added.

Program corrections

  1. Core: DHCP client unicast/broadcast automatic switching introduced with v3.30 only works for DISCOVER but fails if the REQUEST step was reached. Fixed.
  2. Driver: The Synopsys Tightly-Coupled-Memory configuration check for STM32F7 devices introduced with v3.30 is too restrictive. Fixed.
  3. WebSocket protocol (optional add-on): The new sample IP_WEBSOCKET_printf_Client.c is missing from the shipment. Fixed.

Version 3.30 [4. July 2018]

New Features

  1. Core: Support for WiFi Access Point mode added.
  2. Core: IP_SUPPORT_IPV4 configuration define added that allows to disable and remove IPv4 code.
  3. Core: IP_SOCKET_ID_LIMIT configuration define added.
  4. Core: DHCP client now switches between unicast and broadcast behavior for better WiFi support. Starts with unicast, configurable via IP_DHCPC_ConfigUniBcStartMode() .
  5. Core: New API added:
    • IP_DisableIPv4()
    • IP_SOCKET_CloseAll()
  6. Core: New WiFi API for Access Point mode added:
    • IP_WIFI_AddClientNotificationHook()
  7. Driver: New driver API added to Redpine Signals RS9113 WiFi driver for Access Point mode:
    • IP_NI_WIFI_REDPINE_RS9113_SetAccessPointParameters()
  8. Driver: Added WEP support to Microchip/ATMEL (AT)WILC1000 WiFi driver.
  9. Driver: Updated Microchip/ATMEL (AT)WILC1000 WiFi driver to use ASF v3.40 SDK API.
  10. DHCP server (optional add-on): IP_DHCPS_SetReservedAddresses() added for address reservation.
  11. Discover package (optional add-on): Added the Flags field to DNS-SD entries to be able to set the FLUSH bit for specific entries.
  12. FTP server (optional add-on): IPv6 support added by adding commands EPRT and EPSV.
  13. FTP server (optional add-on): New commands FEAT, MLST and MLSD for machine parsed directory listing added.
  14. IPv6 (optional add-on): New API added:
    • IP_IPV6_ChangeDefaultConfig()
    • IP_IPV6_SetLinkLocalUnicastAddr()
    • IP_IPV6_INFO_GetConnectionInfo()
  15. SMTP client (optional add-on): Support for AUTH PLAIN authentication added.
  16. Web server (optional add-on): New API added to register a hook that gets notified at different useful steps while serving a request:
    • IP_WEBS_AddProgressHook()
  17. Web server (optional add-on): HTTP cookie support added via new API:
    • IP_WEBS_HEADER_AddFieldHook()
    • IP_WEBS_HEADER_CopyData()
    • IP_WEBS_HEADER_GetFindToken()
    • IP_WEBS_HEADER_SetCustomFields()
  18. Web server (optional add-on): Support for custom error pages added, new API:
    • IP_WEBS_SetErrorPageCallback()
  19. WebSocket protocol (optional add-on): New API for client mode added:
    • IP_WEBSOCKET_InitClient()

Improvements

  1. Core: Checked API locks and improved efficiency where not required to lock.
  2. Core: IP_TCP_ADD_ACK_TO_RST_PACKETS can be enabled to send an ACK flag with a RST packet. Disabled by default.
  3. Core: DHCP client now checks for the correct Client Identifier option value in a server response if this is used by the server.
  4. Core: DHCP client transmit ID is now random generated.
  5. Driver: Added illegal frame detection handling to Renesas EtherC driver for RX64M compatible devices and Synergy devices.
  6. Driver: Checks added for Synopsys and Synopsys QoS based STM32F7/H7 devices to identify if Tightly-Coupled-Memory is used that can not be accessed by the DMA.
  7. Driver: Synopsys and Synopsys QOS MDIO clock range (needs to match CPU frequency) can not be set by using IP_NI_SYNOPSYS_ConfigMDIOClockRange() and IP_NI_SYNOPSYS_QOS_ConfigMDIOClockRange() .
  8. Driver: SPI DMA support for Microchip/Micrel KSZ8851SNL driver added.
  9. FTP server (optional add-on): Improved detection for LIST/NLST parameter being a file or folder.
  10. MQTT client (optional add-on): Support for publisher and subscriber on the same connection added.
  11. WebSocket protocol (optional add-on): The API now supports non-blocking sockets as well.

Program corrections

  1. Core: Parts of IPv6 might not be re-initialized correctly when using IP_DeInit(). Fixed.
  2. Core: Using send() on a connected UDP socket uses a wrong foreign address. Fixed.
  3. Core: According to RFC 2131 DHCP broadcast messages shall be sent without source IP address as long as no address has been acquired. Fixed.
  4. Core: DHCP client shall only fall back to send a REQUEST on link down if it has a valid configuration from before. Fixed.
  5. Core: recv()/recvfrom() might access a NULL pointer if a socket gets closed just before it gets accessed. Fixed.
  6. Core: IP_SOCKET_GetAddrFam(), IP_SOCK_errno() and select() with SOC_CHECK_ALWAYS enabled do not correctly use the API lock and might access a socket that no longer exists. Fixed.
  7. Data received via IP-over-USB is not counted by IP_STATS. Fixed.
  8. Discover package (optional add-on): The FLUSH bit is not set for answers to the primary hostname. Fixed.
  9. FTP server (optional add-on): Parameter "/" for LIST command is not handled correctly. Fixed.
  10. FTP server (optional add-on): NLST command returns LIST result. Fixed.
  11. FTP server (optional add-on): Possible NULL pointer access in application callbacks as it is not checked if a data connection has been established if the command requires one. Fixed.
  12. IPv6 (optional add-on): Using IPv6 in a configuration with multiple interfaces where at least one of them has no IPv6 address assigned can lead to a NULL pointer access. Fixed.
  13. MQTT client (optional add-on): MQTT connect message uses unaligned access which might be a problem for some CPUs and is not big endian compatible. Fixed.
  14. PPP/PPPoE (optional add-on): Using the ACCM field has been disabled long ago as it did not seem to work due to bad documentation in the RFC. Most peers accept that we simply escape all characters instead of obeying the negotiated ACCM but some do not. Fixed by correctly implementing ACCM handling.
  15. SMTP client (optional add-on): Having no or multiple FROM addresses returns success for IP_SMTPC_Send() where this should be an error. Fixed.
  16. SMTP client (optional add-on): Having no recipients returns success for IP_SMTPC_Send() where this should be an error. Fixed.
  17. SNMP agent (optional add-on): Length field for octet strings and OID values above 127 is not correctly stored as multi-byte length. Fixed.
  18. Web server (optional add-on): WebServer always treats POST parameter urlencoded even if the are not. Fixed.
  19. WebSocket protocol (optional add-on): Internet Explorer requires PONG frame handling. Fixed by adding handling for this case.
  20. WebSocket protocol (optional add-on): A buffer overflow on the stack might occur when a message of more than 32 bytes gets discarded. Fixed.

Version 3.22c [29. November 2017]

New Features

  1. Core: New API for packet flood handling added:
    • IP_NI_PauseRxInt()

Improvements

  1. DHCP server (optional add-on): IP_DHCPS_Init() is now obsolete. Its function is handled by IP_DHCPS_ConfigPool() that needs to be called anyhow.

Program corrections

  1. Core: Too strict interface down check discards PPP packets. Fixed.
  2. Core: API lock added to IP_ACD_Activate() in v3.20 blocks IP_Task during activate, resulting in not recognizing a first collision. Fixed.
  3. Driver: Renesas EtherC driver might discard frames before they are completely received by the DMA logic. Fixed.

Version 3.22b [5. September 2017]

Improvements

  1. Web server (optional add-on): Internal padding for allocated structures as resetting #pragma pack in some toolchains might not work reliable.

Program corrections

  1. Core: In case of a memory shortage, failing in creating a socket might access an uninitialized pointer. Fixed.
  2. Ship: The add-on MQTT Client is missing in v3.22 PRO shipments. Fixed.

Version 3.22a [1. August 2017]

Improvements

  1. Core: Reduced internal operations on interfaces with hardware state down.

Program corrections

  1. Core: Under certain configurations with "IP_MAX_IFACES == 1", the RxTask might not be locked properly against a Tx interrupt. Fixed.
  2. Core: Packets on loopback interface are discarded due to a flood/spoofing check. Fixed.

Version 3.22 [28. July 2017]

New Features

  1. Core: New API added:
    • IP_DHCPC_AddStateChangeHook()
    • IP_DNS_ResolveHostEx()
    • IP_DNS_SendDynUpdate()
    • IP_DNS_SetTSIGContext()
    • IP_MDNS_ResolveHost()
    • IP_NI_AddPTPDriver()
    • IP_SendPingCheckReply()
    • IP_SetMicrosecondsCallback()
    • IP_SetRandCallback()
    • IP_SOCK_recvfrom_ts()
  2. Core: New configuration defines added:
    • IP_NO_BSD_SOCK_API
  3. FTP client (optional add-on): Support for implicit/explicit SSL/TLS added. New API:
    • IP_FTPC_InitEx()
  4. FTP server (optional add-on): Support for implicit/explicit SSL/TLS added. New API:
    • IP_FTPS_AllowOnlySecured()
    • IP_FTPS_IsDataSecured()
  5. PTP OC (optional add-on): PTP (IEEE 1588v2) Ordinary Clock add-on released.
  6. NTP client (optional add-on): NTP client add-on released.

Program corrections

  1. Core: VLAN packets that use priority bits are discarded. Fixed, priority bits are now ignored.
  2. Driver: Renesas RZ/A1 driver overwrites manually set PHY address. Fixed.
  3. Driver: Renesas EtherC driver tries to resend the same packet endlessly when link goes down while sending. Fixed.
  4. Discover package (optional add-on): A name check might not end properly. Fixed.
  5. Web server (optional add-on): IP_WEBS_Redirect() does not close an opened file handle. Fixed.

Version 3.20 [22. June 2017]

New Features

  1. Core: New API for Taskless Accept for TCP added:
    • IP_TCP_Accept()
  2. Core: Added profiling define IP_SUPPORT_PROFILE_PACKET to be able to trace packet alloc/free operations.
  3. Core: Added UDP early discard check for UDP packets that are not for this target. Optmized packet buffer usage.
  4. Core: Added IP fragmentation support by enabling IP_SUPPORT_FRAGMENTATION_IPV4 and/or IP_SUPPORT_FRAGMENTATION_IPV6. New API:
    • IP_FRAGMENT_ConfigRx()
    • IP_FRAGMENT_Enable()
    • IP_IPV6_FRAGMENT_ConfigRx()
    • IP_IPV6_FRAGMENT_Enable()
  5. Driver: New generic driver for Synopsys QoS based devices added (ST STM32H7).
  6. Driver: New driver API added to Synopsys driver to force transmit store and forward mode to prevent transmit underflows with slow external RAM:
    • IP_NI_SYNOPSYS_ConfigTransmitStoreForward()
  7. Driver: New driver API added to Redpine Signals RS9113 WiFi driver to select internal or external antenna and gain:
    • IP_NI_WIFI_REDPINE_RS9113_ConfigAntenna()
    • IP_NI_WIFI_REDPINE_RS9113_ConfigRegion()
  8. Driver: New driver API added to Renesas EtherC driver to skip interrupt setup (for manual polling):
    • IP_NI_ETHERC_ConfigSkipIntSetup()
    • IP_NI_ETHERC_ISRHandler()
  9. Discover package (optional add-on): New add-on package available containing protocols (mDNS/DNS server, NetBIOS) necessary to access your target by its name under several operation systems (Windows/Mac/Linux).
  10. CoAP (optional add-on): Stand alone Constrained Application Protocol (CoAP) server/client add-on released.

Improvements

  1. Core: Improved handling of small memory configurations that require more buffers than configured.
  2. FTP server (optional add-on): Removed trailing slash for file system from MKD commands as it confused some file systems.
  3. FTP server (optional add-on): Trying to delete a non-empty folder does not close the connection and allows a client to delete files from folders and retry.

Program corrections

  1. Ship: Some of the shipped sample configurations for BSP_IP.c are missing the include for SEGGER.h for our types U8/U16/U32. Fixed.
  2. Ship: Dummy driver was not shipped. Fixed.
  3. Core: IP_ARP_CleanCache() and IP_ARP_CleanCacheByInterface() do not remove pending ARP requests. Fixed.
  4. Core: TFTP IP_TFTP_SendFile() returns with success if server does not respond at all. Fixed.
  5. Core: TFTP IP_TFTP_ServerTask() does not send empty response for existing files of zero bytes. Fixed.
  6. Driver: ATMEL ATWILC1000 WiFi driver uses uint8_t type where uint8 should be used and might fail to compile if nothing else includes an uint8_t type. Fixed.
  7. SMTP client (optional add-on): Return value for multipart send callback added to allow abort sending if there is a problem with an attachment. See migration guide.

Version 3.16 [23. March 2017]

New Features

  1. Core: New API added.
    • IP_SetGlobalMcTTL()
    • IP_SetLocalMcTTL()
    • IP_DHCPC_ConfigDNSManually()
  2. Driver: Added dummy driver that can be used as a placeholder to skip interface indexes.
  3. Driver: Added generic Renesas EtherC driver. Replaces the Renesas RX driver and adds Synergy S5 & S7 support.
  4. Driver: Added generic NXP LPC driver. Replaces the NXP LPC17xx/40xx, LPC23xx/24xx, LPC32xx drivers.
  5. Driver: Added NXP LPC18xx/43xx support to generic Synopsys driver.
  6. FTP server (optional add-on): Added new API that supports dynamic memory allocation instead buffers on task stack:
    • IP_FTPS_ConfigBufSizes()
    • IP_FTPS_CountRequiredMem()
    • IP_FTPS_Init()
    • IP_FTPS_ProcessEx()
    • IP_FTPS_SetSignOnMsg()
  7. Web server (optional add-on): Static files like Javascript can be stored pre-compressed as gzip:
    • IP_WEBS_ConfigFindGZipFiles()

Improvements

  1. MQTT client (optional add-on): Improved QOS handling for receiving messages with 0 bytes payload.
  2. Driver: All drivers have been changed to IP_BSP_API. See shipped IP_Config_*.c samples or [AN07001] embOS/IP Migration Guide changes for embOS/IP V3.08 for required changes.
  3. Driver: Added IP_DeInit() support for WiFi driver Longsys GT202.
  4. Driver: Removed RTOS.h dependency from PIC32MZ driver. Cache handling needs to setup in IP_X_Config(), see shipped sample configuration.
  5. Driver: ConnectOne iW WiFi will now use the pre-prgrammed MAC address (if any) read with "AT+iMACA?".

Program corrections

  1. Core: recv()/recvfrom() pAddrLen is not correctly checked for size for IPv6 sockets. Fixed.
  2. Core: Windows IP_FS layer pfRename() did not correctly work. Fixed.
  3. Core: A very rare combination of alignment and TCP socket buffer usage might lead to a problem with the DMA of drivers. Fixed.
  4. Core: In a rare condition TCP with timestamps enabled might send wrong content. Fixed.
  5. Core: In the rare condition that the DHCP client gets activated with first DNS server set to a zero IP, a NULL pointer is used. Fixed.
  6. MQTT client (optional add-on): Socket disconnect (return value 0) might not be passed down to the application. Fixed.
  7. Web server (optional add-on): The header field "Connection:" is not correctly parsed if the content is not "Upgrade" only. Fixed.
  8. Driver: Microchip ENCx24J600 problem for workaround introduced in v3.14 identified. The driver does not use bitwise register access where necessary. Fixed (small API change in IP_NI_ENCX24J600_ACCESS structure).
  9. Driver: PIC32MZ does not work when IP_RxTask() is used. Fixed.
  10. Driver: WiFi driver Longsys GT202 might get stuck due to a race condition. Fixed.

Version 3.14 [23. December 2016]

New Features

  1. IPv6 (optional add-on): Added support for virtual interfaces without own Ethernet type created with IP_AddVirtEtherInterface() .
  2. FTP server (optional add-on): LIST/NLST commands now support wildcards '*' and '?' in the parameter to support Windows FTP client mdelete/mget/mput commands.
  3. MQTT client (optional add-on): Stand alone add-on MQTT (MQ Telemtry Transport) client released.
  4. SMTP client (optional add-on): Support for attachments (multipart items) added.
  5. WebSocket protocol (optional add-on): Stand alone WebSocket add-on released.
  6. Web server (optional add-on): WebSocket connection handling added (needs WebSocket add-on). New API added:
    • IP_WEBS_WEBSOCKET_AddHook()

Improvements

  1. Core: Identical MAC address filters from multiple interfaces are removed so each filter address is only set once for a hardware interface.
  2. Driver: Microchip ENCx24J600 might not clear correctly the transmit flag if Tx and Rx are ongoing at the same time. Workaround added.
  3. Driver: ConnectOne iW WiFi module might need some additional time after reset to become stable. After reset delay added to the driver on reset.
  4. Web server (optional add-on): Extended return values for IP_WEBS_Process[Ex][Last]() .

Program corrections

  1. Core: IP_SendPacket() sets pPacket->pData without 2 bytes padding. This might not work with all drivers. Fixed.
  2. Core: DHCP client does not register IP_DeInit() callback if IP_DHCPC_Activate() is not called (e.g. only IP_DHCPC_Halt() is called). Fixed.
  3. Core: Multicast filters are only generated based on config of first interface. Fixed.
  4. Driver: WiFi Longsys GT202 does not set link down on disconnect. Fixed.
  5. Driver: SNR range if WiFi Longsys GT202 was 0..95 but should be 0..90. Fixed.
  6. Driver: WiFi ConnectOne iW driver tries to strlen() on NULL pointer. Fixed.
  7. Driver: WiFi Redpine Signals RS9113 driver tries to strlen() on NULL pointer. Fixed.
  8. SMTP client (optional add-on): Buffer overflow when receiving very long lines. Fixed.

Version 3.12 [11. October 2016]

New Features

  1. Core: New API added.
    • IP_NI_ClrBPressure()
    • IP_NI_SetBPressure()
    • IP_PHY_ConfigGigabitSupport()
  2. Core: PHY driver template added.
  3. Driver: The following ATMEL drivers have been moved into the generic Cadence driver:
    • AT91CAP9
    • AT91SAM7X
    • AT91SAM9X (standalone driver is kept due to better performance with iRAM)
    • AT91SAM9260
    • AT91SAM9263
    • AT91SAM9G20
    • AT91SAM9G45
    • ATSAM3X
  4. Driver: Microchip PIC32MZ driver added.
  5. PHY driver: Marvell 88E1111 PHY driver for Fiber added. Copper runs with generic PHY driver.
  6. SMTP client (optional add-on): Added support for sending mails using a secured connection (SSL stack required).
  7. Web server (optional add-on): Digest Authentication (RFC 2069) support added. New API added:
    • IP_WEBS_AUTH_DIGEST_CalcHA1()
    • IP_WEBS_AUTH_DIGEST_GetURI()
    • IP_WEBS_GetProtectedPath()
    • IP_WEBS_UseAuthDigest()

Improvements

  1. Core: Reducing code size by using shared SEGGER components for log and warn messages.
  2. Driver: ASIX AX88180 IPv6 support improved.
  3. Driver: ATMEL AT91SAM9X cache handling improved.
  4. Driver: ATMEL AT91SAM9X now uses IP_BSP_API.
  5. Driver: Cadence improved Tx underrun handling for targets with slow memory added.
  6. Driver: DAVICOM DM9000 improved handling of overrun situations added.
  7. Driver: DAVICOM DM9000 back pressure can be disabled by using IP_NI_ClrBPressure() for faster receiving if the hardware is able to handle it.
  8. Driver: Freescale i.MX25 multicast hash filters added.
  9. Driver: Luminary/TI LM3S6965 promiscuous mode added for multicast support.
  10. Driver: Luminary/TI LM3S9B90 promiscuous mode added for multicast support.
  11. Driver: Microchip ENCx24J600 now uses IP_BSP_API and multicast hash filters added.
  12. Driver: Microchip ENCx24J600 function IP_NI_ENCx24J600_ConfigUseSPI() added.
  13. Driver: Microchip ENCx24J600 workaround added where Tx seems to get stuck due to a hardware problem.
  14. Driver: NXP LPC32xx promiscuous mode and multicast hash filters added.
  15. Driver: Synopsys correction of bad frame checking in v3.10 does not work with ST STM32F1 due to a hardware bug. Workaround added.

Program corrections

  1. Core: DHCPc DISCOVER packet gets corrupted when host and/or domain name and/or vendor options occupy more space than available in a BOOTP packet. Fixed.
  2. Core: IP_SUPPORT_LOG/IP_SUPPORT_WARN defines might produce compile errors in combinations with IP_DEBUG 0. Fixed.
  3. Core: IP_OS_embOS.c does not correctly de-initialize if IP_DeInit() is used results in a problem on next IP_Init() (introduced with v3.10). Fixed.
  4. Driver: ASIX AX88180 buffer size is wrong in documentation. Fixed.
  5. Driver: ATMEL AT91RM9200 received packet size is calculated with CRC but should be without.
  6. Driver: ATMEL AT91RM9200 does not free HW buffers if no packet buffers were free in the stack. Fixed.
  7. Driver: Luminary/TI LM3S6965 runs in 10Mbit mode. Fixed.
  8. Driver: NXP LPC32xx crashes if stack has no more free packet buffers. Fixed.

Version 3.10 [12. September 2016]

New Features

  1. Core: WiFi support added. WiFi API added.
    • IP_WIFI_AddAssociateChangeHook()
    • IP_WIFI_AddInterface()
    • IP_WIFI_AddIsrExecDoneHook()
    • IP_WIFI_AddSignalChangeHook()
    • IP_WIFI_Connect()
    • IP_WIFI_ConfigAllowedChannels()
    • IP_WIFI_ConfigRegDomain()
    • IP_WIFI_Disconnect()
    • IP_WIFI_IsrExec()
    • IP_WIFI_IsrTask()
    • IP_WIFI_Scan()
    • IP_WIFI_Security2String()
    • IP_WIFI_ConfigIsrTaskAlwaysSignaled()
    • IP_WIFI_ConfigIsrTaskTimeout()
    • IP_WIFI_SignalIsrTask()
  2. Core: New API added.
    • IP_AddLinkChangeHook()
    • IP_IsAllZero()
    • IP_NI_ConfigLinkCheckMultiplier()
    • IP_SetOnPacketFreeCallback() (IP_SUPPORT_ON_PACKET_FREE_CB needs to be enabled)
  3. Core: IP_FS layer for Linux added.
  4. Driver: Added support for TI TM4C to generic Synopsys driver.
  5. Driver: Added multicast support for LPC17xx/LPC40xx driver.
  6. Web server (optional add-on): New API added.
    • IP_WEBS_SendFormattedString()
  7. FTP client (optional add-on): Commands PROT and PBSZ have been added to IP_FTPC_ExecCmd()

Improvements

  1. Core: IP_FS layer for Win32 extended by adding optional functionality.
  2. Driver: Moved port setup from Freescale Kinetis K60 driver to BSP_IP.c to make the driver more generic.
  3. Web server (optional add-on): Improved abort condition checking on file uploads.

Program corrections

  1. Core: TCP retransmissions forced by duplicate ACKs do not transmit an older chunk but the most recent chunk. Fixed.
  2. Driver: Synopsys driver forwards frames with bad checksums to the stack where they will be checked again. Fixed.
  3. Driver: LPC17xx/LPC40xx driver does not work with new PHY driver abstraction. Fixed.

Version 3.08a [12. July 2016]

New Features

  1. Web server (optional add-on): New functions added.
    • IP_WEBS_CountRequiredMem()
    • IP_WEBS_SetUploadFileSystemAPI()
    • IP_WEBS_SetUploadMaxFileSize()
  2. Web server (optional add-on): Callback set with IP_WEBS_SetFileInfoCallback() can override the file system API to use for a file.

Program corrections

  1. Core: Win32 FS porting layer might use a wrong return return value for _IP_FS_WIN32_WriteAt(). Fixed.
  2. Driver: Freescale K60/K70 driver does not forward MII/RMII mode to PHY which causes a warning when the PHY module fixes it. Fixed.
  3. Driver: Renesas RX driver sets wrong values for filters in big endian mode. Fixed.

Version 3.08 [30. June 2016]

New Features

  1. Core: SystemView API profiling support added.
  2. Core: IP_BSP_API added. More information can be found in the migration guide. Drivers already using the new IP_BSP_API.
    • Synopsys
    • NXP (Freescale) K60/K70
  3. Core: New API added.
    • IP_AddEtherTypeHook()
    • IP_AddOnPacketFreeHook()
    • IP_AllocEtherPacket()
    • IP_AllocEx()
    • IP_BSP_SetAPI()
    • IP_FreePacket()
    • IP_PHY_DisableCheck()/IP_PHY_DisableCheckEx() has a new flag PHY_DISABLE_WATCHDOG .
    • IP_SendEtherPacket()
    • IP_SYSVIEW_Init()
  4. Driver: New generic driver for Synopsys Ethernet IP added. Replacement for the following drivers.
    • Infineon XMC45xx
    • ST STM32F1
    • ST STM32F2/F4
    • ST STM32F7
    • Spansion (Fujitsu) MB9Bx10T
  5. Web server (optional add-on): New functions added.
    • IP_WEBS_AddPreContentOutputHook()
    • IP_WEBS_ConfigUploadRootPath()
    • IP_WEBS_SendLocationHeader()
    • IP_WEBS_SetHeaderCacheControl()

Improvements

  1. Driver: Hardware filtering added to ST STR912 driver.
  2. Driver: Multicast filtering added to Toshiba TMPM369 driver.
  3. Web server (optional add-on): IP_WEBS_Redirect() now supports redirecting to VFiles.

Program corrections

  1. Core: TFTP tries to send an error packet to the server if unable to open a local file to store. Fixed.
  2. Driver: TI TM4C does not work correctly with IPv6. Fixed.
  3. PPP/PPPoE (optional add-on): Service name has always been added to a PADR packet although no service name has been sent by the peer. Fixed.
  4. Web server (optional add-on): IP_WEBS_Redirect() does not prevent the web server from sending a second header. Fixed.

Version 3.06 [12. May 2016]

New Features

  1. Core: New API added.
    • IP_NI_GetTxQueueLen()
  2. Core: New IP_STATS module with the following functions added.
    • IP_STATS_EnableIFaceCounters()
    • IP_STATS_GetIFaceCounters()
    • IP_STATS_GetLastLinkStateChange()
    • IP_STATS_GetRxBytesCnt()
    • IP_STATS_GetRxDiscardCnt()
    • IP_STATS_GetRxErrCnt()
    • IP_STATS_GetRxNotUnicastCnt()
    • IP_STATS_GetRxUnicastCnt()
    • IP_STATS_GetRxUnknownProtoCnt()
    • IP_STATS_GetTxBytesCnt()
    • IP_STATS_GetTxDiscardCnt()
    • IP_STATS_GetTxErrCnt()
    • IP_STATS_GetTxNotUnicastCnt()
    • IP_STATS_GetTxUnicastCnt()
  3. SNMP agent (optional add-on): ADDON SNMP agent: Stand alone add-on SNMP agent released including MIB-II (System and Interfaces) support for embOS/IP out of the box.

Program corrections

  1. Core: ICMP packets from a broadcast or multicast address are not correctly discarded. Fixed.
  2. IPv6 (optional add-on): Random unicast address generation is not random. Fixed.
  3. Web server (optional add-on): Using the old web server API with buffers allocated from task stacks does not setup parameter handling correctly. Fixed.

Version 3.04a [20. April 2016]

New Features

  1. Core: New API added.
    • IP_FindIFaceByIP()
    • IP_NI_GetAdminState()
    • IP_NI_GetIFaceType()
    • IP_NI_GetState()
    • IP_NI_SetAdminState()
  2. Driver: Support for ATMEL SAM4E added to CADENCE driver.

Improvements

  1. Core: Removed a double API lock/unlock that confuses FreeRTOS. In general our behavior was correct.
  2. Driver: Some CADENCE GMAC units seem to have a problem with IPv6 multicast. Workaround by using promiscuous mode in this case.

Program corrections

  1. Core: A NULL pointer might be accessed when searching for a socket. Fixed.
  2. Core: IGMPv2 group reports should be addressed to the group instead of the ALL_HOSTS multicast address. Fixed.
  3. Driver: Renesas RX driver discards packets on overrun. Together with using the IP_RxTask() this might lead to not receiving any packet at all. Fixed.
  4. Web server (optional add-on): A buffer overflow might occur when parameters are copied from the input buffer to the parameter buffer. Fixed.

Version 3.04 [16. March 2016]

New Features

  1. Core: Added SystemView trace support (IP_SUPPORT_TRACE) for sending/receiving packets for more insight of stack operations.
  2. Core: Added IP_OK_TRY_OTHER_HANDLER return value for zero-copy callback in case another handler should be allowed to try his luck (using the same port with multiple callbacks).
  3. Core: Added IP_ICMP_RX_ALLOW_BC_MC (default 0 to avoid DDOS instrumentation) to allow accepting ICMP requests sent to a broadcast or multicast address.
  4. PHY driver: IP_PHY_DisableCheck() and IP_PHY_DisableCheckEx() can disable PHY access after first link up in case PHY access consumes too much time (happens when MDIO signals need to be generated manually).
  5. Web server (optional add-on): Added IP_WEBS_AddRequestNotifyHook() for request logging.

Improvements

  1. Core: Reduced overall time that interrupts are disabled by the stack.
  2. Driver: Added support for back-to-back sending for improved speed for CADENCE driver.
  3. Driver: Added IP_NI_RZ_A1_HandleTxFromRxTask() to Renesas RZ/A1 driver to reduce interrupt run time due to missing FIQ functionality of CPU.
  4. Driver: Added hash filtering to STM32 drivers.

Program corrections

  1. Core: Offsets for cache handling from cached to uncached might be calculated twice depending on the driver. Fixed.
  2. Core: IP_CACHE_* routines do not align clean/invalidate accesses and do not work with changed embOS API. Fixed.
  3. Core: PHY access routines might get called for interfaces without a PHY driver. Fixed.
  4. Core: A too small configuration might lead to a situation (when using TCP) where all buffers are used up by Tx and will never be freed as no Rx can be received. Fixed.
  5. Core: DHCP client does not correctly handle large lease times (U32 overrun). Lease time is now capped at 49 days.
  6. Core: Adding a loopback interface in IP_X_Config() causes a problem during IP_Init(). Adding a loopback interface after IP_Init() succeeds. Fixed.
  7. Core: The TCP sequence number of a lost FIN is incremented for a retransmit where it should not. Fixed.
  8. Driver: On Tx queue reset of ST STM32F2/F4 the TxInt packet counter is not reset. Fixed.
  9. FTP server (optional add-on): By accident a development version was shipped in version 3.02b. Fixed.
  10. Web server (optional add-on): The VFile callback with index 0 is treated as error when being found. Fixed.

Version 3.02b [23. December 2015]

New Features

  1. Core: FreeRTOS OS abstraction layer is available.
  2. Core: New API added.
    • IP_GetFreePacketCnt()
    • IP_GetIFaceHeaderSize()
  3. Core: New PHY driver API added.
    • IP_PHY_ConfigAltAddr()
    • IP_PHY_ConfigUseStaticFilters()
    • IP_PHY_ReInit()
  4. PHY driver: New API for Micrel Switch PHY driver added.
    • IP_PHY_MICREL_SWITCH_ConfigLearnDisable()
    • IP_PHY_MICREL_SWITCH_ConfigRxEnable()
    • IP_PHY_MICREL_SWITCH_ConfigTxEnable()

Improvements

  1. Core: Improved cache handling of the stack for future driver improvements.
  2. Driver: Added support for back-to-back sending for improved speed for ST STM32F2/F4 and Infineon XMC45xx.
  3. Driver: Freescale Kinetis K60 driver Tx speed improved.

Program corrections

  1. Core: recvfrom() does not accept NULL parameters for UDP sockets. Fixed.
  2. Core: IP_INFO_GetConnectionList() does not stop after MaxItems parameters is reached. Fixed.
  3. Core: DHCP client renews its IP addr. after the complete lease time has expired instead of half of it. Fixed.

Version 3.02a [30. November 2015]

Improvements

  1. Driver: Added support for promiscuous mode to Renesas RX driver to fully support Multicast and IPv6.

Program corrections

  1. NetBIOS (optional add-on): NetBIOS always sends back on the first interface instead on the interface that the request was received. Fixed.
  2. Tail Tagging (optional add-on): Automatic MTU calculation from hardware interface does not take the tail tagging byte into account, resulting in a MTU 1 byte too large. Fixed.
  3. Driver: Microchip ENCx24J600 might get stuck in a rare condition when the link goes down. Fixed.

Version 3.02 [25. November 2015]

New Features

  1. Core: New API added.
    • IP_ARP_CleanCache()
    • IP_ARP_CleanCacheByInterface()
    • IP_ConfigMaxIFaces()
    • IP_ConfigNumLinkDownProbes()
  2. Core: Support for PHY drivers and new PHY driver API added.
    • IP_PHY_AddDriver()
    • IP_PHY_ConfigAddr()
    • IP_PHY_ConfigSupportedModes()
    • IP_PHY_DisableCheckEx()
  3. PHY driver: Generic PHY driver replaced (with legacy API support) and new generic PHY driver API added.
    • IP_PHY_GENERIC_RemapAccess()
  4. Driver: Renesas RX driver now supports RX64M and RX71M devices including dual MAC support.
  5. Driver: TI TM4C (Tiva C) driver updated due to possible Ethernet initialization problem mentioned in errata (SPMZ850D ETH#02).
  6. Tail Tagging (optional add-on): Virtual Micrel Tail Tagging interface added.
  7. Web server (optional add-on): New functions added.
    • IP_WEBS_UseRawEncoding()
    • IP_WEBS_GetConnectInfo()

Improvements

  1. Core: Code cleanup and intelligent stack usage to reduce task stack requirements.
  2. Driver: Micrel KSZ8851SNL updated for IPv6 support.

Program corrections

  1. Core: IP_ResolveHost() returns an error if provided with an IP address instead of a host name due to a parsing error. Fixed.
  2. Core: IP_ACD_Activate() always checks link state of interface #0. Fixed.
  3. Core: Cache clean/invalidate calls do not make sure that NumBytes is a multiple of a cacheline and might result in OS_Error with latest embOS release. Fixed.
  4. Driver: V850 drivers might read the wrong packet size. Under heavy load it might happen that the number of bytes received are not updated in the descriptor in time. Fixed by re-reading the status.
  5. Web server (optional add-on): Browsing a VFile that does not exist sends back random buffer content. Fixed.

Version 3.00b [9. October 2015]

Program corrections

  1. Web server (optional add-on): CGI names are not compared completely and might result in finding the wrong callback. Fixed.

Version 3.00a [7. October 2015]

New Features

  1. Core: New API added.
    • IP_ConfigNumLinkUpProbes()
    • IP_SOCKET_GetAddrFam()
    • IP_SOCKET_GetLocalPort()
  2. Driver: Freescale Kinetis K60 driver now supports IPv6 (hardware checksum computation only supports IPv4).

Improvements

  1. SNTP client (optional add-on): Non-standard bit-field usage might not compile with older compilers. Fixed by removing bit-field usage.

Program corrections

  1. Core: Keepalives are sent with source and destination port set to zero. Fixed.
  2. Core: Driver filters are set too early during init. Fixed.
  3. Core: An incorrect parameter is used when selecting the interface to send with UDP and IPv6 enabled. Fixed.
  4. Core: Flood protection does not work in all cases. Fixed.
  5. Driver: Infineon XMC45xx, ST STM32F1xx/STM32F2xx/STM32F4xx and TI TM4C (Tiva C) get stuck once a hardware counter reaches half of its max. value. Fixed.
  6. FTP client (optional add-on): Responses that span multiple lines might not be always detected correctly. Fixed.
  7. FTP client (optional add-on): Upon a bad password the execution is not aborted. Fixed.
  8. IPv6 (optional add-on): TCP software checksum calculation generates wrong checksum. Fixed.
  9. IPv6 (optional add-on): Wrong interface for sending might be selected. Fixed.
  10. IPv6 (optional add-on): Multicast addr. are not correctly removed when no longer needed. Fixed.
  11. IPv6 (optional add-on): Driver filters are accessed before the driver is completely initialized. Fixed.

Version 3.00 [14. August 2015]

New Features

  1. Core: New API added.
    • IP_GetMaxAvailPacketSize()
    • IP_GetMTU()
    • IP_IGMP_AddEx()
    • IP_TCP_AllocEx()
  2. Driver: Added driver for NIOSII Altera Triple Speed Ethernet (TSE) Controller (10/100MBit).
  3. Driver: Added driver for Renesas RZ/A1.
  4. IPv6 (optional add-on): IPv6 support added.
  5. Web server (optional add-on): New API for dynamic configuration added.
    • IP_WEBS_AddUpload()
    • IP_WEBS_ConfigBufSizes()
    • IP_WEBS_ConfigRootPath()
    • IP_WEBS_Flush()
    • IP_WEBS_Init()
    • IP_WEBS_ProcessEx()
    • IP_WEBS_ProcessLastEx()
    • IP_WEBS_SendHeaderEx()

Improvements

  1. Core: Discard packets sent from broadcast or multicast addresses instead of answering to them for several protocols like TCP, ICMP and others to prevent flooding the network.
  2. DHCP server (optional add-on): Discard packets received on an interface for which no DHCP server has been started.

Program corrections

  1. Core: MTU can be set to a value higher than supported by the interface. Fixed.
  2. Core: TCP zero-copy might damage the socket list due to a missing lock. Fixed.
  3. Driver: TI LM3S6965 & LM3S9B90 might loose an interrupt and stop working. Fixed.
  4. Web server (optional add-on): Using multiple user/pass combinations (introduced with v2.20h) for the same path leads to accept invalid logins. Fixed.