lwip/api/tcpip.c: tcpip_init -> tcpip_thread lwip/core/netif.c: netif_add lwip/arch/lpc17_emac.c: lpc_enetif_init -> packet_rx, packet_tx === tcpip_thread === while (true): sys_timeouts_mbox_fetch(&mbox, (void **)&msg) ... Feeding the tcpip_thread mbox: tcpip_input tcpip_callback_with_block tcpip_timeout tcpip_untimeout tcpip_apimsg tcpip_netifapi === packet_rx === while (true): sys_arch_sem_wait(&lpc_enetif->RxSem, osWaitForever) ... Feeding the RX semaphore: ENET_IRQHandler === packet_tx === while (true): sys_arch_sem_wait(&lpc_enetif->TxCleanSem, osWaitForever) ... Feeding the TX semaphore: ENET_IRQHandler