-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RX endpoint failure on 10/100/1000 adapters when high traffic volume #5
Comments
Assigning to @tkbstudios to test with their netchat application and other assorted utilities that do not use the HTTP client. When done, report back and re-assign to me please. |
Possible memory management issue. |
Works fine with my adapter, I think mine is NCM tho. Are you sure it's not something with your adapter? I'll check if it's NCM later. |
Traced freeze to usb_HandleEvents() after many runs. |
Trace
Bug occuring in usbdrvce code? But where and why? |
I tested on my hardware, as you said, it will print out stuff if it's NCM?
So I might think it's your hardware or maybe toolchain? could it be possible you need to update your toolchain and clibs to v11.2 ? |
Already done. I wish I had another ncm device with me, but i only took one of each kind. |
Yeah most probably |
Freeze occurs on event id 13 (USB_DEVICE_INTERRUPT). |
I suspect that this might be a duplicate of or related to the issue detailed here: CE-Programming/toolchain#482. NCM devices tend to have higher levels of throughput due to their concatenation of multiple packet payloads into a single usb transfer usually multiple MTU's in size. It is possible that the higher throughput produced by this type of device is triggering the same bug detailed in the issue above, which may be why it does not reproduce with ECM. For the time being will recommend the use of ECM only with this project until such a time as the above bug is fixed (and it fixes this??) or a culprit in NCM driver code is identified. |
FIX NOTES It it recommended that users only use 10/100 mbps adapters with this project. 10/100/1000 and Gigabit adapters will almost certainly exhibit the below described behavior. Problem Detail High Speed Ethernet device stalls/endpoint errors when backlogged. Eventually some error occurs (likely the USB buffers [on calc?] becoming backlogged) and the endpoint stops functioning properly. Subsequent attempts to queue up a transfer on the IN bulk endpoint fail immediately with USB_TRANSFER_CANCELED and USB_TRANSFER_BUS_ERROR. The function would then immediately queue another transfer which would again fail, queue another, and so on before Resolution I have resolved the freeze/memory leak by causing, upon this, 3 retries failing being a fatal error causing the device to be disabled, which stops the requeues of transfers and killing the network. This also prevents the memory leak that resulted. Issue is open for a possible resolution: CE-Programming/toolchain#490. |
Resolution NCM needs to request a transfer of at least the NTB max size. |
STEPS TO REPRODUCE
The text was updated successfully, but these errors were encountered: