1.2.3.2.2 User Datagram Protocol (UDP) Configurations

UDP Specific User Configurations

  • Maximum number of Sockets:

    • Maximum number of UDP sockets that can be opened simultaneously

    • These sockets will be created when the module is initialized.

    • Default value: 10

    • Symbol TCPIP_UDP_MAX_SOCKETS

  • Default TX Buffer Size:

    • Default socket TX buffer size.

    • Note that this setting affects all UDP sockets that are created and, together with TCPIP_UDP_MAX_SOCKETS, has a great impact on the heap size that is used by the stack (see TCPIP_STACK_DRAM_SIZE setting).

    • When large TX bufferrs are needed, probably a dynamic, per socket approach, is a better choice (see TCPIP_UDP_OptionsSet function).

    • Default value: 512

    • Symbol TCPIP_UDP_SOCKET_DEFAULT_TX_SIZE

  • Enable Console Commands:

    • Enable the UDP TCP/IP Console Commands

    • This setting will add a UDP "info" command to the TCP/IP command menu allowing a run time inspection of the UDP sockets

    • Set the value to 1 to enable, 0 to disable the feature.

    • Note: to have the UDP commands available the TCP/IP commands need to be enabled.

    • Default value: false

    • Symbol: TCPIP_UDP_COMMANDS

  • Calculate TX Checksum:

    • Calculate and transmit a checksum when sending data.

    • Checksum is not mandatory for UDP packets but is highly recommended.

    • This will affect the UDP TX performance.

    • Default value: true

    • Symbol TCPIP_UDP_USE_TX_CHECKSUM

  • Calculate RX Checksum:

    • Check incoming packets to have proper checksum.

    • Checksum is not mandatory for UDP packets but is highly recommended.

    • This will affect the UDP RX performance.

    • Default value: true

    • Symbol TCPIP_UDP_USE_RX_CHECKSUM

  • TX Queue Limit:

    • The maximum number of TX packets that can be queued by an UDP socket at a certain time.

    • For sockets that need to transfer a lot of data (Iperf, for example), especially on slow connections this limit prevents running out of memory because the MAC/PHY transfer cannot keep up with the UDP packet allocation rate imposed by the application.

    • Adjust depending on the TCPIP_UDP_SOCKET_DEFAULT_TX_SIZE, the connection speed and the amount of memory available to the stack.

    • Default value: 3

    • Symbol TCPIP_UDP_SOCKET_DEFAULT_TX_QUEUE_LIMIT

  • RX Queue Limit:

    • The maximum number of RX packets that can be queued by an UDP socket at a certain time.

    • Note that UDP sockets do not use their own RX buffers but instead use the network driver supplied packets and a timely processing is critical to avoid packet memory starvation for the whole stack.

    • This symbol sets the maximum number of UDP buffers/packets that can be queued for a UDP socket at a certain time.

    • Once this limit is reached further incoming packets are silently discarded.

    • Adjust depending on the number of RX buffers that are available for the stack and the amount of memory available to the stack.

    • Default value: 3

    • Symbol TCPIP_UDP_SOCKET_DEFAULT_RX_QUEUE_LIMIT

  • Enable Pool Buffers:

    • Enable the build of the pre-allocated pool buffers option

    • Default value: false

    • Symbol TCPIP_UDP_USE_POOL_BUFFERS

  • Number of Socket Pool Buffers:

    • Number of buffers in the private UDP pool.

    • These are preallocated buffers that are to be used by UDP sockets only.

    • This improves the UDP socket throughput and is meant only for UDP sockets that have to sustain high TX traffic rate.

    • However, this memory is not returned to the stack heap, it always belongs to UDP.

    • A socket needs to have an option set in order to use the buffers pool (see the UDPSetOptions()).

    • Use 0 to disable the feature.

    • Default value: 4

    • Symbol TCPIP_UDP_SOCKET_POOL_BUFFERS

  • Pool Buffer Size:

    • Size of the buffers in the UDP pool.

    • Any UDP socket that is enabled to use the pool and has the TX size <= than this size can use a buffer from the pool.

    • Note that this setting, together with TCPIP_UDP_SOCKET_POOL_BUFFERS, has impact on the heap size that is used by the stack (see TCPIP_STACK_DRAM_SIZE setting).

    • Default value: 512

    • Symbol TCPIP_UDP_SOCKET_POOL_BUFFER_SIZE

  • Enable External Packet Processing: // This setting enables/disables the processing of the RX packets by an external handler // The user of the UDP can register an external function to process the incoming packets // If true, the functionality is built in and could be used by the application // If false, the functionality does not exist and the generated code is slightly smaller

    • Default value: false

    • Symbol TCPIP_UDP_EXTERN_PACKET_PROCESS