From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [6/6] usb: musb: Decrease URB starting latency in musb_advance_schedule() From: "Matwey V. Kornilov" Message-Id: Date: Sat, 4 May 2019 12:38:22 +0300 To: Bin Liu , "Matwey V. Kornilov" , Greg KH , =?UTF-8?B?0JzQsNGC0LLQtdC5INCa0L7RgNC90LjQu9C+0LI=?= , open list , "open list:MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER" List-ID: 0LLRgiwgMzAg0LDQv9GALiAyMDE5INCzLiDQsiAxODozMSwgQmluIExpdSA8Yi1saXVAdGkuY29t PjoKPgo+IEhpIEdyZWcgYW5kIGFsbCBkZXZzLAo+Cj4gT24gV2VkLCBBcHIgMDMsIDIwMTkgYXQg MDk6NTM6MTBQTSArMDMwMCwgTWF0d2V5IFYuIEtvcm5pbG92IHdyb3RlOgo+ID4gUHJldmlvdXNs eSwgdGhlIGFsZ29yaXRobSB3YXMgdGhlIGZvbGxvd2luZzoKPiA+Cj4gPiAgMS4gZ2l2ZWJhY2sg Y3VycmVudCBVUkIKPiA+ICAyLiBpZiBjdXJyZW50IHFoIGlzIG5vdCBlbXB0eQo+ID4gICAgIHRo ZW4gc3RhcnQgbmV4dCBVUkIKPiA+ICAzLiBpZiBjdXJyZW50IHFoIGlzIGVtcHR5Cj4gPiAgICAg dGhlbiBkaXNwb3NlIHRoZSBxaCwgZmluZCBuZXh0IHFoIGlmIGFueSwgYW5kIHN0YXJ0IFVSQi4K PiA+Cj4gPiBJdCBtYXkgdGFrZSBhIHdoaWxlIHRvIHJ1biB1cmItPmNhbGxiYWNrIGluc2lkZSBV UkIgZ2l2ZWJhY2sgd2hpY2ggaXMKPiA+IHJ1biBzeW5jaHJvbm91c2x5IGluIG11c2IuIEluIG9y ZGVyIHRvIGltcHJvdmUgdGhlIGxhdGVuY3kgd2UgcmVhcnJhbmdlCj4gPiB0aGUgZnVuY3Rpb24g YmVoYXZpb3VyIGZvciB0aGUgY2FzZSB3aGVuIHFoIGlzIG5vdCBlbXB0eTogbmV4dCBVUkIgaXMK PiA+IHN0YXJ0ZWQgYmVmb3JlIFVSQiBnaXZlYmFjay4gV2hlbiBxaCBpcyBlbXB0eSB0aGVuIHRo ZSBiZWhhdmlvdXIgaXMKPiA+IGludGVudGlvbmFsbHkga2VwdCBpbiBvcmRlciBub3QgdG8gYnJl YWsgZXhpc3RpbmcgaW50ZXIgcWggc2NoZWR1bGluZzoKPiA+IFVSQiBnaXZlYmFjayBjb3VsZCBw b3RlbnRpb25hbGx5IGVucXVldWUgb3RoZXIgVVJCIHRvIHRoZSBlbXB0eSBxaAo+ID4gcHJldmVu dGluZyBpdCBmcm9tIGJlaW5nIGRpc3Bvc2VkLgo+Cj4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBz ZXF1ZW5jZSBvZiB1cmIgZ2l2ZWJhY2sgaW4gbXVzYi4KPgo+ICAgICAgICAgYmVmb3JlICAgICAg ICAgICAgICAgICAgICAgICAgICBhZnRlcgo+ICAgICAgICAgLS0tLS0tICAgICAgICAgICAgICAg ICAgICAgICAgICAtLS0tLQo+IDEuIGdpdmViYWNrIGN1cnJlbnQgdXJiICAgICAgICAgICAgICAg ICAxLiBzdGFydCBuZXh0IHVyYiBpZiBxaCAhPSBlbXB0eQo+IDIuIHN0YXJ0IG5leHQgdXJiIGlm IHFoICE9IGVtcHR5ICAgICAgICAyLiBnaXZlYmFjayBjdXJyZW50IHVyYgo+Cj4gSSBzZWUgdGhl cmUgaXMgYSBwb3RlbnRpYWwgdGhhdCB0aGUgdXJiIGdpdmViYWNrIGNvdWxkIGJlIG91dCBvZiBv cmRlciwKPiBmb3IgZXhhbXBsZSwgaWYgdXJiIGdpdmViYWNrIGluIEJIIGFuZCB0aGUgbmV4dCB1 cmIgZmluaXNoZXMgYmVmb3JlIEJICj4gcnVucy4KCkNvdWxkIHlvdSBwbGVhc2UgZ2l2ZSBtb3Jl IGRldGFpbHM/IEZyYW5rbHkgc3BlYWtpbmcsIEkgYW0gbm90IHN1cmUKdGhhdCBJIHVuZGVyc3Rh bmQgdGhlIHJlb3JkZXJpbmcgaXNzdWUgb3JpZ2luIGNvcnJlY3RseS4KSSBzZWUgaW4gdGhlIGV4 aXN0aW5nIGltcGxlbWVudGF0aW9uIHRoYXQgdGhlIGZ1bmN0aW9uIGNhbGwgb3JkZXIgaXMKdGhl IGZvbGxvd2luZzoKCjEuIGdsdWUgaW50ZXJydXB0IGhhbmRsZXIgKGZvciBpbnN0YW5jZSBkc3Bz X2ludGVycnVwdCgpIGluIG15IGFtMzM1eApjYXNlKSBob2xkcyBtdXNiLT5sb2NrOwoyLiBtdXNi X2ludGVycnVwdCgpCjMuIG11c2JfaG9zdF9yeCgpIChvciAqX3R4KCkpCjQuIG11c2JfYWR2YW5j ZV9zY2hlZHVsZSgpCjUuIG11c2JfZ2l2ZWJhY2soKSByZWxlYXNlcyBhbmQgcmVhY3F1aXJlcyBt dXNiLT5sb2NrIGFyb3VuZDoKNi4gdXNiX2hjZF9naXZlYmFja191cmIoKQoKU28sIHdoZW4gbXVz Yl9naXZlYmFjaygpIGlzIGNhbGxlZCBpbnNpZGUgbXVzYl9hZHZhbmNlX3NjaGVkdWxlKCkgdGhl bgp0aGUgc2Vjb25kIGluc3RhbmNlIG9mIG11c2JfYWR2YW5jZV9zY2hlZHVsZSgpIGNhbiBiZSBz dGFydGVkCnNpbXVsdGFuZW91c2x5IHdoZW4gdGhlIGZvbGxvd2luZyBpbnRlcnJ1cHQgaXMgYmVp bmcgaGFuZGxlZCBhdCBvdGhlcgpDUFUgY29yZS4gQW5kIHdlIGNhbiBzZWUgdHdvIHVzYl9oY2Rf Z2l2ZWJhY2tfdXJiKCkgcnVubmluZwpjb25jdXJyZW50bHkuCklzIGl0IGNvcnJlY3Q/Cgo+Cj4g SWYgdGhpcyBwb3RlbnRpYWwgaXMgcG9zc2libGUsIGlzIGl0IGEgcHJvYmxlbSBmb3IgYW55IGNs YXNzIGRyaXZlcj8KPgo+IFRoYW5rcywKPiAtQmluLgo+Cj4gPgo+ID4gQmVmb3JlIHRoaXMgcGF0 Y2gsIHRpbWUgc3BlbnQgaW4gdXJiLT5jYWxsYmFjayBsZWQgdG8gdGhlIGZvbGxvd2luZwo+ID4g Z2xpdGNoZXMgYmV0d2VlbiB0aGUgaG9zdCBhbmQgYSBodWIgZHVyaW5nIGlzb2MgdHJhbnNmZXIg KGxpbmUgNCk6Cj4gPgo+ID4gICAgIDExLjYyNDQ5MiBkPSAgMC4wMDAxMjQgWzEzMC42ICsgIDEu MDUwXSBbICA0XSBTUExJVAo+ID4gICAgIDExLjYyNDQ5MiBkPSAgMC4wMDAwMDAgWzEzMC42ICsg IDEuNDY3XSBbICAzXSBJTiAgIDogMy41Cj4gPiAgICAgMTEuNjI0NDkzIGQ9ICAwLjAwMDAwMCBb MTMwLjYgKyAgMS45NjddIFsgMzddIERBVEEwOiBhYSAwOCBbc2tpcHBlZC4uLl0KPiA+ICAgICAx MS42MjU2MTcgZD0gIDAuMDAxMTI0IFsxMzEuNyArICAxLjA1MF0gWyAgNF0gU1BMSVQKPiA+ICAg ICAxMS42MjU2MTcgZD0gIDAuMDAwMDAwIFsxMzEuNyArICAxLjQ2N10gWyAgM10gSU4gICA6IDMu NQo+ID4gICAgIDExLjYyNTg2NyBkPSAgMC4wMDAyNTAgWzEzMi4xICsgIDEuMDUwXSBbICA0XSBT UExJVAo+ID4gICAgIDExLjYyNTg2NyBkPSAgMC4wMDAwMDAgWzEzMi4xICsgIDEuNDY3XSBbICAz XSBJTiAgIDogMy41Cj4gPiAgICAgMTEuNjI1ODY4IGQ9ICAwLjAwMDAwMSBbMTMyLjEgKyAgMS45 ODNdIFsgIDNdIERBVEEwOiAwMCAwMAo+ID4gICAgIDExLjYyNjYxNyBkPSAgMC4wMDA3NDkgWzEz Mi43ICsgIDEuMDUwXSBbICA0XSBTUExJVAo+ID4gICAgIDExLjYyNjYxNyBkPSAgMC4wMDAwMDAg WzEzMi43ICsgIDEuNDY3XSBbICAzXSBJTiAgIDogMy41Cj4gPiAgICAgMTEuNjI2ODY3IGQ9ICAw LjAwMDI1MCBbMTMzLjEgKyAgMS4wNTBdIFsgIDRdIFNQTElUCj4gPiAgICAgMTEuNjI2ODY3IGQ9 ICAwLjAwMDAwMCBbMTMzLjEgKyAgMS40NjddIFsgIDNdIElOICAgOiAzLjUKPiA+ICAgICAxMS42 MjY4NjggZD0gIDAuMDAwMDAwIFsxMzMuMSArICAxLjk2N10gWyAgM10gREFUQTA6IDAwIDAwCj4g Pgo+ID4gQWZ0ZXIgdGhlIGh1YiwgdGhleSBsb29rIGFzIHRoZSBmb2xsb3dpbmcgYW5kIG1heSBs ZWFkIHRvIGJyb2tlbgo+ID4gcGVyZXBoZXJpYWwgdHJhbnNmZXIgKGFzIGluIGNhc2Ugb2YgUFdD IGJhc2VkIHdlYmNhbSk6Cj4gPgo+ID4gICAgIDExLjMzMjAwNCBkPSAgMC4wMDA5OTcgWyAzMC4w ICsgIDMuNDE3XSBbICAzXSBJTiAgIDogNS41Cj4gPiAgICAgMTEuMzMyMDA3IGQ9ICAwLjAwMDAw MyBbIDMwLjAgKyAgNi44MzNdIFs4MDBdIERBVEEwOiA4YSAxYyBbc2tpcHBlZC4uLl0KPiA+ICAg ICAxMS4zMzQwMDQgZD0gIDAuMDAxOTk3IFsgMzIuMCArICAzLjQxN10gWyAgM10gSU4gICA6IDUu NQo+ID4gICAgIDExLjMzNDAwNyBkPSAgMC4wMDAwMDMgWyAzMi4wICsgIDYuNzUwXSBbICAzXSBE QVRBMDogMDAgMDAKPiA+ICAgICAxMS4zMzUwMDQgZD0gIDAuMDAwOTk3IFsgMzMgICArICAzLjQx N10gWyAgM10gSU4gICA6IDUuNQo+ID4gICAgIDExLjMzNTAwNyBkPSAgMC4wMDAwMDMgWyAzMyAg ICsgIDYuNzUwXSBbICAzXSBEQVRBMDogMDAgMDAKPiA+Cj4gPiBSZW1vdmluZyB0aGlzIGdsaXRj aGVzIG1ha2VzIHVzIGFibGUgdG8gc3VjY2Vzc2Z1bGx5IHJ1biAxMGZwcwo+ID4gdmlkZW8gc3Ry ZWFtIGZyb20gdGhlIHdlYmNhbSBhdHRhY2hlZCB2aWEgVVNCIGh1Yi4gVGhhdCB3YXMKPiA+IHBy ZXZpb3VzbHkgaW1wb3NzaWJsZS4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNYXR3ZXkgVi4gS29y bmlsb3YgPG1hdHdleUBzYWkubXN1LnJ1Pgo+ID4gLS0tCj4gPiAgZHJpdmVycy91c2IvbXVzYi9t dXNiX2hvc3QuYyB8IDE4ICsrKysrKysrKysrKysrKysrKwo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAx OCBpbnNlcnRpb25zKCspCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbXVz Yl9ob3N0LmMgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfaG9zdC5jCj4gPiBpbmRleCBlZDk5ZWNk NGU2M2EuLjc1YmU5Mjg3M2I1YiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVz Yl9ob3N0LmMKPiA+ICsrKyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9ob3N0LmMKPiA+IEBAIC04 NSw2ICs4NSwxMSBAQCBzdGF0aWMgYm9vbCBtdXNiX3FoX2VtcHR5KHN0cnVjdCBtdXNiX3FoICpx aCkKPiA+ICAgICAgIHJldHVybiBsaXN0X2VtcHR5KCZxaC0+aGVwLT51cmJfbGlzdCk7Cj4gPiAg fQo+ID4KPiA+ICtzdGF0aWMgYm9vbCBtdXNiX3FoX3Npbmd1bGFyKHN0cnVjdCBtdXNiX3FoICpx aCkKPiA+ICt7Cj4gPiArICAgICByZXR1cm4gbGlzdF9pc19zaW5ndWxhcigmcWgtPmhlcC0+dXJi X2xpc3QpOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBtdXNiX3FoX3VubGlua19oZXAo c3RydWN0IG11c2JfcWggKnFoKQo+ID4gIHsKPiA+ICAgICAgIGlmICghcWgtPmhlcCkKPiA+IEBA IC0zNjIsNiArMzY3LDE5IEBAIHN0YXRpYyB2b2lkIG11c2JfYWR2YW5jZV9zY2hlZHVsZShzdHJ1 Y3QgbXVzYiAqbXVzYiwgc3RydWN0IHVyYiAqdXJiLAo+ID4gICAgICAgICAgICAgICBicmVhazsK PiA+ICAgICAgIH0KPiA+Cj4gPiArICAgICBpZiAocmVhZHkgJiYgIW11c2JfcWhfc2luZ3VsYXIo cWgpKSB7Cj4gPiArICAgICAgICAgICAgIHN0cnVjdCB1cmIgKm5leHRfdXJiID0gbGlzdF9uZXh0 X2VudHJ5KHVyYiwgdXJiX2xpc3QpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBtdXNiX2RiZyht dXNiLCAiLi4uIG5leHQgZXAlZCAlY1ggdXJiICVwIiwgaHdfZXAtPmVwbnVtLCBpc19pbiA/ICdS JyA6ICdUJywgbmV4dF91cmIpOwo+ID4gKyAgICAgICAgICAgICBtdXNiX3N0YXJ0X3VyYihtdXNi LCBpc19pbiwgcWgsIG5leHRfdXJiKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgcWgtPmlzX3Jl YWR5ID0gMDsKPiA+ICsgICAgICAgICAgICAgbXVzYl9naXZlYmFjayhtdXNiLCB1cmIsIHN0YXR1 cyk7Cj4gPiArICAgICAgICAgICAgIHFoLT5pc19yZWFkeSA9IHJlYWR5Owo+ID4gKwo+ID4gKyAg ICAgICAgICAgICByZXR1cm47Cj4gPiArICAgICB9Cj4gPiArCj4gPiAgICAgICBxaC0+aXNfcmVh ZHkgPSAwOwo+ID4gICAgICAgbXVzYl9naXZlYmFjayhtdXNiLCB1cmIsIHN0YXR1cyk7Cj4gPiAg ICAgICBxaC0+aXNfcmVhZHkgPSByZWFkeTsKPiA+IC0tCj4gPiAyLjE2LjQKPiA+Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 86C7FC43219 for ; Sat, 4 May 2019 09:38:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 598D0206BB for ; Sat, 4 May 2019 09:38:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726217AbfEDJig convert rfc822-to-8bit (ORCPT ); Sat, 4 May 2019 05:38:36 -0400 Received: from mail-oi1-f196.google.com ([209.85.167.196]:36369 "EHLO mail-oi1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725823AbfEDJif (ORCPT ); Sat, 4 May 2019 05:38:35 -0400 Received: by mail-oi1-f196.google.com with SMTP id l203so6275458oia.3; Sat, 04 May 2019 02:38:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=HFseoIWdZ0CgvYQXA3eAJnk39OPJTIq5Z9waS1ZE/Jc=; b=MLaA2HE++m5V4WSryK46H1oRcZYNNYjQ2OJNoCy1cZLuDhVOFP8hUXqIXwWv9vVb6t HUkEEAGwMbRUPzKAQW5J5smYBnJ80A1voiHLSeKHwbCvl03GwT+6IuLkHOUx1JI5TFQP JYRMIOUCa3IgBso2QXyYPVEf9aeEcf955H0LH9eCwAFF3DwFW5HO1v1ZRpcNvggpkFr9 LQ4do+TXESwwflNu7Me3T6u4yvbaF8Kdg1xxS92CjhuR4xC8al0khaXmxwnx9htdTmj/ tvxIQv5odfm3fIqCQVAaqaTOc3hYUtyYa9xzJpMLJj5uE0DW+/ea7IkT6HhIPx4j5kTO kcaA== X-Gm-Message-State: APjAAAU4AxqfOu2G4q+soLKHSb7sbtKrk42Cj2HiyrBaibBESPYy5kDJ EpxSWm7omIK8T3itSvJjAo5E9RghijkpM8JCP2s= X-Google-Smtp-Source: APXvYqzSnqDL5V1V0nXKvVXGhTqE7hzRVYiJdoDEV0gao7+HsCWuCIR5ouFQqReU4n19/y4ehX0kTkLO0aUKFmOKP0g= X-Received: by 2002:aca:eb11:: with SMTP id j17mr2029311oih.67.1556962714541; Sat, 04 May 2019 02:38:34 -0700 (PDT) MIME-Version: 1.0 References: <20190403185310.8437-1-matwey@sai.msu.ru> <20190403185310.8437-7-matwey@sai.msu.ru> <20190430153118.GI20993@uda0271908> In-Reply-To: <20190430153118.GI20993@uda0271908> From: "Matwey V. Kornilov" Date: Sat, 4 May 2019 12:38:22 +0300 Message-ID: Subject: Re: [PATCH 6/6] usb: musb: Decrease URB starting latency in musb_advance_schedule() To: Bin Liu , "Matwey V. Kornilov" , Greg KH , =?UTF-8?B?0JzQsNGC0LLQtdC5INCa0L7RgNC90LjQu9C+0LI=?= , open list , "open list:MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Message-ID: <20190504093822.VWkgm5pT5JOT2N_PgI-YYhSL9wLrxgPyVNLSPDsgnr0@z> вт, 30 апр. 2019 г. в 18:31, Bin Liu : > > Hi Greg and all devs, > > On Wed, Apr 03, 2019 at 09:53:10PM +0300, Matwey V. Kornilov wrote: > > Previously, the algorithm was the following: > > > > 1. giveback current URB > > 2. if current qh is not empty > > then start next URB > > 3. if current qh is empty > > then dispose the qh, find next qh if any, and start URB. > > > > It may take a while to run urb->callback inside URB giveback which is > > run synchronously in musb. In order to improve the latency we rearrange > > the function behaviour for the case when qh is not empty: next URB is > > started before URB giveback. When qh is empty then the behaviour is > > intentionally kept in order not to break existing inter qh scheduling: > > URB giveback could potentionally enqueue other URB to the empty qh > > preventing it from being disposed. > > This patch changes the sequence of urb giveback in musb. > > before after > ------ ----- > 1. giveback current urb 1. start next urb if qh != empty > 2. start next urb if qh != empty 2. giveback current urb > > I see there is a potential that the urb giveback could be out of order, > for example, if urb giveback in BH and the next urb finishes before BH > runs. Could you please give more details? Frankly speaking, I am not sure that I understand the reordering issue origin correctly. I see in the existing implementation that the function call order is the following: 1. glue interrupt handler (for instance dsps_interrupt() in my am335x case) holds musb->lock; 2. musb_interrupt() 3. musb_host_rx() (or *_tx()) 4. musb_advance_schedule() 5. musb_giveback() releases and reacquires musb->lock around: 6. usb_hcd_giveback_urb() So, when musb_giveback() is called inside musb_advance_schedule() then the second instance of musb_advance_schedule() can be started simultaneously when the following interrupt is being handled at other CPU core. And we can see two usb_hcd_giveback_urb() running concurrently. Is it correct? > > If this potential is possible, is it a problem for any class driver? > > Thanks, > -Bin. > > > > > Before this patch, time spent in urb->callback led to the following > > glitches between the host and a hub during isoc transfer (line 4): > > > > 11.624492 d= 0.000124 [130.6 + 1.050] [ 4] SPLIT > > 11.624492 d= 0.000000 [130.6 + 1.467] [ 3] IN : 3.5 > > 11.624493 d= 0.000000 [130.6 + 1.967] [ 37] DATA0: aa 08 [skipped...] > > 11.625617 d= 0.001124 [131.7 + 1.050] [ 4] SPLIT > > 11.625617 d= 0.000000 [131.7 + 1.467] [ 3] IN : 3.5 > > 11.625867 d= 0.000250 [132.1 + 1.050] [ 4] SPLIT > > 11.625867 d= 0.000000 [132.1 + 1.467] [ 3] IN : 3.5 > > 11.625868 d= 0.000001 [132.1 + 1.983] [ 3] DATA0: 00 00 > > 11.626617 d= 0.000749 [132.7 + 1.050] [ 4] SPLIT > > 11.626617 d= 0.000000 [132.7 + 1.467] [ 3] IN : 3.5 > > 11.626867 d= 0.000250 [133.1 + 1.050] [ 4] SPLIT > > 11.626867 d= 0.000000 [133.1 + 1.467] [ 3] IN : 3.5 > > 11.626868 d= 0.000000 [133.1 + 1.967] [ 3] DATA0: 00 00 > > > > After the hub, they look as the following and may lead to broken > > perepherial transfer (as in case of PWC based webcam): > > > > 11.332004 d= 0.000997 [ 30.0 + 3.417] [ 3] IN : 5.5 > > 11.332007 d= 0.000003 [ 30.0 + 6.833] [800] DATA0: 8a 1c [skipped...] > > 11.334004 d= 0.001997 [ 32.0 + 3.417] [ 3] IN : 5.5 > > 11.334007 d= 0.000003 [ 32.0 + 6.750] [ 3] DATA0: 00 00 > > 11.335004 d= 0.000997 [ 33 + 3.417] [ 3] IN : 5.5 > > 11.335007 d= 0.000003 [ 33 + 6.750] [ 3] DATA0: 00 00 > > > > Removing this glitches makes us able to successfully run 10fps > > video stream from the webcam attached via USB hub. That was > > previously impossible. > > > > Signed-off-by: Matwey V. Kornilov > > --- > > drivers/usb/musb/musb_host.c | 18 ++++++++++++++++++ > > 1 file changed, 18 insertions(+) > > > > diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c > > index ed99ecd4e63a..75be92873b5b 100644 > > --- a/drivers/usb/musb/musb_host.c > > +++ b/drivers/usb/musb/musb_host.c > > @@ -85,6 +85,11 @@ static bool musb_qh_empty(struct musb_qh *qh) > > return list_empty(&qh->hep->urb_list); > > } > > > > +static bool musb_qh_singular(struct musb_qh *qh) > > +{ > > + return list_is_singular(&qh->hep->urb_list); > > +} > > + > > static void musb_qh_unlink_hep(struct musb_qh *qh) > > { > > if (!qh->hep) > > @@ -362,6 +367,19 @@ static void musb_advance_schedule(struct musb *musb, struct urb *urb, > > break; > > } > > > > + if (ready && !musb_qh_singular(qh)) { > > + struct urb *next_urb = list_next_entry(urb, urb_list); > > + > > + musb_dbg(musb, "... next ep%d %cX urb %p", hw_ep->epnum, is_in ? 'R' : 'T', next_urb); > > + musb_start_urb(musb, is_in, qh, next_urb); > > + > > + qh->is_ready = 0; > > + musb_giveback(musb, urb, status); > > + qh->is_ready = ready; > > + > > + return; > > + } > > + > > qh->is_ready = 0; > > musb_giveback(musb, urb, status); > > qh->is_ready = ready; > > -- > > 2.16.4 > > -- With best regards, Matwey V. Kornilov. Sternberg Astronomical Institute, Lomonosov Moscow State University, Russia 119234, Moscow, Universitetsky pr-k 13, +7 (495) 9392382