Hi,
I've noticed a concurrency problem with g_pCB->FlowContCB.TxPoolCnt (simplelink/source/driver.c):
in case there are 2 tasks that transmit/receive data over 2 simultaneously opened sockets,
g_pCB->FlowContCB.TxPoolCnt = ((_SlResponseHeader_t *)uBuf.TempBuf)->TxPoolCnt; (_SlDrvMsgRead)
may get called in the context of one task while another one is in between
if(g_pCB->FlowContCB.TxPoolCnt > FLOW_CONT_MIN + 1 )
and
VERIFY_PROTOCOL(g_pCB->FlowContCB.TxPoolCnt > FLOW_CONT_MIN + 1 );
g_pCB->FlowContCB.TxPoolCnt--;
(_SlDrvDataWriteOp)
Please find the fixed code attached (based on the 1.2.0 SDK):
The solution above fixed the issue for my use case (one task does only TX, another one does mostly RX). Please consider it to be included in the upstream SDK.