none
Regarding Standard XHCI Host Driver RRS feed

  • Question

  • Hi ,

    In one of our XHCI  Host DUT  configurations,  we have limited the max slots supported by our xHCI host as 8.

    With this configuration, we tried to test our XHCI DUT in  FPGA with Microsoft driver in windows OS  and we could see the interop tree with 8 devices is working fine.

    We tried to do an experiment to check the behaviour of the System by connecting the 9th device to the tree.

    During this time we saw the 9th device is not enumerated by the system and unknown device is indicated in the device manager.

    When we checked the PCI analyser  trace to view the XHCI  specific transactions, we noticed the following.

    Software tried to enumerate the device by sending the enable slot command for the 9th slot which is not supported by our Host even though the Host indicated the max slot as 8 through the  HCSPARAMS1 register.

    When that enable slot command for the 9 the device is processed by the Host, it sends out a command completion event with completion code as  Slot not available error.

    I would expect the Software should send a popup message which should indicate that the device cannot be enumerated since it exceeds the capability of Host, during this condition.

    We tried another experiment by disconnecting the 3<sup>rd</sup> device and during that time the 9<sup>th</sup> device is already connected. But we could see the Driver is not enumerating the 9<sup>th</sup> device even though one slot is free after the disconnection of 3<sup>rd</sup> device.

    Could you please provide your input if any?

    thanks,

    sunil

    Tuesday, October 13, 2015 8:07 AM

Answers

  • This behavior is expected. Windows does not give an error message customized to the error condition of slot running out as an end user wouldn't really know the meaning of that error. Developers should be able to get the correct error information by using ETW logs (http://blogs.msdn.com/b/usbcoreblog/archive/2013/11/09/capturing-usb-etw-traces-with-microsoft-message-analyzer-mma.aspx).

    The second behavior is also expected. If a previous device has failed enumeration due to slots not being present and then subsequently when a slot opens up, we don't have the logic to go re-try enumeration automatically. We expect most controllers to have sufficiently large number of slots so that it doesn't make sense for us to optimize for this edge case. If you un-plug and re-plug the device, it should work though. 

    Tuesday, October 13, 2015 7:44 PM