Fixed problem with lwIP configuration.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3997 35acf78f-673a-0410-8e92-d51de3d6d3f4
master
gdisirio 2012-02-29 13:27:59 +00:00
parent 4a5239de7f
commit a041bbfe0b
2 changed files with 580 additions and 122 deletions

View File

@ -1,3 +1,9 @@
/**
* @file
*
* lwIP Options Configuration
*/
/* /*
* Copyright (c) 2001-2004 Swedish Institute of Computer Science. * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
* All rights reserved. * All rights reserved.
@ -56,6 +62,14 @@
#define NO_SYS 0 #define NO_SYS 0
#endif #endif
/**
* NO_SYS_NO_TIMERS==1: Drop support for sys_timeout when NO_SYS==1
* Mainly for compatibility to old versions.
*/
#ifndef NO_SYS_NO_TIMERS
#define NO_SYS_NO_TIMERS 0
#endif
/** /**
* MEMCPY: override this if you have a faster implementation at hand than the * MEMCPY: override this if you have a faster implementation at hand than the
* one included in your C library * one included in your C library
@ -112,6 +126,15 @@
#define MEM_SIZE 1600 #define MEM_SIZE 1600
#endif #endif
/**
* MEMP_SEPARATE_POOLS: if defined to 1, each pool is placed in its own array.
* This can be used to individually change the location of each pool.
* Default is one big array for all pools
*/
#ifndef MEMP_SEPARATE_POOLS
#define MEMP_SEPARATE_POOLS 0
#endif
/** /**
* MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable
* amount of bytes before and after each memp element in every pool and fills * amount of bytes before and after each memp element in every pool and fills
@ -239,13 +262,24 @@
#endif #endif
/** /**
* MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for * MEMP_NUM_REASSDATA: the number of IP packets simultaneously queued for
* reassembly (whole packets, not fragments!) * reassembly (whole packets, not fragments!)
*/ */
#ifndef MEMP_NUM_REASSDATA #ifndef MEMP_NUM_REASSDATA
#define MEMP_NUM_REASSDATA 5 #define MEMP_NUM_REASSDATA 5
#endif #endif
/**
* MEMP_NUM_FRAG_PBUF: the number of IP fragments simultaneously sent
* (fragments, not whole packets!).
* This is only used with IP_FRAG_USES_STATIC_BUF==0 and
* LWIP_NETIF_TX_SINGLE_PBUF==0 and only has to be > 1 with DMA-enabled MACs
* where the packet is not yet sent when netif->output returns.
*/
#ifndef MEMP_NUM_FRAG_PBUF
#define MEMP_NUM_FRAG_PBUF 15
#endif
/** /**
* MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
* packets (pbufs) that are waiting for an ARP request (to resolve * packets (pbufs) that are waiting for an ARP request (to resolve
@ -271,7 +305,7 @@
* (requires NO_SYS==0) * (requires NO_SYS==0)
*/ */
#ifndef MEMP_NUM_SYS_TIMEOUT #ifndef MEMP_NUM_SYS_TIMEOUT
#define MEMP_NUM_SYS_TIMEOUT (4 + LWIP_DHCP + LWIP_DNS) #define MEMP_NUM_SYS_TIMEOUT 3
#endif #endif
/** /**
@ -308,6 +342,63 @@
#define MEMP_NUM_TCPIP_MSG_INPKT 8 #define MEMP_NUM_TCPIP_MSG_INPKT 8
#endif #endif
/**
* MEMP_NUM_SNMP_NODE: the number of leafs in the SNMP tree.
*/
#ifndef MEMP_NUM_SNMP_NODE
#define MEMP_NUM_SNMP_NODE 50
#endif
/**
* MEMP_NUM_SNMP_ROOTNODE: the number of branches in the SNMP tree.
* Every branch has one leaf (MEMP_NUM_SNMP_NODE) at least!
*/
#ifndef MEMP_NUM_SNMP_ROOTNODE
#define MEMP_NUM_SNMP_ROOTNODE 30
#endif
/**
* MEMP_NUM_SNMP_VARBIND: the number of concurrent requests (does not have to
* be changed normally) - 2 of these are used per request (1 for input,
* 1 for output)
*/
#ifndef MEMP_NUM_SNMP_VARBIND
#define MEMP_NUM_SNMP_VARBIND 2
#endif
/**
* MEMP_NUM_SNMP_VALUE: the number of OID or values concurrently used
* (does not have to be changed normally) - 3 of these are used per request
* (1 for the value read and 2 for OIDs - input and output)
*/
#ifndef MEMP_NUM_SNMP_VALUE
#define MEMP_NUM_SNMP_VALUE 3
#endif
/**
* MEMP_NUM_NETDB: the number of concurrently running lwip_addrinfo() calls
* (before freeing the corresponding memory using lwip_freeaddrinfo()).
*/
#ifndef MEMP_NUM_NETDB
#define MEMP_NUM_NETDB 1
#endif
/**
* MEMP_NUM_LOCALHOSTLIST: the number of host entries in the local host list
* if DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1.
*/
#ifndef MEMP_NUM_LOCALHOSTLIST
#define MEMP_NUM_LOCALHOSTLIST 1
#endif
/**
* MEMP_NUM_PPPOE_INTERFACES: the number of concurrently active PPPoE
* interfaces (only used with PPPOE_SUPPORT==1)
*/
#ifndef MEMP_NUM_PPPOE_INTERFACES
#define MEMP_NUM_PPPOE_INTERFACES 1
#endif
/** /**
* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. * PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
*/ */
@ -335,11 +426,14 @@
#endif #endif
/** /**
* ARP_QUEUEING==1: Outgoing packets are queued during hardware address * ARP_QUEUEING==1: Multiple outgoing packets are queued during hardware address
* resolution. * resolution. By default, only the most recent packet is queued per IP address.
* This is sufficient for most protocols and mainly reduces TCP connection
* startup time. Set this to 1 if you know your application sends more than one
* packet in a row to an IP address that is not in the ARP cache.
*/ */
#ifndef ARP_QUEUEING #ifndef ARP_QUEUEING
#define ARP_QUEUEING 1 #define ARP_QUEUEING 0
#endif #endif
/** /**
@ -349,11 +443,47 @@
* correct addresses, or as a limited approach to attempt to handle * correct addresses, or as a limited approach to attempt to handle
* spoofing. If disabled, lwIP will need to make a new ARP request if * spoofing. If disabled, lwIP will need to make a new ARP request if
* the peer is not already in the ARP table, adding a little latency. * the peer is not already in the ARP table, adding a little latency.
* The peer *is* in the ARP table if it requested our address before.
* Also notice that this slows down input processing of every IP packet!
*/ */
#ifndef ETHARP_TRUST_IP_MAC #ifndef ETHARP_TRUST_IP_MAC
#define ETHARP_TRUST_IP_MAC 1 #define ETHARP_TRUST_IP_MAC 0
#endif #endif
/**
* ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header.
* Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check.
* If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted.
* If ETHARP_VLAN_CHECK is not defined, all traffic is accepted.
*/
#ifndef ETHARP_SUPPORT_VLAN
#define ETHARP_SUPPORT_VLAN 0
#endif
/** LWIP_ETHERNET==1: enable ethernet support for PPPoE even though ARP
* might be disabled
*/
#ifndef LWIP_ETHERNET
#define LWIP_ETHERNET (LWIP_ARP || PPPOE_SUPPORT)
#endif
/** ETH_PAD_SIZE: number of bytes added before the ethernet header to ensure
* alignment of payload after that header. Since the header is 14 bytes long,
* without this padding e.g. addresses in the IP header will not be aligned
* on a 32-bit boundary, so setting this to 2 can speed up 32-bit-platforms.
*/
#ifndef ETH_PAD_SIZE
#define ETH_PAD_SIZE 0
#endif
/** ETHARP_SUPPORT_STATIC_ENTRIES==1: enable code to support static ARP table
* entries (using etharp_add_static_entry/etharp_remove_static_entry).
*/
#ifndef ETHARP_SUPPORT_STATIC_ENTRIES
#define ETHARP_SUPPORT_STATIC_ENTRIES 0
#endif
/* /*
-------------------------------- --------------------------------
---------- IP options ---------- ---------- IP options ----------
@ -417,10 +547,12 @@
/** /**
* IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP
* fragmentation. Otherwise pbufs are allocated and reference the original * fragmentation. Otherwise pbufs are allocated and reference the original
* packet data to be fragmented. * packet data to be fragmented (or with LWIP_NETIF_TX_SINGLE_PBUF==1,
* new PBUF_RAM pbufs are used for fragments).
* ATTENTION: IP_FRAG_USES_STATIC_BUF==1 may not be used for DMA-enabled MACs!
*/ */
#ifndef IP_FRAG_USES_STATIC_BUF #ifndef IP_FRAG_USES_STATIC_BUF
#define IP_FRAG_USES_STATIC_BUF 1 #define IP_FRAG_USES_STATIC_BUF 0
#endif #endif
/** /**
@ -574,6 +706,7 @@
/** /**
* SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will
* allow. At least one request buffer is required. * allow. At least one request buffer is required.
* Does not have to be changed unless external MIBs answer request asynchronously
*/ */
#ifndef SNMP_CONCURRENT_REQUESTS #ifndef SNMP_CONCURRENT_REQUESTS
#define SNMP_CONCURRENT_REQUESTS 1 #define SNMP_CONCURRENT_REQUESTS 1
@ -589,6 +722,8 @@
/** /**
* SNMP_PRIVATE_MIB: * SNMP_PRIVATE_MIB:
* When using a private MIB, you have to create a file 'private_mib.h' that contains
* a 'struct mib_array_node mib_private' which contains your MIB.
*/ */
#ifndef SNMP_PRIVATE_MIB #ifndef SNMP_PRIVATE_MIB
#define SNMP_PRIVATE_MIB 0 #define SNMP_PRIVATE_MIB 0
@ -603,6 +738,31 @@
#define SNMP_SAFE_REQUESTS 1 #define SNMP_SAFE_REQUESTS 1
#endif #endif
/**
* The maximum length of strings used. This affects the size of
* MEMP_SNMP_VALUE elements.
*/
#ifndef SNMP_MAX_OCTET_STRING_LEN
#define SNMP_MAX_OCTET_STRING_LEN 127
#endif
/**
* The maximum depth of the SNMP tree.
* With private MIBs enabled, this depends on your MIB!
* This affects the size of MEMP_SNMP_VALUE elements.
*/
#ifndef SNMP_MAX_TREE_DEPTH
#define SNMP_MAX_TREE_DEPTH 15
#endif
/**
* The size of the MEMP_SNMP_VALUE elements, normally calculated from
* SNMP_MAX_OCTET_STRING_LEN and SNMP_MAX_TREE_DEPTH.
*/
#ifndef SNMP_MAX_VALUE_SIZE
#define SNMP_MAX_VALUE_SIZE LWIP_MAX((SNMP_MAX_OCTET_STRING_LEN)+1, sizeof(s32_t)*(SNMP_MAX_TREE_DEPTH))
#endif
/* /*
---------------------------------- ----------------------------------
---------- IGMP options ---------- ---------- IGMP options ----------
@ -648,13 +808,6 @@
#define DNS_DOES_NAME_CHECK 1 #define DNS_DOES_NAME_CHECK 1
#endif #endif
/** DNS use a local buffer if DNS_USES_STATIC_BUF=0, a static one if
DNS_USES_STATIC_BUF=1, or a dynamic one if DNS_USES_STATIC_BUF=2.
The buffer will be of size DNS_MSG_SIZE */
#ifndef DNS_USES_STATIC_BUF
#define DNS_USES_STATIC_BUF 1
#endif
/** DNS message max. size. Default value is RFC compliant. */ /** DNS message max. size. Default value is RFC compliant. */
#ifndef DNS_MSG_SIZE #ifndef DNS_MSG_SIZE
#define DNS_MSG_SIZE 512 #define DNS_MSG_SIZE 512
@ -706,6 +859,13 @@
#define UDP_TTL (IP_DEFAULT_TTL) #define UDP_TTL (IP_DEFAULT_TTL)
#endif #endif
/**
* LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf.
*/
#ifndef LWIP_NETBUF_RECVINFO
#define LWIP_NETBUF_RECVINFO 0
#endif
/* /*
--------------------------------- ---------------------------------
---------- TCP options ---------- ---------- TCP options ----------
@ -730,7 +890,7 @@
* (2 * TCP_MSS) for things to work well * (2 * TCP_MSS) for things to work well
*/ */
#ifndef TCP_WND #ifndef TCP_WND
#define TCP_WND 2048 #define TCP_WND (4 * TCP_MSS)
#endif #endif
/** /**
@ -756,14 +916,14 @@
#endif #endif
/** /**
* TCP_MSS: TCP Maximum segment size. (default is 128, a *very* * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default,
* conservative default.) * you might want to increase this.)
* For the receive side, this MSS is advertised to the remote side * For the receive side, this MSS is advertised to the remote side
* when opening a connection. For the transmit size, this MSS sets * when opening a connection. For the transmit size, this MSS sets
* an upper limit on the MSS advertised by the remote host. * an upper limit on the MSS advertised by the remote host.
*/ */
#ifndef TCP_MSS #ifndef TCP_MSS
#define TCP_MSS 128 #define TCP_MSS 536
#endif #endif
/** /**
@ -791,16 +951,25 @@
* as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work.
*/ */
#ifndef TCP_SND_QUEUELEN #ifndef TCP_SND_QUEUELEN
#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF/TCP_MSS)) #define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))
#endif #endif
/** /**
* TCP_SNDLOWAT: TCP writable space (bytes). This must be less than or equal * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than
* to TCP_SND_BUF. It is the amount of space which must be available in the * TCP_SND_BUF. It is the amount of space which must be available in the
* TCP snd_buf for select to return writable. * TCP snd_buf for select to return writable (combined with TCP_SNDQUEUELOWAT).
*/ */
#ifndef TCP_SNDLOWAT #ifndef TCP_SNDLOWAT
#define TCP_SNDLOWAT (TCP_SND_BUF/2) #define TCP_SNDLOWAT ((TCP_SND_BUF)/2)
#endif
/**
* TCP_SNDQUEUELOWAT: TCP writable bufs (pbuf count). This must be grater
* than TCP_SND_QUEUELEN. If the number of pbufs queued on a pcb drops below
* this number, select returns writable (combined with TCP_SNDLOWAT).
*/
#ifndef TCP_SNDQUEUELOWAT
#define TCP_SNDQUEUELOWAT ((TCP_SND_QUEUELEN)/2)
#endif #endif
/** /**
@ -819,6 +988,24 @@
#define TCP_DEFAULT_LISTEN_BACKLOG 0xff #define TCP_DEFAULT_LISTEN_BACKLOG 0xff
#endif #endif
/**
* TCP_OVERSIZE: The maximum number of bytes that tcp_write may
* allocate ahead of time in an attempt to create shorter pbuf chains
* for transmission. The meaningful range is 0 to TCP_MSS. Some
* suggested values are:
*
* 0: Disable oversized allocation. Each tcp_write() allocates a new
pbuf (old behaviour).
* 1: Allocate size-aligned pbufs with minimal excess. Use this if your
* scatter-gather DMA requires aligned fragments.
* 128: Limit the pbuf/memory overhead to 20%.
* TCP_MSS: Try to create unfragmented TCP packets.
* TCP_MSS/4: Try to create 4 fragments or less per TCP packet.
*/
#ifndef TCP_OVERSIZE
#define TCP_OVERSIZE TCP_MSS
#endif
/** /**
* LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option.
*/ */
@ -854,7 +1041,7 @@
* Ethernet. * Ethernet.
*/ */
#ifndef PBUF_LINK_HLEN #ifndef PBUF_LINK_HLEN
#define PBUF_LINK_HLEN 14 #define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE)
#endif #endif
/** /**
@ -1048,14 +1235,14 @@
#endif #endif
/** /**
* PPP_THREAD_NAME: The name assigned to the pppMain thread. * PPP_THREAD_NAME: The name assigned to the pppInputThread.
*/ */
#ifndef PPP_THREAD_NAME #ifndef PPP_THREAD_NAME
#define PPP_THREAD_NAME "pppMain" #define PPP_THREAD_NAME "pppInputThread"
#endif #endif
/** /**
* PPP_THREAD_STACKSIZE: The stack size used by the pppMain thread. * PPP_THREAD_STACKSIZE: The stack size used by the pppInputThread.
* The stack size value itself is platform-dependent, but is passed to * The stack size value itself is platform-dependent, but is passed to
* sys_thread_new() when the thread is created. * sys_thread_new() when the thread is created.
*/ */
@ -1064,7 +1251,7 @@
#endif #endif
/** /**
* PPP_THREAD_PRIO: The priority assigned to the pppMain thread. * PPP_THREAD_PRIO: The priority assigned to the pppInputThread.
* The priority value itself is platform-dependent, but is passed to * The priority value itself is platform-dependent, but is passed to
* sys_thread_new() when the thread is created. * sys_thread_new() when the thread is created.
*/ */
@ -1146,6 +1333,14 @@
#define LWIP_TCPIP_CORE_LOCKING 0 #define LWIP_TCPIP_CORE_LOCKING 0
#endif #endif
/**
* LWIP_TCPIP_CORE_LOCKING_INPUT: (EXPERIMENTAL!)
* Don't use it if you're not an active lwIP project member
*/
#ifndef LWIP_TCPIP_CORE_LOCKING_INPUT
#define LWIP_TCPIP_CORE_LOCKING_INPUT 0
#endif
/** /**
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
*/ */
@ -1153,6 +1348,13 @@
#define LWIP_NETCONN 1 #define LWIP_NETCONN 1
#endif #endif
/** LWIP_TCPIP_TIMEOUT==1: Enable tcpip_timeout/tcpip_untimeout tod create
* timers running in tcpip_thread from another thread.
*/
#ifndef LWIP_TCPIP_TIMEOUT
#define LWIP_TCPIP_TIMEOUT 1
#endif
/* /*
------------------------------------ ------------------------------------
---------- Socket options ---------- ---------- Socket options ----------
@ -1213,12 +1415,21 @@
#endif #endif
/** /**
* SO_REUSE==1: Enable SO_REUSEADDR and SO_REUSEPORT options. DO NOT USE! * SO_REUSE==1: Enable SO_REUSEADDR option.
*/ */
#ifndef SO_REUSE #ifndef SO_REUSE
#define SO_REUSE 0 #define SO_REUSE 0
#endif #endif
/**
* SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets
* to all local matches if SO_REUSEADDR is turned on.
* WARNING: Adds a memcpy for every packet if passing to more than one pcb!
*/
#ifndef SO_REUSE_RXTOALL
#define SO_REUSE_RXTOALL 0
#endif
/* /*
---------------------------------------- ----------------------------------------
---------- Statistics options ---------- ---------- Statistics options ----------
@ -1303,21 +1514,21 @@
* MEM_STATS==1: Enable mem.c stats. * MEM_STATS==1: Enable mem.c stats.
*/ */
#ifndef MEM_STATS #ifndef MEM_STATS
#define MEM_STATS 1 #define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0))
#endif #endif
/** /**
* MEMP_STATS==1: Enable memp.c pool stats. * MEMP_STATS==1: Enable memp.c pool stats.
*/ */
#ifndef MEMP_STATS #ifndef MEMP_STATS
#define MEMP_STATS 1 #define MEMP_STATS (MEMP_MEM_MALLOC == 0)
#endif #endif
/** /**
* SYS_STATS==1: Enable system stats (sem and mbox counts, etc). * SYS_STATS==1: Enable system stats (sem and mbox counts, etc).
*/ */
#ifndef SYS_STATS #ifndef SYS_STATS
#define SYS_STATS 1 #define SYS_STATS (NO_SYS == 0)
#endif #endif
#else #else
@ -1491,9 +1702,12 @@
#endif #endif
#define PPP_MINMRU 128 /* No MRUs below this */ #define PPP_MINMRU 128 /* No MRUs below this */
#ifndef MAXNAMELEN
#define MAXNAMELEN 256 /* max length of hostname or name for auth */ #define MAXNAMELEN 256 /* max length of hostname or name for auth */
#endif
#ifndef MAXSECRETLEN
#define MAXSECRETLEN 256 /* max length of password or secret */ #define MAXSECRETLEN 256 /* max length of password or secret */
#endif
#endif /* PPP_SUPPORT */ #endif /* PPP_SUPPORT */
@ -1544,6 +1758,14 @@
#define CHECKSUM_CHECK_TCP 1 #define CHECKSUM_CHECK_TCP 1
#endif #endif
/**
* LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from
* application buffers to pbufs.
*/
#ifndef LWIP_CHECKSUM_ON_COPY
#define LWIP_CHECKSUM_ON_COPY 0
#endif
/* /*
--------------------------------------- ---------------------------------------
---------- Debugging options ---------- ---------- Debugging options ----------
@ -1671,6 +1893,13 @@
#define SYS_DEBUG LWIP_DBG_OFF #define SYS_DEBUG LWIP_DBG_OFF
#endif #endif
/**
* TIMERS_DEBUG: Enable debugging in timers.c.
*/
#ifndef TIMERS_DEBUG
#define TIMERS_DEBUG LWIP_DBG_OFF
#endif
/** /**
* TCP_DEBUG: Enable debugging for TCP. * TCP_DEBUG: Enable debugging for TCP.
*/ */

