Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Nucleo_F746ZG_Ethernet_MQTT_Ultrasound
Fork of F7_Ethernet by
lwip/net/Network_defines_lwip.h
- Committer:
- EmbeddedSam
- Date:
- 2016-10-24
- Revision:
- 2:b4727195c450
- Parent:
- 0:d26c1b55cfca
File content as of revision 2:b4727195c450:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) Microsoft Corporation. All rights reserved.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _DRIVERS_NETWORK_DEFINES_LWIP_H_
#define _DRIVERS_NETWORK_DEFINES_LWIP_H_ 1
/* Pick min, default or max configuration based on platform */
#include <lwip_selector.h>
#if !defined(NETWORK_MEMORY_PROFILE_LWIP__small) && !defined(NETWORK_MEMORY_PROFILE_LWIP__medium) && !defined(NETWORK_MEMORY_PROFILE_LWIP__large) && !defined(NETWORK_MEMORY_PROFILE_LWIP__custom)
#error You must define a NETWORK_MEMORY_PROFILE_LWIP_xxx for this platform
#endif
#define TCPIP_LWIP 1
/* min, default, max configuration for lwIP. Values have initially
been taken from lwiopts.small.h, lwipopts.h and lwipopts.big.h */
/* MEM_SIZE: the size of the heap memory. If the application will send
a lot of data that needs to be copied, this should be set high. */
#define MEM_SIZE__min (16*1024)
#define MEM_SIZE__default (64*1024)
#define MEM_SIZE__max (1024*1024) // TODO - this seems a bit extreme
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
sends a lot of data out of ROM (or other static memory), this
should be set high. */
#define MEMP_NUM_PBUF__min 16
#define MEMP_NUM_PBUF__default 32
#define MEMP_NUM_PBUF__max 32
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
per active UDP "connection". */
#define MEMP_NUM_UDP_PCB__min 6
#define MEMP_NUM_UDP_PCB__default 8
#define MEMP_NUM_UDP_PCB__max 16
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
connections. */
#define MEMP_NUM_TCP_PCB__min 8
#define MEMP_NUM_TCP_PCB__default 16
#define MEMP_NUM_TCP_PCB__max 32
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
connections. */
#define MEMP_NUM_TCP_PCB_LISTEN__min 4
#define MEMP_NUM_TCP_PCB_LISTEN__default 8
#define MEMP_NUM_TCP_PCB_LISTEN__max 12
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
segments. */
#define MEMP_NUM_TCP_SEG__min 32
#define MEMP_NUM_TCP_SEG__default 64
#define MEMP_NUM_TCP_SEG__max 128
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
timeouts. */
#define MEMP_NUM_SYS_TIMEOUT__min 8 // set to 3 in lwiopts.small.h but didn't compile
#define MEMP_NUM_SYS_TIMEOUT__default 12
#define MEMP_NUM_SYS_TIMEOUT__max 16
/* MEMP_NUM_NETBUF: the number of struct netbufs. */
#define MEMP_NUM_NETBUF__min 8
#define MEMP_NUM_NETBUF__default 16
#define MEMP_NUM_NETBUF__max 32
/* MEMP_NUM_NETCONN: the number of struct netconns. */
#define MEMP_NUM_NETCONN__min 10
#define MEMP_NUM_NETCONN__default 20
#define MEMP_NUM_NETCONN__max 40
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
#define PBUF_POOL_SIZE__min 40
#define PBUF_POOL_SIZE__default 128
#define PBUF_POOL_SIZE__max 256
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
#define PBUF_POOL_BUFSIZE__min 512
#define PBUF_POOL_BUFSIZE__default 1024
#define PBUF_POOL_BUFSIZE__max 2048
/* TCP Maximum segment size. */
#define TCP_MSS__min 536
#define TCP_MSS__default 1460
#define TCP_MSS__max 1460
/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF__min (2*TCP_MSS)
#define TCP_SND_BUF__default (4*TCP_MSS)
#define TCP_SND_BUF__max (8*TCP_MSS)
/* TCP sender buffer space (pbufs). This must be at least = 2 *
TCP_SND_BUF/TCP_MSS for things to work. */
#define TCP_SND_QUEUELEN__min ((2*TCP_SND_BUF)/TCP_MSS)
#define TCP_SND_QUEUELEN__default ((4*TCP_SND_BUF)/TCP_MSS)
#define TCP_SND_QUEUELEN__max ((8*TCP_SND_BUF)/TCP_MSS)
/* TCP receive window. */
#define TCP_WND__min (2*1024)
#define TCP_WND__default (8*1024)
#define TCP_WND__max (32*1024)
/* TCP writable space (bytes). This must be less than or equal
to TCP_SND_BUF. It is the amount of space which must be
available in the tcp snd_buf for select to return writable */
#define TCP_SNDLOWAT__min (TCP_SND_BUF/2)
#define TCP_SNDLOWAT__default (TCP_SND_BUF/2)
#define TCP_SNDLOWAT__max (TCP_SND_BUF/32)
//--// RAM Profiles
#ifdef NETWORK_MEMORY_PROFILE_LWIP__small
#define PLATFORM_DEPENDENT__MEM_SIZE MEM_SIZE__min
#define PLATFORM_DEPENDENT__MEMP_NUM_PBUF MEMP_NUM_PBUF__min
#define PLATFORM_DEPENDENT__MEMP_NUM_UDP_PCB MEMP_NUM_UDP_PCB__min
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB MEMP_NUM_TCP_PCB__min
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB_LISTEN MEMP_NUM_TCP_PCB_LISTEN__min
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_SEG MEMP_NUM_TCP_SEG__min
#define PLATFORM_DEPENDENT__MEMP_NUM_SYS_TIMEOUT MEMP_NUM_SYS_TIMEOUT__min
#define PLATFORM_DEPENDENT__MEMP_NUM_NETBUF MEMP_NUM_NETBUF__min
#define PLATFORM_DEPENDENT__MEMP_NUM_NETCONN MEMP_NUM_NETCONN__min
#define PLATFORM_DEPENDENT__PBUF_POOL_SIZE PBUF_POOL_SIZE__min
#define PLATFORM_DEPENDENT__PBUF_POOL_BUFSIZE PBUF_POOL_BUFSIZE__min
#define PLATFORM_DEPENDENT__TCP_MSS TCP_MSS__min
#define PLATFORM_DEPENDENT__TCP_SND_BUF TCP_SND_BUF__min
#define PLATFORM_DEPENDENT__TCP_SND_QUEUELEN TCP_SND_QUEUELEN__min
#define PLATFORM_DEPENDENT__TCP_WND TCP_WND__min
#define PLATFORM_DEPENDENT__TCP_SNDLOWAT TCP_SNDLOWAT__min
#endif
#ifdef NETWORK_MEMORY_PROFILE_LWIP__medium
#define PLATFORM_DEPENDENT__MEM_SIZE MEM_SIZE__default
#define PLATFORM_DEPENDENT__MEMP_NUM_PBUF MEMP_NUM_PBUF__default
#define PLATFORM_DEPENDENT__MEMP_NUM_UDP_PCB MEMP_NUM_UDP_PCB__default
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB MEMP_NUM_TCP_PCB__default
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB_LISTEN MEMP_NUM_TCP_PCB_LISTEN__default
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_SEG MEMP_NUM_TCP_SEG__default
#define PLATFORM_DEPENDENT__MEMP_NUM_SYS_TIMEOUT MEMP_NUM_SYS_TIMEOUT__default
#define PLATFORM_DEPENDENT__MEMP_NUM_NETBUF MEMP_NUM_NETBUF__default
#define PLATFORM_DEPENDENT__MEMP_NUM_NETCONN MEMP_NUM_NETCONN__default
#define PLATFORM_DEPENDENT__PBUF_POOL_SIZE PBUF_POOL_SIZE__default
#define PLATFORM_DEPENDENT__PBUF_POOL_BUFSIZE PBUF_POOL_BUFSIZE__default
#define PLATFORM_DEPENDENT__TCP_MSS TCP_MSS__default
#define PLATFORM_DEPENDENT__TCP_SND_BUF TCP_SND_BUF__default
#define PLATFORM_DEPENDENT__TCP_SND_QUEUELEN TCP_SND_QUEUELEN__default
#define PLATFORM_DEPENDENT__TCP_WND TCP_WND__default
#define PLATFORM_DEPENDENT__TCP_SNDLOWAT TCP_SNDLOWAT__default
#endif
#ifdef NETWORK_MEMORY_PROFILE_LWIP__large
#define PLATFORM_DEPENDENT__MEM_SIZE MEM_SIZE__max
#define PLATFORM_DEPENDENT__MEMP_NUM_PBUF MEMP_NUM_PBUF__max
#define PLATFORM_DEPENDENT__MEMP_NUM_UDP_PCB MEMP_NUM_UDP_PCB__max
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB MEMP_NUM_TCP_PCB__max
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB_LISTEN MEMP_NUM_TCP_PCB_LISTEN__max
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_SEG MEMP_NUM_TCP_SEG__max
#define PLATFORM_DEPENDENT__MEMP_NUM_SYS_TIMEOUT MEMP_NUM_SYS_TIMEOUT__max
#define PLATFORM_DEPENDENT__MEMP_NUM_NETBUF MEMP_NUM_NETBUF__max
#define PLATFORM_DEPENDENT__MEMP_NUM_NETCONN MEMP_NUM_NETCONN__max
#define PLATFORM_DEPENDENT__PBUF_POOL_SIZE PBUF_POOL_SIZE__max
#define PLATFORM_DEPENDENT__PBUF_POOL_BUFSIZE PBUF_POOL_BUFSIZE__max
#define PLATFORM_DEPENDENT__TCP_MSS TCP_MSS__max
#define PLATFORM_DEPENDENT__TCP_SND_BUF TCP_SND_BUF__max
#define PLATFORM_DEPENDENT__TCP_SND_QUEUELEN TCP_SND_QUEUELEN__max
#define PLATFORM_DEPENDENT__TCP_WND TCP_WND__max
#define PLATFORM_DEPENDENT__TCP_SNDLOWAT TCP_SNDLOWAT__max
#endif
#ifdef NETWORK_MEMORY_PROFILE_LWIP__custom
#define PLATFORM_DEPENDENT__MEM_SIZE MEM_SIZE__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_PBUF MEMP_NUM_PBUF__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_UDP_PCB MEMP_NUM_UDP_PCB__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB MEMP_NUM_TCP_PCB__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB_LISTEN MEMP_NUM_TCP_PCB_LISTEN__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_TCP_SEG MEMP_NUM_TCP_SEG__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_SYS_TIMEOUT MEMP_NUM_SYS_TIMEOUT__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_NETBUF MEMP_NUM_NETBUF__custom
#define PLATFORM_DEPENDENT__MEMP_NUM_NETCONN MEMP_NUM_NETCONN__custom
#define PLATFORM_DEPENDENT__PBUF_POOL_SIZE PBUF_POOL_SIZE__custom
#define PLATFORM_DEPENDENT__PBUF_POOL_BUFSIZE PBUF_POOL_BUFSIZE__custom
#define PLATFORM_DEPENDENT__TCP_MSS TCP_MSS__custom
#define PLATFORM_DEPENDENT__TCP_SND_BUF TCP_SND_BUF__custom
#define PLATFORM_DEPENDENT__TCP_SND_QUEUELEN TCP_SND_QUEUELEN__custom
#define PLATFORM_DEPENDENT__TCP_WND TCP_WND__custom
#define PLATFORM_DEPENDENT__TCP_SNDLOWAT TCP_SNDLOWAT__custom
#endif
#define PLATFORM_DEPENDENT__SOCKETS_MAX_COUNT (PLATFORM_DEPENDENT__MEMP_NUM_UDP_PCB + PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB)
#endif // _DRIVERS_NETWORK_DEFINES_LWIP_H_
