/* Custom PBUF pools must be defined starting with the pool containing the largest PBUF,
 * and must be allocated in descending order by PBUF size.
 *
 * pbuf_alloc will start at the smallest pool (PBUF_VARIABLE_POOL_START in lwipopts.h)
 * and try to allocate from pbuf pools of progressively larger pbuf size until it 
 * successfully finds a pbuf from one of the pools or until it passes PBUF_VARIABLE_POOL_END*/

#if LWIP_PBUF_FROM_CUSTOM_POOLS
LWIP_PBUF_MEMPOOL(PBUF_POOL_LARGE, PBUF_POOL_SIZE_LARGE,  PBUF_POOL_BUFSIZE_LARGE,   "PBUF_POOL_LARGE")
LWIP_PBUF_MEMPOOL(PBUF_POOL_MEDIUM, PBUF_POOL_SIZE_MEDIUM,  PBUF_POOL_BUFSIZE_MEDIUM,   "PBUF_POOL_MEDIUM")
LWIP_PBUF_MEMPOOL(PBUF_POOL_SMALL,  PBUF_POOL_SIZE_SMALL,   PBUF_POOL_BUFSIZE_SMALL,    "PBUF_POOL_SMALL")
#endif

/* Place other custom LWIP mem pools below this line */
