Forked from STM32F7 internet for nucleo F746ZG
Dependents: Nucleo_F746ZG_Ethernet_MQTT_Ultrasound
Fork of F7_Ethernet by
Diff: lwip/net/Network_defines_lwip.h
- Revision:
- 0:d26c1b55cfca
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lwip/net/Network_defines_lwip.h Sun Jun 19 16:23:40 2016 +0000 @@ -0,0 +1,193 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// 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_ +