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: usb: dwc3: gadget: Correct the logic for queuing sgs From: Felipe Balbi Message-Id: <87fu4wqwis.fsf@linux.intel.com> Date: Mon, 19 Mar 2018 10:50:35 +0200 To: Anurag Kumar Vulisha , Greg Kroah-Hartman Cc: v.anuragkumar@gmail.com, APANDEY@xilinx.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Anurag Kumar Vulisha List-ID: SGksCgpBbnVyYWcgS3VtYXIgVnVsaXNoYSA8YW51cmFnLmt1bWFyLnZ1bGlzaGFAeGlsaW54LmNv bT4gd3JpdGVzOgo+IFRoaXMgcGF0Y2ggZml4ZXMgdHdvIGlzc3Vlcwo+Cj4gMS4gVGhlIGNvZGUg bG9naWMgaW4gZHdjM19wcmVwYXJlX29uZV90cmIoKSBpbmNvcnJlY3RseSB1c2VzIHRoZSBhZGRy ZXNzCj4gYW5kIGxlbmd0aCBnaXZlbiBpbiByZXEgcGFja2V0IGV2ZW4gZm9yIHNjYXR0ZXJnYXRo ZXIgbGlzdHMuIFRoaXMgcGF0Y2gKPiBjb3JyZWN0J3MgdGhlIGNvZGUgdG8gdXNlIHNnLT5hZGRy ZXNzIGFuZCBzZy0+bGVuZ3RoIHdoZW4gc2NhdHRlcmdhdGhlcgo+IGxpc3RzIGFyZSBwcmVzZW50 Lgo+Cj4gMi4gVGhlIHByZXNlbnQgY29kZSBjb3JyZWN0bHkgZmV0Y2hlcyB0aGUgcmVxJ3Mgd2hp Y2ggd2VyZSBub3QgcXVldWVkIGZyb20KPiB0aGUgc3RhcnRlZF9saXN0IGJ1dCBmYWlscyB0byBz dGFydCBmcm9tIHRoZSBzZyB3aGVyZSBpdCBwcmV2aW91c2x5IHN0b3BwZWQKPiBxdWV1aW5nIGJl Y2F1c2Ugb2YgdGhlIHVuYXZhaWxhYmxlIFRSQidzLiBUaGlzIHBhdGNoIGNvcnJlY3QncyB0aGUg Y29kZSB0bwo+IHN0YXJ0IHF1ZXVpbmcgZnJvbSB0aGUgY29ycmVjdCBzZyBpbiBzZ2xpc3QuCgp0 aGVzZSB0d28gc2hvdWxkIGJlIGluIHNlcGFyYXRlIHBhdGNoZXMsIHRoZW4uCgo+IFNpZ25lZC1v ZmYtYnk6IEFudXJhZyBLdW1hciBWdWxpc2hhIDxhbnVyYWdrdUB4aWxpbnguY29tPgo+IC0tLQo+ ICBkcml2ZXJzL3VzYi9kd2MzL2NvcmUuaCAgIHwgIDQgKysrKwo+ICBkcml2ZXJzL3VzYi9kd2Mz L2dhZGdldC5jIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t Cj4gIDIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MzL2NvcmUuaCBiL2RyaXZlcnMvdXNiL2R3YzMv Y29yZS5oCj4gaW5kZXggODYwZDJiYy4uMjc3OWU1OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Vz Yi9kd2MzL2NvcmUuaAo+ICsrKyBiL2RyaXZlcnMvdXNiL2R3YzMvY29yZS5oCj4gQEAgLTcxOCw3 ICs3MTgsOSBAQCBzdHJ1Y3QgZHdjM19od3BhcmFtcyB7Cj4gICAqIEBsaXN0OiBhIGxpc3RfaGVh ZCB1c2VkIGZvciByZXF1ZXN0IHF1ZXVlaW5nCj4gICAqIEBkZXA6IHN0cnVjdCBkd2MzX2VwIG93 bmluZyB0aGlzIHJlcXVlc3QKPiAgICogQHNnOiBwb2ludGVyIHRvIGZpcnN0IGluY29tcGxldGUg c2cKPiArICogQHNnX3RvX3N0YXJ0OiBwb2ludGVyIHRvIHRoZSBzZyB3aGljaCBzaG91bGQgYmUg cXVldWVkIG5leHQKPiAgICogQG51bV9wZW5kaW5nX3NnczogY291bnRlciB0byBwZW5kaW5nIHNn cwo+ICsgKiBAbnVtX3F1ZXVlZF9zZ3M6IGNvdW50ZXIgdG8gdGhlIG51bWJlciBvZiBzZ3Mgd2hp Y2ggYWxyZWFkeSBnb3QgcXVldWVkCgp0aGlzIGlzIHRoZSBzYW1lIGFzIG51bV9wZW5kaW5nX3Nn cy4KCj4gICAqIEByZW1haW5pbmc6IGFtb3VudCBvZiBkYXRhIHJlbWFpbmluZwo+ICAgKiBAZXBu dW06IGVuZHBvaW50IG51bWJlciB0byB3aGljaCB0aGlzIHJlcXVlc3QgcmVmZXJzCj4gICAqIEB0 cmI6IHBvaW50ZXIgdG8gc3RydWN0IGR3YzNfdHJiCj4gQEAgLTczNCw4ICs3MzYsMTAgQEAgc3Ry dWN0IGR3YzNfcmVxdWVzdCB7Cj4gICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBsaXN0 Owo+ICAgICAgICAgc3RydWN0IGR3YzNfZXAgICAgICAgICAgKmRlcDsKPiAgICAgICAgIHN0cnVj dCBzY2F0dGVybGlzdCAgICAgICpzZzsKPiArICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAgICAg ICpzZ190b19zdGFydDsKCmluZGVlZCwgd2Ugc2VlbSB0byBuZWVkIHNvbWV0aGluZyBsaWtlIHRo aXMuCgo+ICAgICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgbnVtX3BlbmRpbmdfc2dzOwo+ ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgbnVtX3F1ZXVlZF9zZ3M7Cgp0aGlzIHNo b3VsZCBiZSB1bm5lY2Vzc2FyeS4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzMvZ2Fk Z2V0LmMgYi9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jCj4gaW5kZXggMmJkYTRlYi4uMWNmZmVk NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jCj4gKysrIGIvZHJpdmVy cy91c2IvZHdjMy9nYWRnZXQuYwo+IEBAIC05NzgsMTEgKzk3OCwyMCBAQCBzdGF0aWMgdm9pZCBk d2MzX3ByZXBhcmVfb25lX3RyYihzdHJ1Y3QgZHdjM19lcCAqZGVwLAo+ICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHdjM19yZXF1ZXN0ICpyZXEsIHVuc2lnbmVkIGNoYWluLCB1bnNpZ25lZCBub2Rl KQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHdjM190cmIgICAgICAgICAqdHJiOwo+IC0gICAgICAg dW5zaWduZWQgICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVxLT5yZXF1ZXN0Lmxlbmd0aDsKPiAr ICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGxlbmd0aDsKPiArICAgICAgIGRtYV9hZGRy X3QgICAgICAgICAgICAgIGRtYTsKPiAgICAgICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgIHN0 cmVhbV9pZCA9IHJlcS0+cmVxdWVzdC5zdHJlYW1faWQ7Cj4gICAgICAgICB1bnNpZ25lZCAgICAg ICAgICAgICAgICBzaG9ydF9ub3Rfb2sgPSByZXEtPnJlcXVlc3Quc2hvcnRfbm90X29rOwo+ICAg ICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgbm9faW50ZXJydXB0ID0gcmVxLT5yZXF1ZXN0 Lm5vX2ludGVycnVwdDsKPiAtICAgICAgIGRtYV9hZGRyX3QgICAgICAgICAgICAgIGRtYSA9IHJl cS0+cmVxdWVzdC5kbWE7Cj4gKwo+ICsgICAgICAgaWYgKHJlcS0+cmVxdWVzdC5udW1fc2dzID4g MCkgewo+ICsgICAgICAgICAgICAgICAvKiBVc2Ugc2NhdHRlcmdhdGhlciBsaXN0IGFkZHJlc3Mg YW5kIGxlbmd0aCAqLwoKdW5uZWNlc3NhcnkgY29tbWVudAoKPiArICAgICAgICAgICAgICAgbGVu Z3RoID0gc2dfZG1hX2xlbihyZXEtPnNnX3RvX3N0YXJ0KTsKPiArICAgICAgICAgICAgICAgZG1h ID0gc2dfZG1hX2FkZHJlc3MocmVxLT5zZ190b19zdGFydCk7Cj4gKyAgICAgICB9IGVsc2Ugewo+ ICsgICAgICAgICAgICAgICBsZW5ndGggPSByZXEtPnJlcXVlc3QubGVuZ3RoOwo+ICsgICAgICAg ICAgICAgICBkbWEgPSByZXEtPnJlcXVlc3QuZG1hOwo+ICsgICAgICAgfQo+Cj4gICAgICAgICB0 cmIgPSAmZGVwLT50cmJfcG9vbFtkZXAtPnRyYl9lbnF1ZXVlXTsKPgo+IEBAIC0xMDQ4LDExICsx MDU3LDE0IEBAIHN0YXRpYyB1MzIgZHdjM19jYWxjX3RyYnNfbGVmdChzdHJ1Y3QgZHdjM19lcCAq ZGVwKQo+ICBzdGF0aWMgdm9pZCBkd2MzX3ByZXBhcmVfb25lX3RyYl9zZyhzdHJ1Y3QgZHdjM19l cCAqZGVwLAo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHdjM19yZXF1ZXN0ICpyZXEpCj4gIHsK PiAtICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2cgPSByZXEtPnNnOwo+ICsgICAgICAgc3Ry dWN0IHNjYXR0ZXJsaXN0ICpzZyA9IHJlcS0+c2dfdG9fc3RhcnQ7Cj4gICAgICAgICBzdHJ1Y3Qg c2NhdHRlcmxpc3QgKnM7Cj4gICAgICAgICBpbnQgICAgICAgICAgICAgaTsKPgo+IC0gICAgICAg Zm9yX2VhY2hfc2coc2csIHMsIHJlcS0+bnVtX3BlbmRpbmdfc2dzLCBpKSB7Cj4gKyAgICAgICB1 bnNpZ25lZCBpbnQgcmVtYWluaW5nID0gcmVxLT5yZXF1ZXN0Lm51bV9tYXBwZWRfc2dzCj4gKyAg ICAgICAgICAgICAgIC0gcmVxLT5udW1fcXVldWVkX3NnczsKCmFscmVhZHkgdHJhY2tlZCBhcyBu dW1fcGVuZGluZ19zZ3MKCj4gKyAgICAgICBmb3JfZWFjaF9zZyhzZywgcywgcmVtYWluaW5nLCBp KSB7Cj4gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW5ndGggPSByZXEtPnJlcXVlc3Qu bGVuZ3RoOwo+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4cCA9IHVzYl9lbmRwb2lu dF9tYXhwKGRlcC0+ZW5kcG9pbnQuZGVzYyk7Cj4gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCByZW0gPSBsZW5ndGggJSBtYXhwOwo+IEBAIC0xMDgxLDYgKzEwOTMsMTYgQEAgc3RhdGljIHZv aWQgZHdjM19wcmVwYXJlX29uZV90cmJfc2coc3RydWN0IGR3YzNfZXAgKmRlcCwKPiAgICAgICAg ICAgICAgICAgICAgICAgICBkd2MzX3ByZXBhcmVfb25lX3RyYihkZXAsIHJlcSwgY2hhaW4sIGkp Owo+ICAgICAgICAgICAgICAgICB9Cj4KPiArICAgICAgICAgICAgICAgLyogSW4gdGhlIGNhc2Ug d2hlcmUgbm90IGFibGUgdG8gcXVldWUgdHJicyBmb3IgYWxsIHNncyBpbgoKd3JvbmcgY29tbWVu dCBzdHlsZQoKPiArICAgICAgICAgICAgICAgICogcmVxdWVzdCBiZWNhdXNlIG9mIHRyYiBub3Qg YXZhaWxhYmxlLCB1cGRhdGUgc2dfdG9fc3RhcnQKPiArICAgICAgICAgICAgICAgICogdG8gbmV4 dCBzZyBmcm9tIHdoaWNoIHdlIGNhbiBzdGFydCBxdWVpbmcgdHJicyBvbmNlIHRyYnMKPiArICAg ICAgICAgICAgICAgICogYXZhaWxiYWxlCiAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXgog ICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUKCnNnX3RvX3N0YXJ0IGlzIHRvbyBsb25nIGFu ZCBhd2t3YXJkIHRvIHR5cGUuIFN1cmUsIEknbSBuaXRwaWNraW5nLCBidXQKc3RhcnRfc2cgd291 bGQgYmUgYmV0dGVyLgoKPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIGlm IChjaGFpbikKPiArICAgICAgICAgICAgICAgICAgICAgICByZXEtPnNnX3RvX3N0YXJ0ID0gc2df bmV4dChzKTsKPiArCj4gKyAgICAgICAgICAgICAgIHJlcS0+bnVtX3F1ZXVlZF9zZ3MrKzsKPiAr Cj4gICAgICAgICAgICAgICAgIGlmICghZHdjM19jYWxjX3RyYnNfbGVmdChkZXApKQo+ICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgfQo+IEBAIC0xMTcxLDYgKzExOTMs OCBAQCBzdGF0aWMgdm9pZCBkd2MzX3ByZXBhcmVfdHJicyhzdHJ1Y3QgZHdjM19lcCAqZGVwKQo+ ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKPgo+ICAgICAgICAgICAgICAgICByZXEt PnNnICAgICAgICAgICAgICAgICA9IHJlcS0+cmVxdWVzdC5zZzsKPiArICAgICAgICAgICAgICAg cmVxLT5zZ190b19zdGFydCAgICAgICAgPSByZXEtPnNnOwo+ICsgICAgICAgICAgICAgICByZXEt Pm51bV9xdWV1ZWRfc2dzICAgICA9IDA7CgpudW1fcXVldWVkX3NncyBpcyB1bm5lY2Vzc2FyeS4K Cj4gICAgICAgICAgICAgICAgIHJlcS0+bnVtX3BlbmRpbmdfc2dzICAgID0gcmVxLT5yZXF1ZXN0 Lm51bV9tYXBwZWRfc2dzOwo+Cj4gICAgICAgICAgICAgICAgIGlmIChyZXEtPm51bV9wZW5kaW5n X3NncyA+IDApCj4gQEAgLTIzMjcsOCArMjM1MSwxNCBAQCBzdGF0aWMgaW50IGR3YzNfY2xlYW51 cF9kb25lX3JlcXMoc3RydWN0IGR3YzMgKmR3Yywgc3RydWN0IGR3YzNfZXAgKmRlcCwKPgo+ICAg ICAgICAgICAgICAgICByZXEtPnJlcXVlc3QuYWN0dWFsID0gbGVuZ3RoIC0gcmVxLT5yZW1haW5p bmc7Cj4KPiAtICAgICAgICAgICAgICAgaWYgKChyZXEtPnJlcXVlc3QuYWN0dWFsIDwgbGVuZ3Ro KSAmJiByZXEtPm51bV9wZW5kaW5nX3NncykKPiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gX19kd2MzX2dhZGdldF9raWNrX3RyYW5zZmVyKGRlcCk7Cj4gKyAgICAgICAgICAgICAgIGlm IChyZXEtPnJlcXVlc3QuYWN0dWFsIDwgbGVuZ3RoIHx8IHJlcS0+bnVtX3BlbmRpbmdfc2dzKSB7 Cgp3aHkgZG8geW91IHRoaW5rIHRoaXMgbmVlZHMgdG8gYmUgfHwgaW5zdGVhZCBvZiAmJj8gSWYg YWN0dWFsID09IGxlbmd0aAp3ZSdyZSBkb25lLCB0aGVyZSdzIG5vdGhpbmcgbW9yZSBsZWZ0IHRv IGRvLiBJZiB0aGVyZSBpcyBlaXRoZXIgaG9zdApzZW50IG1vcmUgZGF0YSB0aGFuIGl0IHNob3Vs ZCwgb3Igd2UgbWlzY2FsY3VsYXRlZCBudW1fcGVuZGluZ19zZ3MsIG9yCndlIGhhZCB0aGUgd3Jv bmcgbGVuZ3RoIHNvbWV3aGVyZSBpbiBzb21lIFRSQnMuIEVpdGhlciBvZiB0aG9zZSBjYXNlcyBp cwphbiBlcnJvciBjb25kaXRpb24gd2UgZG9uJ3Qgd2FudCB0byBoaWRlLiBXZSB3YW50IHRoaW5n cyB0byBmYWlsIGluIHRoYXQKY2FzZS4KCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogVGhl cmUgY291bGQgYmUgY2FzZXMgd2hlcmUgdGhlIHdob2xlIHJlcSBjYW4ndCBiZQoKd3JvbmcgY29t bWVudCBzdHlsZS4KCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogbWFwcGVkIGludG8gVFJC J3MgYXZhaWxhYmxlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQKPiArICAgICAgICAgICAgICAgICAg ICAgICAgKiB0byBraWNrIHRyYW5zZmVyIGFnYWluIGlmIChyZXEtPm51bV9wZW5kaW5nX3NncyA+ IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICovCgphbHNvLCB0aGUgY29kZSBoYXMgYWxy ZWFkeSBiZWVuIHRyeWluZyB0byBkbyB0aGF0LiBJdCBqdXN0IHdhc24ndApjb3JyZWN0LiBXZSBk b24ndCBuZWVkIHRvIGFkZCB0aGlzIGNvbW1lbnQuCgo+ICsgICAgICAgICAgICAgICAgICAgICAg IGlmIChyZXEtPm51bV9wZW5kaW5nX3NncykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBfX2R3YzNfZ2FkZ2V0X2tpY2tfdHJhbnNmZXIoZGVwKTsKCmFub3RoZXIgbnVt X3BlbmRpbmdfc2dzIGNoZWNrPyBXaHk/Cgo+IFRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50 cyBhcmUgaW50ZW5kZWQgZm9yIHRoZSBzb2xlIHVzZSBvZiB0aGUKPiBuYW1lZCByZWNpcGllbnQo cykgYW5kIGNvbnRhaW4ocykgY29uZmlkZW50aWFsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlCj4g cHJvcHJpZXRhcnksIHByaXZpbGVnZWQgb3IgY29weXJpZ2h0ZWQgdW5kZXIgYXBwbGljYWJsZSBs YXcuIElmIHlvdQo+IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgZG8gbm90IHJlYWQs IGNvcHksIG9yIGZvcndhcmQgdGhpcwo+IGVtYWlsIG1lc3NhZ2Ugb3IgYW55IGF0dGFjaG1lbnRz LiBEZWxldGUgdGhpcyBlbWFpbCBtZXNzYWdlIGFuZCBhbnkKPiBhdHRhY2htZW50cyBpbW1lZGlh dGVseS4KCkkgY2FuJ3QgYWNjZXB0IEFOWSBwYXRjaGVzIGZyb20geW91IHVudGlsIHlvdSByZW1v dmUgdGhpcyBmb290ZXIuIEluCmZhY3QsIEknbSBub3QgaW4gdGhlIFRvIGZpZWxkLCBzbyBJJ20g bm90IGEgIm5hbWVkIHJlY2lwaWVudCIgYW5kCnRoZXJlZm9yZSwgSSdtIGRlbGV0aW5nIHlvdXIg ZW1haWwuIFRhbGsgdG8geW91ciBJVCBkZXBhcnRtZW50IGFib3V0CmNvbnRyaWJ1dGluZyB0byBw dWJsaWMgbWFpbGluZyBsaXN0cy4KCkVtYWlsLCBub3csIGRlbGV0ZWQuCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AG47ELumKAdZVId/62OzZYCVEkdTnYLUH0qnz0YsadTLmRsPy8uwZn7oqu46sf0Uojjo8qoEpzru ARC-Seal: i=1; a=rsa-sha256; t=1521449459; cv=none; d=google.com; s=arc-20160816; b=hwTkvcjhoQw8gGCSA1SvjHOvWzzK085UpiYETbLiq5ZPVVysaQUK9023vvyYzgk0D4 HKcoHJOZijPekUYjarKkWb43fCxovUI3ZdhMiZF91QnZNlutxilYbMF2RnhwWIvDPO/6 uw1KlCrOysEXZv7h6VEDbKlmm8EhUIARj/iHp2CIl2LrrjC8mM7pUjHFKcIjDWQtvYw9 cx7yUXTkp0IBkmRAi3ZOFDF9odp+XUSrjB9ZnOOWLO6af1UiVEsIgh20LESQFigSG7ol xnbBJr392olpqwWxlgPcvv4H8yKrk0tvUAnC7kkLdp9g1EUYf3CxTY3DnlnFlrJBDL4A bl1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:arc-authentication-results; bh=icpguQugd2M+6N6+ScLH7dc4ehkc7Q6zUoTUjcaPJRk=; b=0Warx3tRcIC4CnJqVIhb6QnPOIg1il7/pZqn0mTDf46FvynKrjn+Jb3YcNkp3U2y96 fqk9nFWFTpjIdLghzqE8+3CByQPiaj3Q6BKIydajjol89a0H8/7JuU9Gl53h+lkHa1LE rQyts6gKAXwoCI4Iz+m/usCxIhIZfnoKVdyDcFwrdm5YswXgpJjQbpHMw/dKj3Gen5JG U6joelv8OKrHdsjweZti6I2secFjF4t3UIENcAW0yzspvLp4dTOJVSurvs399HlMypKs t7fToUUPU3ZDLI7X0/v6EpOLGAQl7AzL9aG54QPmC1d0M/GoCclr+xOUKUYUtLikD3Hr 34pw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of felipe.balbi@linux.intel.com designates 134.134.136.65 as permitted sender) smtp.mailfrom=felipe.balbi@linux.intel.com Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of felipe.balbi@linux.intel.com designates 134.134.136.65 as permitted sender) smtp.mailfrom=felipe.balbi@linux.intel.com X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,329,1517904000"; d="asc'?scan'208";a="34982819" From: Felipe Balbi To: Anurag Kumar Vulisha , Greg Kroah-Hartman Cc: v.anuragkumar@gmail.com, APANDEY@xilinx.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Anurag Kumar Vulisha Subject: Re: [PATCH] usb: dwc3: gadget: Correct the logic for queuing sgs In-Reply-To: <1521442253-15906-1-git-send-email-anuragku@xilinx.com> References: <1521442253-15906-1-git-send-email-anuragku@xilinx.com> Date: Mon, 19 Mar 2018 10:50:35 +0200 Message-ID: <87fu4wqwis.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1595347861307192100?= X-GMAIL-MSGID: =?utf-8?q?1595355388494136484?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, Anurag Kumar Vulisha writes: > This patch fixes two issues > > 1. The code logic in dwc3_prepare_one_trb() incorrectly uses the address > and length given in req packet even for scattergather lists. This patch > correct's the code to use sg->address and sg->length when scattergather > lists are present. > > 2. The present code correctly fetches the req's which were not queued from > the started_list but fails to start from the sg where it previously stopp= ed > queuing because of the unavailable TRB's. This patch correct's the code to > start queuing from the correct sg in sglist. these two should be in separate patches, then. > Signed-off-by: Anurag Kumar Vulisha > --- > drivers/usb/dwc3/core.h | 4 ++++ > drivers/usb/dwc3/gadget.c | 42 ++++++++++++++++++++++++++++++++++++------ > 2 files changed, 40 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h > index 860d2bc..2779e58 100644 > --- a/drivers/usb/dwc3/core.h > +++ b/drivers/usb/dwc3/core.h > @@ -718,7 +718,9 @@ struct dwc3_hwparams { > * @list: a list_head used for request queueing > * @dep: struct dwc3_ep owning this request > * @sg: pointer to first incomplete sg > + * @sg_to_start: pointer to the sg which should be queued next > * @num_pending_sgs: counter to pending sgs > + * @num_queued_sgs: counter to the number of sgs which already got queued this is the same as num_pending_sgs. > * @remaining: amount of data remaining > * @epnum: endpoint number to which this request refers > * @trb: pointer to struct dwc3_trb > @@ -734,8 +736,10 @@ struct dwc3_request { > struct list_head list; > struct dwc3_ep *dep; > struct scatterlist *sg; > + struct scatterlist *sg_to_start; indeed, we seem to need something like this. > unsigned num_pending_sgs; > + unsigned int num_queued_sgs; this should be unnecessary. > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index 2bda4eb..1cffed5 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -978,11 +978,20 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *de= p, > struct dwc3_request *req, unsigned chain, unsigned node) > { > struct dwc3_trb *trb; > - unsigned length =3D req->request.length; > + unsigned int length; > + dma_addr_t dma; > unsigned stream_id =3D req->request.stream_id; > unsigned short_not_ok =3D req->request.short_not_o= k; > unsigned no_interrupt =3D req->request.no_interrup= t; > - dma_addr_t dma =3D req->request.dma; > + > + if (req->request.num_sgs > 0) { > + /* Use scattergather list address and length */ unnecessary comment > + length =3D sg_dma_len(req->sg_to_start); > + dma =3D sg_dma_address(req->sg_to_start); > + } else { > + length =3D req->request.length; > + dma =3D req->request.dma; > + } > > trb =3D &dep->trb_pool[dep->trb_enqueue]; > > @@ -1048,11 +1057,14 @@ static u32 dwc3_calc_trbs_left(struct dwc3_ep *de= p) > static void dwc3_prepare_one_trb_sg(struct dwc3_ep *dep, > struct dwc3_request *req) > { > - struct scatterlist *sg =3D req->sg; > + struct scatterlist *sg =3D req->sg_to_start; > struct scatterlist *s; > int i; > > - for_each_sg(sg, s, req->num_pending_sgs, i) { > + unsigned int remaining =3D req->request.num_mapped_sgs > + - req->num_queued_sgs; already tracked as num_pending_sgs > + for_each_sg(sg, s, remaining, i) { > unsigned int length =3D req->request.length; > unsigned int maxp =3D usb_endpoint_maxp(dep->endpoint.des= c); > unsigned int rem =3D length % maxp; > @@ -1081,6 +1093,16 @@ static void dwc3_prepare_one_trb_sg(struct dwc3_ep= *dep, > dwc3_prepare_one_trb(dep, req, chain, i); > } > > + /* In the case where not able to queue trbs for all sgs in wrong comment style > + * request because of trb not available, update sg_to_sta= rt > + * to next sg from which we can start queing trbs once tr= bs > + * availbale ^^^^^^^^^ available sg_to_start is too long and awkward to type. Sure, I'm nitpicking, but start_sg would be better. > + */ > + if (chain) > + req->sg_to_start =3D sg_next(s); > + > + req->num_queued_sgs++; > + > if (!dwc3_calc_trbs_left(dep)) > break; > } > @@ -1171,6 +1193,8 @@ static void dwc3_prepare_trbs(struct dwc3_ep *dep) > return; > > req->sg =3D req->request.sg; > + req->sg_to_start =3D req->sg; > + req->num_queued_sgs =3D 0; num_queued_sgs is unnecessary. > req->num_pending_sgs =3D req->request.num_mapped_sgs; > > if (req->num_pending_sgs > 0) > @@ -2327,8 +2351,14 @@ static int dwc3_cleanup_done_reqs(struct dwc3 *dwc= , struct dwc3_ep *dep, > > req->request.actual =3D length - req->remaining; > > - if ((req->request.actual < length) && req->num_pending_sg= s) > - return __dwc3_gadget_kick_transfer(dep); > + if (req->request.actual < length || req->num_pending_sgs)= { why do you think this needs to be || instead of &&? If actual =3D=3D length we're done, there's nothing more left to do. If there is either host sent more data than it should, or we miscalculated num_pending_sgs, or we had the wrong length somewhere in some TRBs. Either of those cases is an error condition we don't want to hide. We want things to fail in that case. > + /* There could be cases where the whole req can't= be wrong comment style. > + * mapped into TRB's available. In that case, we = need > + * to kick transfer again if (req->num_pending_sg= s > 0) > + */ also, the code has already been trying to do that. It just wasn't correct. We don't need to add this comment. > + if (req->num_pending_sgs) > + return __dwc3_gadget_kick_transfer(dep); another num_pending_sgs check? Why? > This email and any attachments are intended for the sole use of the > named recipient(s) and contain(s) confidential information that may be > proprietary, privileged or copyrighted under applicable law. If you > are not the intended recipient, do not read, copy, or forward this > email message or any attachments. Delete this email message and any > attachments immediately. I can't accept ANY patches from you until you remove this footer. In fact, I'm not in the To field, so I'm not a "named recipient" and therefore, I'm deleting your email. Talk to your IT department about contributing to public mailing lists. Email, now, deleted. =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAlqvedsACgkQzL64meEa mQamnRAAjaJL/CG6ZSwA4Xttd9TO94I2YnVp+4c+5kdrXPMU7C31XUU+QD+swmWb NGCWAgtsAaqXRLsDUH9YAQkVx4d4y94Xo3fFWEWHO8bUvwdqG2rUPD2k1BZJomaN XL6f2fSMwMgpWQQwvVpuneeVrcgqzUDyJQIKDhB+JCjHpLqA3RPJy1QeaL6O/jjs xTSBU2WF67mCJErS3jSaIEr44bNV4tMpKcSaXCewTgLekt1fJE8icAgcyrnx4vS3 gUvViRX3Zep9sepbYt6GQOA1PfI9sNHCq+An2ng888Poh2ZVvpwZH06cL4Sgwv2m fLFiAQBfsul0+vseJtTCT9tT1YVLpR/JV2VfTrGiwUC+71GPQIIwWHlAdAUt8ekG mpQGwgOtyteaHJSrft96F8DPHH0w0nPhR4tTKWGmHJ2UzVSOJvFVA4xQmbp/46jz Amv9HVJUveUCnAtS4Ci/7inDw0vavs0WTXZvnsGdZA9oxJHzkBt6lmQzjfeHqKfU odqK56nupFs6CmQ/boQjoqBxAWpkBQFVO/4Pd6I4ov4Ehe/JmM+88oaFoTX0O30p QaeyXLBhIjuTZ5NBUNaU3CAFoSE1H4NLigNmnJbxUS7FWLN3+iBPxzNUujp1qecI hOxpX9tYjoCi7DCRVVEEc6SY6TV+L9mdEoTR9599dHvRp0pVAEc= =5+rz -----END PGP SIGNATURE----- --=-=-=--