Hi all,
We are trying to use the CC3000 in a scenario where we use it expose an HTTP
server on the wireless network.
The HTTP server is both used to serve a set of web APIs, along with a few
webpages enabling it to report its status to the user. This runs on our MCU and
the CC3000 is used for its IP stack + radio.
We have identified an unfortunate behavior which we believe might be caused by
a bug in the CC3000 ip stack.
Basically our service seems to work well with most client applications (we've
tried it using android devices, linux stations running both chrome and
firefox), however when attempting to browse the HTTP server with a Windows
client, we see the following issue :
* initially everything seems to work fine, content is loads
* however after an short amount of time spent browing (usually this
kicks in pretty fast, browsing a page or two triggers the problem), the CC3000
stops accepting new connections. At the network level what we see is the client
sending SYN packets, but these packets are never SYN/ACKed by the CC3000
We've digged further and it appears that :
* As soon as the issue kicks-in all TCP connexions to the server fail may it be from
the same station or another one (client sends SYN, server never ACKS)
* If we wait 60 seconds (so that potential timeouts are all cleared)
--> State unchanged (this rules out dangling connections which could prevent new ones to occur)
* In the meantime :
--> Wifi module still responds to PING requests
--> Comm (SPI) seems to be working properly
-----> Non-Socket commands are processed successfully (eg: nvmem read, ipconfig_get)
-----> Scan ioctl returns no error but shows no network
-----> accept keeps returning -2 (PENDING), which seem to suggest the server socket is still very well alive/active and ready
--> if we attempt a close on the server sock it will return 0
--> if we initially open a second, dummy, server socket, once the HTTP
socket stop responding, the second socket can still accept new incoming
connections
So basically from client stations it appears as if the socket was not open, whereas from the our MCU, everything seems normal. The socket behave as if it was still active, only accept() never returns new client sockets.
attached: in log.zip file : debug trace fetched from the module
3348.logs.zip
contents :
* out_net_win_1: debug trace (NS_TX_DBG) with problematic client
* out_net_deb_1: debug trace (NS_TX_DBG) with friendly client
* out_fw_win_2: debug trace (WL_TX_DBG) with problematic client
* out_fw_deb_2: debug trace (WL_TX_DBG) with friendly client
I'm running the 1.28 SP the issue occured with 1.24 as well
Thank you,
Regards,
Florian