In the function sys_mbox_post function the member variable last of the structure sys_mbox is never decremented any where. So after posting 128 messages which is defined by the #define SYS_MBOX_SIZE the application blocks so that the tcpip_thread function can read some messages. Wouldnt it be better to decrement the last data member (or even reinitializes it to 1 as we do for first data member) when the last is equal to first!!! in function sys_mbox_post???