We are developing a WinCE 6.0 USB Driver for a Ethernet networking device. Device has 1 control, 1 Interrupt (IN) and 4 Bulk endpoints (3 OUT and 1 IN). Basic functionality is working fine with driver.
But when we run heavy traffic (with iperf) for sometime, we see an issue of not receiving any data from target from BULK IN endpoint. At this point host is still able to send data through Bulk OUT endpoint.
We have a USB analyzer to check the transactions between host and device. We have found from the capture that, when we hit this condition, host has stopped sending out IN token frames on Bulk IN endpoint, to read data. Though it continues to be able to push data through Bulk OUT pipe and get a successful ACK from device.
Just before we hit the condition, we see normal behavior of either IN token frame with NAK (when device has no data to send to host) or IN token with valid data.
- This shows that the device firmware is still responsive. What could cause the HCD to stop sending IN token frames?
- How to recover from such partial failure?
Any suggestions on how to debug this further?
Thanks in advance
Thanks
Jeff Facemire