none
[WDF] Transfer doesn't complete until other transfer happens RRS feed

  • Question

  • Hi,

    I'm currently stuck with an USB 3 issue. Interfacing a Cypress FX3 controller.

    IO:

    1. Send an read request on EP2 (0x82) with infinite timeout to read 512 byte (USB2) or 1024 byte (USB3).
    2. Send some instruction to the device over EP1 (0x01).
    3. After the device completes its task it responses by sending one byte on EP2.

    This works fine when in USB2 mode, on USB2 and USB3 controllers.

    In USB3 mode:

    • WinXP 32b, Renesas xHCI controller, Renesas driver: works as expected
    • Win7 64b, Renesas xHCI controller, Renesas driver: works as expected
    • Win7 64b, Intel xHCI controller, Intel driver: doesn't work
    • Win8.1 64b, Renesas xHCI controller, Microsoft driver: doesn't work
    • Win8.1 64b, Intel xHCI controller, Microsoft driver: doesn't work

    When it doesn't work is completes after I send another instruction on EP1 (0x01). When using Microsoft message analyzer on Win 8.1, 64b I see that the LengthRequested of the EP2 transfer is zero! When in USB2 mode it is 512 as expected. I checked the driver code and it is requesting 1024 byte.

    Does anyone have an clue what can be wrong?

    Best regards,

    Reinder



    Friday, October 2, 2015 8:56 AM

Answers

  • We found the issue, after reading http://blogs.msdn.com/b/usbcoreblog/archive/2011/05/11/demystifying-usb-selective-suspend.aspx about USB power management.

    The problem occurred when the FX3 is put in U1/U2 state. Now when our firmware needs to notify the host we make sure it enters U0 state and everything works fine.

    Thursday, October 8, 2015 9:53 AM

All replies

  • Can you please send the message analyzer traces on Win8.1 for 2.0 (where it works) vs 3.0 (where it doesn't work) to me at vivekg(@)microsoft.com
    Friday, October 2, 2015 8:20 PM
  • We found the issue, after reading http://blogs.msdn.com/b/usbcoreblog/archive/2011/05/11/demystifying-usb-selective-suspend.aspx about USB power management.

    The problem occurred when the FX3 is put in U1/U2 state. Now when our firmware needs to notify the host we make sure it enters U0 state and everything works fine.

    Thursday, October 8, 2015 9:53 AM