Hello all,
Basically my questions are continuation of discussion in the following thread:
http://www.osronline.com/showThread.cfm?link=166414
I have been told that our competitors products support an SS idle timeout of 500 ms and hence we have to support to meet the power consumption benchmarks for our product. I see in previous discussion thread that 1 sec is considered too short…so is 500 ms not achievable on any Windows system ?
Can some one from Microsoft USB core team at least comment on what is the minimum value that they have achieved on an ideal working device on lets say Windows 7? I think this number would be helpful for all the new folks stepping into USB SS for the first time.
As mentioned in earlier post I have come to same conclusion with our product, if the resume immediately follows the suspend (100 - 150 ms after) then the USB core fails to do a resume or the previous suspend continues till the next resume but our SS KMDF driver does get a D0Entry as if the device was resumed. I am using power managed queues in our KMDF SS driver. If Idle timeout value is increased (5 sec or 10 sec) this behavior is still there but seen less frequently due to large timeout value. So I dont think this issue is tied to a short timeout value used.
Doron mentioned the following regaring the above problem:
“it is defiitely not something that wdf should be handling. either it is an issue in the usb core or in your hw. i would start with your hw”
I am not sure if the problem is with our hw…I tried to investigate that part and I kind of agree with the HW folks that the resume/suspend is completely driven by the master (the host) and the device merely reacts to it by being ready and servicing any incoming request after the resume. So I am at this point suspecting its an USB core issue. I did take a Windows 7 USB etl trace but dont know how to to interpret it at this time (I can send that out if needed ).
Now I wanted to know what my options for workaround are for the above behaviour in our KMDF SS driver. I didnt see any setting in KMDF that would allow the power managed queue to be configured to delay the delivery of requests by certain time …thus causing the wakeup of the device to be delayed by sometime when its recently suspended. Let me know if I am missing something here:
- Can I use non-power managed queue and self-managed IO to do the above and control the timing when our device is resumed or suspended? Will that work?
- Can I use IRP preprocessing with KMDF power managed queues and kind of delay the request delivery back to WDF by the time needed for a good resume after suspend?
Thanks for your patience and I apologize for this long post as I wanted to include all the info/questions.
Any comments or advise that would help me understand the problem or better resolve it are most welcome. Thanks for that.
Adam (OP of the earlier post)… please let me know if you were able to solve your problem earlier …that would help too.
Thanks again,
Nate D.