View File

@ -1,3 +1,9 @@
/**
* @file
*
* lwIP Options Configuration
*/
/* /*
* Copyright (c) 2001-2004 Swedish Institute of Computer Science. * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
* All rights reserved. * All rights reserved.
@ -56,6 +62,14 @@
#define NO_SYS 0 #define NO_SYS 0
#endif #endif
/**
* NO_SYS_NO_TIMERS==1: Drop support for sys_timeout when NO_SYS==1
* Mainly for compatibility to old versions.
*/
#ifndef NO_SYS_NO_TIMERS
#define NO_SYS_NO_TIMERS 0
#endif
/** /**
* MEMCPY: override this if you have a faster implementation at hand than the * MEMCPY: override this if you have a faster implementation at hand than the
* one included in your C library * one included in your C library
@ -112,6 +126,15 @@
#define MEM_SIZE 1600 #define MEM_SIZE 1600
#endif #endif
/**
* MEMP_SEPARATE_POOLS: if defined to 1, each pool is placed in its own array.
* This can be used to individually change the location of each pool.
* Default is one big array for all pools
*/
#ifndef MEMP_SEPARATE_POOLS
#define MEMP_SEPARATE_POOLS 0
#endif
/** /**
* MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable
* amount of bytes before and after each memp element in every pool and fills * amount of bytes before and after each memp element in every pool and fills
@ -239,13 +262,24 @@
#endif #endif
/** /**
* MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for * MEMP_NUM_REASSDATA: the number of IP packets simultaneously queued for
* reassembly (whole packets, not fragments!) * reassembly (whole packets, not fragments!)
*/ */
#ifndef MEMP_NUM_REASSDATA #ifndef MEMP_NUM_REASSDATA
#define MEMP_NUM_REASSDATA 5 #define MEMP_NUM_REASSDATA 5
#endif #endif
/**
* MEMP_NUM_FRAG_PBUF: the number of IP fragments simultaneously sent
* (fragments, not whole packets!).
* This is only used with IP_FRAG_USES_STATIC_BUF==0 and
* LWIP_NETIF_TX_SINGLE_PBUF==0 and only has to be > 1 with DMA-enabled MACs
* where the packet is not yet sent when netif->output returns.
*/
#ifndef MEMP_NUM_FRAG_PBUF
#define MEMP_NUM_FRAG_PBUF 15
#endif
/** /**
* MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
* packets (pbufs) that are waiting for an ARP request (to resolve * packets (pbufs) that are waiting for an ARP request (to resolve
@ -271,7 +305,7 @@
* (requires NO_SYS==0) * (requires NO_SYS==0)
*/ */
#ifndef MEMP_NUM_SYS_TIMEOUT #ifndef MEMP_NUM_SYS_TIMEOUT
#define MEMP_NUM_SYS_TIMEOUT (4 + LWIP_DHCP + LWIP_DNS) #define MEMP_NUM_SYS_TIMEOUT 3
#endif #endif
/** /**
@ -308,6 +342,63 @@
#define MEMP_NUM_TCPIP_MSG_INPKT 8 #define MEMP_NUM_TCPIP_MSG_INPKT 8
#endif #endif
/**
* MEMP_NUM_SNMP_NODE: the number of leafs in the SNMP tree.
*/
#ifndef MEMP_NUM_SNMP_NODE
#define MEMP_NUM_SNMP_NODE 50
#endif
/**
* MEMP_NUM_SNMP_ROOTNODE: the number of branches in the SNMP tree.
* Every branch has one leaf (MEMP_NUM_SNMP_NODE) at least!
*/
#ifndef MEMP_NUM_SNMP_ROOTNODE
#define MEMP_NUM_SNMP_ROOTNODE 30
#endif
/**
* MEMP_NUM_SNMP_VARBIND: the number of concurrent requests (does not have to
* be changed normally) - 2 of these are used per request (1 for input,
* 1 for output)
*/
#ifndef MEMP_NUM_SNMP_VARBIND
#define MEMP_NUM_SNMP_VARBIND 2
#endif
/**
* MEMP_NUM_SNMP_VALUE: the number of OID or values concurrently used
* (does not have to be changed normally) - 3 of these are used per request
* (1 for the value read and 2 for OIDs - input and output)
*/
#ifndef MEMP_NUM_SNMP_VALUE
#define MEMP_NUM_SNMP_VALUE 3
#endif
/**
* MEMP_NUM_NETDB: the number of concurrently running lwip_addrinfo() calls
* (before freeing the corresponding memory using lwip_freeaddrinfo()).
*/
#ifndef MEMP_NUM_NETDB
#define MEMP_NUM_NETDB 1
#endif
/**
* MEMP_NUM_LOCALHOSTLIST: the number of host entries in the local host list
* if DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1.
*/
#ifndef MEMP_NUM_LOCALHOSTLIST
#define MEMP_NUM_LOCALHOSTLIST 1
#endif
/**
* MEMP_NUM_PPPOE_INTERFACES: the number of concurrently active PPPoE
* interfaces (only used with PPPOE_SUPPORT==1)
*/
#ifndef MEMP_NUM_PPPOE_INTERFACES
#define MEMP_NUM_PPPOE_INTERFACES 1
#endif
/** /**
* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. * PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
*/ */
@ -335,11 +426,14 @@
#endif #endif
/** /**
* ARP_QUEUEING==1: Outgoing packets are queued during hardware address * ARP_QUEUEING==1: Multiple outgoing packets are queued during hardware address
* resolution. * resolution. By default, only the most recent packet is queued per IP address.
* This is sufficient for most protocols and mainly reduces TCP connection
* startup time. Set this to 1 if you know your application sends more than one
* packet in a row to an IP address that is not in the ARP cache.
*/ */
#ifndef ARP_QUEUEING #ifndef ARP_QUEUEING
#define ARP_QUEUEING 1 #define ARP_QUEUEING 0
#endif #endif
/** /**
@ -349,11 +443,47 @@
* correct addresses, or as a limited approach to attempt to handle * correct addresses, or as a limited approach to attempt to handle
* spoofing. If disabled, lwIP will need to make a new ARP request if * spoofing. If disabled, lwIP will need to make a new ARP request if
* the peer is not already in the ARP table, adding a little latency. * the peer is not already in the ARP table, adding a little latency.
* The peer *is* in the ARP table if it requested our address before.
* Also notice that this slows down input processing of every IP packet!
*/ */
#ifndef ETHARP_TRUST_IP_MAC #ifndef ETHARP_TRUST_IP_MAC
#define ETHARP_TRUST_IP_MAC 1 #define ETHARP_TRUST_IP_MAC 0
#endif #endif
/**
* ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header.
* Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check.
* If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted.
* If ETHARP_VLAN_CHECK is not defined, all traffic is accepted.
*/
#ifndef ETHARP_SUPPORT_VLAN
#define ETHARP_SUPPORT_VLAN 0
#endif
/** LWIP_ETHERNET==1: enable ethernet support for PPPoE even though ARP
* might be disabled
*/
#ifndef LWIP_ETHERNET
#define LWIP_ETHERNET (LWIP_ARP || PPPOE_SUPPORT)
#endif
/** ETH_PAD_SIZE: number of bytes added before the ethernet header to ensure
* alignment of payload after that header. Since the header is 14 bytes long,
* without this padding e.g. addresses in the IP header will not be aligned
* on a 32-bit boundary, so setting this to 2 can speed up 32-bit-platforms.
*/
#ifndef ETH_PAD_SIZE
#define ETH_PAD_SIZE 0
#endif
/** ETHARP_SUPPORT_STATIC_ENTRIES==1: enable code to support static ARP table
* entries (using etharp_add_static_entry/etharp_remove_static_entry).
*/
#ifndef ETHARP_SUPPORT_STATIC_ENTRIES
#define ETHARP_SUPPORT_STATIC_ENTRIES 0
#endif
/* /*
-------------------------------- --------------------------------
---------- IP options ---------- ---------- IP options ----------
@ -417,10 +547,12 @@
/** /**
* IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP
* fragmentation. Otherwise pbufs are allocated and reference the original * fragmentation. Otherwise pbufs are allocated and reference the original
* packet data to be fragmented. * packet data to be fragmented (or with LWIP_NETIF_TX_SINGLE_PBUF==1,
* new PBUF_RAM pbufs are used for fragments).
* ATTENTION: IP_FRAG_USES_STATIC_BUF==1 may not be used for DMA-enabled MACs!
*/ */
#ifndef IP_FRAG_USES_STATIC_BUF #ifndef IP_FRAG_USES_STATIC_BUF
#define IP_FRAG_USES_STATIC_BUF 1 #define IP_FRAG_USES_STATIC_BUF 0
#endif #endif
/** /**
@ -574,6 +706,7 @@
/** /**
* SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will
* allow. At least one request buffer is required. * allow. At least one request buffer is required.
* Does not have to be changed unless external MIBs answer request asynchronously
*/ */
#ifndef SNMP_CONCURRENT_REQUESTS #ifndef SNMP_CONCURRENT_REQUESTS
#define SNMP_CONCURRENT_REQUESTS 1 #define SNMP_CONCURRENT_REQUESTS 1
@ -589,6 +722,8 @@
/** /**
* SNMP_PRIVATE_MIB: * SNMP_PRIVATE_MIB:
* When using a private MIB, you have to create a file 'private_mib.h' that contains
* a 'struct mib_array_node mib_private' which contains your MIB.
*/ */
#ifndef SNMP_PRIVATE_MIB #ifndef SNMP_PRIVATE_MIB
#define SNMP_PRIVATE_MIB 0 #define SNMP_PRIVATE_MIB 0
@ -603,6 +738,31 @@
#define SNMP_SAFE_REQUESTS 1 #define SNMP_SAFE_REQUESTS 1
#endif #endif
/**
* The maximum length of strings used. This affects the size of
* MEMP_SNMP_VALUE elements.
*/
#ifndef SNMP_MAX_OCTET_STRING_LEN
#define SNMP_MAX_OCTET_STRING_LEN 127
#endif
/**
* The maximum depth of the SNMP tree.
* With private MIBs enabled, this depends on your MIB!
* This affects the size of MEMP_SNMP_VALUE elements.
*/
#ifndef SNMP_MAX_TREE_DEPTH
#define SNMP_MAX_TREE_DEPTH 15
#endif
/**
* The size of the MEMP_SNMP_VALUE elements, normally calculated from
* SNMP_MAX_OCTET_STRING_LEN and SNMP_MAX_TREE_DEPTH.
*/
#ifndef SNMP_MAX_VALUE_SIZE
#define SNMP_MAX_VALUE_SIZE LWIP_MAX((SNMP_MAX_OCTET_STRING_LEN)+1, sizeof(s32_t)*(SNMP_MAX_TREE_DEPTH))
#endif
/* /*
---------------------------------- ----------------------------------
---------- IGMP options ---------- ---------- IGMP options ----------
@ -648,13 +808,6 @@
#define DNS_DOES_NAME_CHECK 1 #define DNS_DOES_NAME_CHECK 1
#endif #endif
/** DNS use a local buffer if DNS_USES_STATIC_BUF=0, a static one if
DNS_USES_STATIC_BUF=1, or a dynamic one if DNS_USES_STATIC_BUF=2.
The buffer will be of size DNS_MSG_SIZE */
#ifndef DNS_USES_STATIC_BUF
#define DNS_USES_STATIC_BUF 1
#endif
/** DNS message max. size. Default value is RFC compliant. */ /** DNS message max. size. Default value is RFC compliant. */
#ifndef DNS_MSG_SIZE #ifndef DNS_MSG_SIZE
#define DNS_MSG_SIZE 512 #define DNS_MSG_SIZE 512
@ -706,6 +859,13 @@
#define UDP_TTL (IP_DEFAULT_TTL) #define UDP_TTL (IP_DEFAULT_TTL)
#endif #endif
/**
* LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf.
*/
#ifndef LWIP_NETBUF_RECVINFO
#define LWIP_NETBUF_RECVINFO 0
#endif
/* /*
--------------------------------- ---------------------------------
---------- TCP options ---------- ---------- TCP options ----------
@ -730,7 +890,7 @@
* (2 * TCP_MSS) for things to work well * (2 * TCP_MSS) for things to work well
*/ */
#ifndef TCP_WND #ifndef TCP_WND
#define TCP_WND 2048 #define TCP_WND (4 * TCP_MSS)
#endif #endif
/** /**
@ -756,14 +916,14 @@
#endif #endif
/** /**
* TCP_MSS: TCP Maximum segment size. (default is 128, a *very* * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default,
* conservative default.) * you might want to increase this.)
* For the receive side, this MSS is advertised to the remote side * For the receive side, this MSS is advertised to the remote side
* when opening a connection. For the transmit size, this MSS sets * when opening a connection. For the transmit size, this MSS sets
* an upper limit on the MSS advertised by the remote host. * an upper limit on the MSS advertised by the remote host.
*/ */
#ifndef TCP_MSS #ifndef TCP_MSS
#define TCP_MSS 128 #define TCP_MSS 536
#endif #endif
/** /**
@ -791,16 +951,25 @@
* as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work.
*/ */
#ifndef TCP_SND_QUEUELEN #ifndef TCP_SND_QUEUELEN
#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF/TCP_MSS)) #define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))
#endif #endif
/** /**
* TCP_SNDLOWAT: TCP writable space (bytes). This must be less than or equal * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than
* to TCP_SND_BUF. It is the amount of space which must be available in the * TCP_SND_BUF. It is the amount of space which must be available in the
* TCP snd_buf for select to return writable. * TCP snd_buf for select to return writable (combined with TCP_SNDQUEUELOWAT).
*/ */
#ifndef TCP_SNDLOWAT #ifndef TCP_SNDLOWAT
#define TCP_SNDLOWAT (TCP_SND_BUF/2) #define TCP_SNDLOWAT ((TCP_SND_BUF)/2)
#endif
/**
* TCP_SNDQUEUELOWAT: TCP writable bufs (pbuf count). This must be grater
* than TCP_SND_QUEUELEN. If the number of pbufs queued on a pcb drops below
* this number, select returns writable (combined with TCP_SNDLOWAT).
*/
#ifndef TCP_SNDQUEUELOWAT
#define TCP_SNDQUEUELOWAT ((TCP_SND_QUEUELEN)/2)
#endif #endif
/** /**
@ -819,6 +988,24 @@
#define TCP_DEFAULT_LISTEN_BACKLOG 0xff #define TCP_DEFAULT_LISTEN_BACKLOG 0xff
#endif #endif
/**
* TCP_OVERSIZE: The maximum number of bytes that tcp_write may
* allocate ahead of time in an attempt to create shorter pbuf chains
* for transmission. The meaningful range is 0 to TCP_MSS. Some
* suggested values are:
*
* 0: Disable oversized allocation. Each tcp_write() allocates a new
pbuf (old behaviour).
* 1: Allocate size-aligned pbufs with minimal excess. Use this if your
* scatter-gather DMA requires aligned fragments.
* 128: Limit the pbuf/memory overhead to 20%.
* TCP_MSS: Try to create unfragmented TCP packets.
* TCP_MSS/4: Try to create 4 fragments or less per TCP packet.
*/
#ifndef TCP_OVERSIZE
#define TCP_OVERSIZE TCP_MSS
#endif
/** /**
* LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option.
*/ */
@ -854,7 +1041,7 @@
* Ethernet. * Ethernet.
*/ */
#ifndef PBUF_LINK_HLEN #ifndef PBUF_LINK_HLEN
#define PBUF_LINK_HLEN 14 #define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE)
#endif #endif
/** /**
@ -1048,14 +1235,14 @@
#endif #endif
/** /**
* PPP_THREAD_NAME: The name assigned to the pppMain thread. * PPP_THREAD_NAME: The name assigned to the pppInputThread.
*/ */
#ifndef PPP_THREAD_NAME #ifndef PPP_THREAD_NAME
#define PPP_THREAD_NAME "pppMain" #define PPP_THREAD_NAME "pppInputThread"
#endif #endif
/** /**
* PPP_THREAD_STACKSIZE: The stack size used by the pppMain thread. * PPP_THREAD_STACKSIZE: The stack size used by the pppInputThread.
* The stack size value itself is platform-dependent, but is passed to * The stack size value itself is platform-dependent, but is passed to
* sys_thread_new() when the thread is created. * sys_thread_new() when the thread is created.
*/ */
@ -1064,7 +1251,7 @@
#endif #endif
/** /**
* PPP_THREAD_PRIO: The priority assigned to the pppMain thread. * PPP_THREAD_PRIO: The priority assigned to the pppInputThread.
* The priority value itself is platform-dependent, but is passed to * The priority value itself is platform-dependent, but is passed to
* sys_thread_new() when the thread is created. * sys_thread_new() when the thread is created.
*/ */
@ -1146,6 +1333,14 @@
#define LWIP_TCPIP_CORE_LOCKING 0 #define LWIP_TCPIP_CORE_LOCKING 0
#endif #endif
/**
* LWIP_TCPIP_CORE_LOCKING_INPUT: (EXPERIMENTAL!)
* Don't use it if you're not an active lwIP project member
*/
#ifndef LWIP_TCPIP_CORE_LOCKING_INPUT
#define LWIP_TCPIP_CORE_LOCKING_INPUT 0
#endif
/** /**
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
*/ */
@ -1153,6 +1348,13 @@
#define LWIP_NETCONN 1 #define LWIP_NETCONN 1
#endif #endif
/** LWIP_TCPIP_TIMEOUT==1: Enable tcpip_timeout/tcpip_untimeout tod create
* timers running in tcpip_thread from another thread.
*/
#ifndef LWIP_TCPIP_TIMEOUT
#define LWIP_TCPIP_TIMEOUT 1
#endif
/* /*
------------------------------------ ------------------------------------
---------- Socket options ---------- ---------- Socket options ----------
@ -1213,12 +1415,21 @@
#endif #endif
/** /**
* SO_REUSE==1: Enable SO_REUSEADDR and SO_REUSEPORT options. DO NOT USE! * SO_REUSE==1: Enable SO_REUSEADDR option.
*/ */
#ifndef SO_REUSE #ifndef SO_REUSE
#define SO_REUSE 0 #define SO_REUSE 0
#endif #endif
/**
* SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets
* to all local matches if SO_REUSEADDR is turned on.
* WARNING: Adds a memcpy for every packet if passing to more than one pcb!
*/
#ifndef SO_REUSE_RXTOALL
#define SO_REUSE_RXTOALL 0
#endif
/* /*
---------------------------------------- ----------------------------------------
---------- Statistics options ---------- ---------- Statistics options ----------
@ -1303,21 +1514,21 @@
* MEM_STATS==1: Enable mem.c stats. * MEM_STATS==1: Enable mem.c stats.
*/ */
#ifndef MEM_STATS #ifndef MEM_STATS
#define MEM_STATS 1 #define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0))
#endif #endif
/** /**
* MEMP_STATS==1: Enable memp.c pool stats. * MEMP_STATS==1: Enable memp.c pool stats.
*/ */
#ifndef MEMP_STATS #ifndef MEMP_STATS
#define MEMP_STATS 1 #define MEMP_STATS (MEMP_MEM_MALLOC == 0)
#endif #endif
/** /**
* SYS_STATS==1: Enable system stats (sem and mbox counts, etc). * SYS_STATS==1: Enable system stats (sem and mbox counts, etc).
*/ */
#ifndef SYS_STATS #ifndef SYS_STATS
#define SYS_STATS 1 #define SYS_STATS (NO_SYS == 0)
#endif #endif
#else #else
@ -1491,9 +1702,12 @@
#endif #endif
#define PPP_MINMRU 128 /* No MRUs below this */ #define PPP_MINMRU 128 /* No MRUs below this */
#ifndef MAXNAMELEN
#define MAXNAMELEN 256 /* max length of hostname or name for auth */ #define MAXNAMELEN 256 /* max length of hostname or name for auth */
#endif
#ifndef MAXSECRETLEN
#define MAXSECRETLEN 256 /* max length of password or secret */ #define MAXSECRETLEN 256 /* max length of password or secret */
#endif
#endif /* PPP_SUPPORT */ #endif /* PPP_SUPPORT */
@ -1544,6 +1758,14 @@
#define CHECKSUM_CHECK_TCP 1 #define CHECKSUM_CHECK_TCP 1
#endif #endif
/**
* LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from
* application buffers to pbufs.
*/
#ifndef LWIP_CHECKSUM_ON_COPY
#define LWIP_CHECKSUM_ON_COPY 0
#endif
/* /*
--------------------------------------- ---------------------------------------
---------- Debugging options ---------- ---------- Debugging options ----------
@ -1671,6 +1893,13 @@
#define SYS_DEBUG LWIP_DBG_OFF #define SYS_DEBUG LWIP_DBG_OFF
#endif #endif
/**
* TIMERS_DEBUG: Enable debugging in timers.c.
*/
#ifndef TIMERS_DEBUG
#define TIMERS_DEBUG LWIP_DBG_OFF
#endif
/** /**
* TCP_DEBUG: Enable debugging for TCP. * TCP_DEBUG: Enable debugging for TCP.
*/ */