Hi, According to xHCI spec Rev1 page 125, Endpoint context state diagram.
When reset device, the endpoint state transit to disabled state. Do I make some mistake? I'll try to figure out the endopint state transitions during the reset flow, and update information later. Thanks for the direction. Soar From: Alan Stern [mailto:st...@rowland.harvard.edu] Sent: Thursday, January 31, 2013 12:22 AM To: 洪崇耕 Cc: linux-usb@vger.kernel.org Subject: RE: Not enough resource for old configuration after USB bus reset On Wed, 30 Jan 2013, [big5] x R wrote: > Hi all, > > We try to reproduce the problem on general desktop with ubuntu 12.04.1 and > 12.10, and got some information below: > > 1. If we use xHci with Ti TUSB7340 chip, do bus reset or plug/unplug 1000+ > times, the host fail to configure the device. > If we use xHci with Fresco chip, it operats without error. > > 2. If the usb device contains only Control/Bulk type endpoints, it's all > right. > If it contains interrupt/isoc (periodic) endpoint, it will fail with > bandwidth error. > I check the source and find that the bandwidth_error is the > TRB_completion_code of configure_endpoint command. > > In addition, I try to study the usb_reset_and_verify_device and want to > consult the following question. > > When reseting a device, hcd will invoke usb_hcd_alloc_bandwidth, this > function will drop the endpoints and add the endpoints. > > When executing drop_endpoint, the function shows error message xHCI called > with disabled ep. > And I confirm that ep_state of end point context is in disabled state this > time. Why is the endpoint already disabled? It shouldn't be. > Then usb_hcd_alloc_bandwidth invokes add_endpoint. > Last, sending a configure endpoint command to complete the change. > > The xHCI spec says configure endpoint should ignore disabled endpoints drop > flag and do nothing. > So the source is correct according to spec. > But the overall behavior is adding the endpoint without dropping the old > endpoint. > > Is this what we want? Don't we need dropping endpoints to release the > bandwidth and/or resource before the endpoints goes to disabled state without > freeing bandwidth? Yes. It would work okay if the endpoint wasn't already disabled. Can you figure out how the endpoint became disabled in the first place? Alan Stern N�妓緶r��y���匒淅炮カv傂�)瑎{.n�+�極�{捱〇�傂n�r←屹��螐�刻俾&p埂��嶭�(剝���摃j"���m����翯z嫡��僠fㄑ搬��坍�m