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: [BUG] mt76x0u: Probing issues on Raspberry Pi 3 B+ From: Stanislaw Gruszka Message-Id: <20190216140739.GA2236@redhat.com> Date: Sat, 16 Feb 2019 15:07:40 +0100 To: Stefan Wahren Cc: Lorenzo Bianconi , Alan Stern , Felix Fietkau , Doug Anderson , Minas Harutyunyan , USB list , linux-wireless List-ID: T24gU2F0LCBGZWIgMTYsIDIwMTkgYXQgMTI6MDU6MThQTSArMDEwMCwgU3RlZmFuIFdhaHJlbiB3 cm90ZToKPiBzb3JyeSBmb3IgdGhlIGRlbGF5LCBidXQgaSBkbyB0aGlzIGFsbCBpbiBteSBzcGFy ZSB0aW1lLgoKU3RlZmFuLCB0aGFua3MgZm9yIHNhY3JpZmluZyB5b3VyIHNwYXJlIHRpbWUgZm9y IHRlc3RpbmcgdGhpcyEKCj4gVGhlIHJlc3VsdHMgZm9yIHlvdXIgcmVjZW50IHBhdGNoIHNlcmll cyBhcmUgYmV0dGVyIChubyBmaXJtd2FyZSB0aW1lb3V0KSwgYnV0IHN0aWxsIG5vIHdvcmtpbmcg d2lmaSBhbmQgc3RpbGwgYSB3YXJuaW5nOgo+IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2xhdGVn b29kYnllL2M0ODY0ZTQ0NjgyMTcxNzQxOWNiZTY1ZGYwN2Y4ZDhkCj4gCj4gSSd2ZSBpZGVudGlm aWVkIHRoZSByZWFzb24gZm9yIHRoZSB3YXJuaW5nIGluIGR3YzI6Cj4gCj4gLyoKPiAgKiBXZSBh c3N1bWUgdGhhdCBETUEgaXMgYWx3YXlzIGFsaWduZWQgaW4gbm9uLXNwbGl0Cj4gICogY2FzZSBv ciBzcGxpdCBvdXQgY2FzZS4gV2FybiBpZiBub3QuCj4gICovCj4gV0FSTl9PTl9PTkNFKGhzb3Rn LT5wYXJhbXMuaG9zdF9kbWEgJiYgKGNoYW4tPnhmZXJfZG1hICYgMHgzKSk7CgpJIHRoaW5rIEkg dW5kZXJzdGFuZCB3aHkgdGhhdCBoYXBwZW4sIHdlIGZpcnN0IGFsbG9jYXRlIDEwMjQgbWN1IApi dWZmZXIgdGhlbiBzdGFuZGFyZCA0MDk2IHJ4IGJ1ZmZlcnMsIHRoYXQgY291c2UgNDA5NiBidWZm ZXJzIGFyZQpub3QgY29udGFpbmVkIGluIHNpbmdsZSBwYWdlIGFuZCBuZWVkIHNwbGl0IGJ5IGR3 YzIgZHJpdmVyLgoKQXR0YWNoZWQgcGF0Y2ggc2hvdWxkIGZpeCB0aGlzLCBwbGVzZSB0ZXN0LCB0 aGFua3MgaW4gYWR2YW5jZS4KCj4gQnR3IGkgY2FuIGNvbmZpcm0gYSByZWdyZXNzaW9uIHdhcyBp bnRyb2R1Y2VkIGFmdGVyIDQuMTksIGJlY2F1c2UgaW4gNC4xOSB0aGVyZSB3YXMgbm8gZmlybXdh cmUgdGltZW91dCBidXQgZXZlbiBubyB3b3JraW5nIHdpZmk6CgpZb3UgbWVudCAnbm8gd29ya2lu ZyB3aWZpJyBvciAnd29ya2luZyB3aWZpJz8KClN0YW5pc2xhdwpGcm9tIDM1ZGFkZDA5YmQzMTkz YjMzYjEwZjU2ZTAyMTBkYTY4MGM2ZDkxNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IFN0YW5pc2xhdyBHcnVzemthIDxzZ3J1c3prYUByZWRoYXQuY29tPgpEYXRlOiBTYXQsIDE2IEZl YiAyMDE5IDE0OjUzOjE5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gbXQ3NnVzYjogYWxsb2NhdGUg cGFnZSBjb250YWluZWQgcnggYnVmZmVycwoKSWYgd2UgZmlyc3QgYWxsb2NhdGUgMTAyNCBieXRl cyBidWZmZXIgYW5kIHRoZW4gNDA5NiBieXRlcwpidWZmZXIgdmlhIHBhZ2VfZnJhZ19hbGxvYygp IHRoZSBzZWNvbmQgYnVmZmVyIHdpbGwgYmUgY3Jvc3NpbmcKcGFnZSBib3VuZGFyaWVzIHdoYXQg aXMgbW9zdCBsaWtlbHkgbm90IGFwcHJvcHJpYXRlIGZvcgpkbWFfbWFwX3tzZy9wYWdlfSBhbmQg bWFrZSBidWZmZXIgc3BsaXQgbWlzYWxpZ24gaXNzdWVzIG9uCmR3YzIgdXNiIGhvc3QgZHJpdmVy LgoKU2luY2UgcGF0Y2ggY2hhbmdlZCBhcmd1bWVudHMgb2YgbXQ3NnVfYnVmX2FsbG9jKCkgZnVu Y3Rpb24gSSBhbHNvCmNoYW5nZWQgbmFtZSB0byBpbmRpY2F0ZSBpdCBpcyBvbmx5IHVzZWQgZm9y IFJYIGFsbG9jYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXcgR3J1c3prYSA8c2dydXN6 a2FAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210 NzYuaCAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3Vz Yi5jICAgICB8IDI0ICsrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni91c2JfbWN1LmMgfCAgNCArLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEz IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVk aWF0ZWsvbXQ3Ni9tdDc2LmgKaW5kZXggMzY0ZjM1NzFjMDMzLi45ZTI0ZjYwMzY2NGEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCkBAIC0zNjQsNyArMzY0LDYg QEAgZW51bSBtdDc2dV9vdXRfZXAgewogI2RlZmluZSBNVF9TR19NQVhfU0laRQkJOAogI2RlZmlu ZSBNVF9OVU1fVFhfRU5UUklFUwkyNTYKICNkZWZpbmUgTVRfTlVNX1JYX0VOVFJJRVMJMTI4Ci0j ZGVmaW5lIE1DVV9SRVNQX1VSQl9TSVpFCTEwMjQKIHN0cnVjdCBtdDc2X3VzYiB7CiAJc3RydWN0 IG11dGV4IHVzYl9jdHJsX210eDsKIAl1OCBkYXRhWzMyXTsKQEAgLTc1Myw4ICs3NTIsOCBAQCB2 b2lkIG10NzZ1X3NpbmdsZV93cihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgY29uc3QgdTggcmVxLAog CQkgICAgIGNvbnN0IHUxNiBvZmZzZXQsIGNvbnN0IHUzMiB2YWwpOwogaW50IG10NzZ1X2luaXQo c3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTsKIHZvaWQg bXQ3NnVfZGVpbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2KTsKLWludCBtdDc2dV9idWZfYWxsb2Mo c3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2dV9idWYgKmJ1ZiwKLQkJICAgIGludCBu c2dzLCBpbnQgbGVuLCBpbnQgc2dsZW4sIGdmcF90IGdmcCk7CitpbnQgbXQ3NnVfcnhfYnVmX2Fs bG9jKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NnVfYnVmICpidWYsIGludCBuc2dz LAorCQkgICAgICAgZ2ZwX3QgZ2ZwKTsKIHZvaWQgbXQ3NnVfYnVmX2ZyZWUoc3RydWN0IG10NzZ1 X2J1ZiAqYnVmKTsKIGludCBtdDc2dV9zdWJtaXRfYnVmKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBp bnQgZGlyLCBpbnQgaW5kZXgsCiAJCSAgICAgc3RydWN0IG10NzZ1X2J1ZiAqYnVmLCBnZnBfdCBn ZnAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5j IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYwppbmRleCBkZTkwNmYw N2U4NWEuLjQ3MjY0MmVmMjVhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVk aWF0ZWsvbXQ3Ni91c2IuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2 L3VzYi5jCkBAIC0yNzEsMTEgKzI3MSwxMSBAQCBtdDc2dV9zZXRfZW5kcG9pbnRzKHN0cnVjdCB1 c2JfaW50ZXJmYWNlICppbnRmLAogfQogCiBzdGF0aWMgaW50Ci1tdDc2dV9maWxsX3J4X3NnKHN0 cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NnVfYnVmICpidWYsCi0JCSBpbnQgbnNncywg aW50IGxlbiwgaW50IHNnbGVuKQorbXQ3NnVfZmlsbF9yeF9zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRl diwgc3RydWN0IG10NzZ1X2J1ZiAqYnVmLCBpbnQgbnNncykKIHsKIAlzdHJ1Y3QgbXQ3Nl9xdWV1 ZSAqcSA9ICZkZXYtPnFfcnhbTVRfUlhRX01BSU5dOwogCXN0cnVjdCB1cmIgKnVyYiA9IGJ1Zi0+ dXJiOworCWludCBzZ2xlbiA9IFNLQl9XSVRIX09WRVJIRUFEKHEtPmJ1Zl9zaXplKTsKIAlpbnQg aTsKIAogCXNwaW5fbG9ja19iaCgmcS0+cnhfcGFnZV9sb2NrKTsKQEAgLTI4NCw3ICsyODQsNyBA QCBtdDc2dV9maWxsX3J4X3NnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NnVfYnVm ICpidWYsCiAJCXZvaWQgKmRhdGE7CiAJCWludCBvZmZzZXQ7CiAKLQkJZGF0YSA9IHBhZ2VfZnJh Z19hbGxvYygmcS0+cnhfcGFnZSwgbGVuLCBHRlBfQVRPTUlDKTsKKwkJZGF0YSA9IHBhZ2VfZnJh Z19hbGxvYygmcS0+cnhfcGFnZSwgcS0+YnVmX3NpemUsIEdGUF9BVE9NSUMpOwogCQlpZiAoIWRh dGEpCiAJCQlicmVhazsKIApAQCAtMzA5LDggKzMwOSw4IEBAIG10NzZ1X2ZpbGxfcnhfc2coc3Ry dWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2dV9idWYgKmJ1ZiwKIAlyZXR1cm4gaSA/IDog LUVOT01FTTsKIH0KIAotaW50IG10NzZ1X2J1Zl9hbGxvYyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwg c3RydWN0IG10NzZ1X2J1ZiAqYnVmLAotCQkgICAgaW50IG5zZ3MsIGludCBsZW4sIGludCBzZ2xl biwgZ2ZwX3QgZ2ZwKQoraW50IG10NzZ1X3J4X2J1Zl9hbGxvYyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRl diwgc3RydWN0IG10NzZ1X2J1ZiAqYnVmLAorCQkgICAgICAgaW50IG5zZ3MsIGdmcF90IGdmcCkK IHsKIAlidWYtPnVyYiA9IHVzYl9hbGxvY191cmIoMCwgZ2ZwKTsKIAlpZiAoIWJ1Zi0+dXJiKQpA QCAtMzI1LDcgKzMyNSw3IEBAIGludCBtdDc2dV9idWZfYWxsb2Moc3RydWN0IG10NzZfZGV2ICpk ZXYsIHN0cnVjdCBtdDc2dV9idWYgKmJ1ZiwKIAlidWYtPmRldiA9IGRldjsKIAlidWYtPm51bV9z Z3MgPSBuc2dzOwogCi0JcmV0dXJuIG10NzZ1X2ZpbGxfcnhfc2coZGV2LCBidWYsIG5zZ3MsIGxl biwgc2dsZW4pOworCXJldHVybiBtdDc2dV9maWxsX3J4X3NnKGRldiwgYnVmLCBuc2dzKTsKIH0K IAogdm9pZCBtdDc2dV9idWZfZnJlZShzdHJ1Y3QgbXQ3NnVfYnVmICpidWYpCkBAIC00ODUsNyAr NDg1LDcgQEAgc3RhdGljIHZvaWQgbXQ3NnVfcnhfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEp CiB7CiAJc3RydWN0IG10NzZfZGV2ICpkZXYgPSAoc3RydWN0IG10NzZfZGV2ICopZGF0YTsKIAlz dHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSA9ICZkZXYtPnFfcnhbTVRfUlhRX01BSU5dOwotCWludCBlcnIs IG5zZ3MsIGJ1Zl9sZW4gPSBxLT5idWZfc2l6ZTsKKwlpbnQgZXJyLCBuc2dzOwogCXN0cnVjdCBt dDc2dV9idWYgKmJ1ZjsKIAogCXJjdV9yZWFkX2xvY2soKTsKQEAgLTQ5Nyw5ICs0OTcsNyBAQCBz dGF0aWMgdm9pZCBtdDc2dV9yeF90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAogCQluc2dz ID0gbXQ3NnVfcHJvY2Vzc19yeF9lbnRyeShkZXYsIGJ1Zi0+dXJiKTsKIAkJaWYgKG5zZ3MgPiAw KSB7Ci0JCQllcnIgPSBtdDc2dV9maWxsX3J4X3NnKGRldiwgYnVmLCBuc2dzLAotCQkJCQkgICAg ICAgYnVmX2xlbiwKLQkJCQkJICAgICAgIFNLQl9XSVRIX09WRVJIRUFEKGJ1Zl9sZW4pKTsKKwkJ CWVyciA9IG10NzZ1X2ZpbGxfcnhfc2coZGV2LCBidWYsIG5zZ3MpOwogCQkJaWYgKGVyciA8IDAp CiAJCQkJYnJlYWs7CiAJCX0KQEAgLTU1NiwxMCArNTU0LDggQEAgc3RhdGljIGludCBtdDc2dV9h bGxvY19yeChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldikKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgTVRf TlVNX1JYX0VOVFJJRVM7IGkrKykgewotCQllcnIgPSBtdDc2dV9idWZfYWxsb2MoZGV2LCAmcS0+ ZW50cnlbaV0udWJ1ZiwKLQkJCQkgICAgICBuc2dzLCBxLT5idWZfc2l6ZSwKLQkJCQkgICAgICBT S0JfV0lUSF9PVkVSSEVBRChxLT5idWZfc2l6ZSksCi0JCQkJICAgICAgR0ZQX0tFUk5FTCk7CisJ CWVyciA9IG10NzZ1X3J4X2J1Zl9hbGxvYyhkZXYsICZxLT5lbnRyeVtpXS51YnVmLCBuc2dzLAor CQkJCQkgR0ZQX0tFUk5FTCk7CiAJCWlmIChlcnIgPCAwKQogCQkJcmV0dXJuIGVycjsKIAl9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYl9tY3UuYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiX21jdS5jCmluZGV4IDAzNmJl NDE2M2U2OS4uN2M0MzczOGY1YTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9t ZWRpYXRlay9tdDc2L3VzYl9tY3UuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L3VzYl9tY3UuYwpAQCAtMjksOSArMjksNyBAQCBpbnQgbXQ3NnVfbWN1X2luaXRfcngo c3RydWN0IG10NzZfZGV2ICpkZXYpCiAJc3RydWN0IG10NzZfdXNiICp1c2IgPSAmZGV2LT51c2I7 CiAJaW50IGVycjsKIAotCWVyciA9IG10NzZ1X2J1Zl9hbGxvYyhkZXYsICZ1c2ItPm1jdS5yZXMs IDEsCi0JCQkgICAgICBNQ1VfUkVTUF9VUkJfU0laRSwgTUNVX1JFU1BfVVJCX1NJWkUsCi0JCQkg ICAgICBHRlBfS0VSTkVMKTsKKwllcnIgPSBtdDc2dV9yeF9idWZfYWxsb2MoZGV2LCAmdXNiLT5t Y3UucmVzLCAxLCBHRlBfS0VSTkVMKTsKIAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKIAo= 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=-13.5 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_MUTT autolearn=ham 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 99972C43381 for ; Sat, 16 Feb 2019 14:07:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 52537222E6 for ; Sat, 16 Feb 2019 14:07:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728165AbfBPOH5 (ORCPT ); Sat, 16 Feb 2019 09:07:57 -0500 Received: from mx1.redhat.com ([209.132.183.28]:48896 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725294AbfBPOH5 (ORCPT ); Sat, 16 Feb 2019 09:07:57 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1E8193D952; Sat, 16 Feb 2019 14:07:56 +0000 (UTC) Received: from localhost (ovpn-204-67.brq.redhat.com [10.40.204.67]) by smtp.corp.redhat.com (Postfix) with ESMTP id 018401024910; Sat, 16 Feb 2019 14:07:45 +0000 (UTC) Date: Sat, 16 Feb 2019 15:07:40 +0100 From: Stanislaw Gruszka To: Stefan Wahren Cc: Lorenzo Bianconi , Alan Stern , Felix Fietkau , Doug Anderson , Minas Harutyunyan , USB list , linux-wireless Subject: Re: [BUG] mt76x0u: Probing issues on Raspberry Pi 3 B+ Message-ID: <20190216140739.GA2236@redhat.com> References: <20190211173315.GE6292@redhat.com> <20190212093035.GB12906@redhat.com> <404607590.373282.1550126997144@email.ionos.de> <20190214092530.GA17273@redhat.com> <878a7160-2e91-d057-6d27-c6b9d85f700e@i2se.com> <20190215071226.GA2372@redhat.com> <1411983628.668277.1550315118443@email.ionos.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="KsGdsel6WgEHnImy" Content-Disposition: inline In-Reply-To: <1411983628.668277.1550315118443@email.ionos.de> User-Agent: Mutt/1.8.3 (2017-05-23) X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Sat, 16 Feb 2019 14:07:56 +0000 (UTC) Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org --KsGdsel6WgEHnImy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sat, Feb 16, 2019 at 12:05:18PM +0100, Stefan Wahren wrote: > sorry for the delay, but i do this all in my spare time. Stefan, thanks for sacrifing your spare time for testing this! > The results for your recent patch series are better (no firmware timeout), but still no working wifi and still a warning: > https://gist.github.com/lategoodbye/c4864e446821717419cbe65df07f8d8d > > I've identified the reason for the warning in dwc2: > > /* > * We assume that DMA is always aligned in non-split > * case or split out case. Warn if not. > */ > WARN_ON_ONCE(hsotg->params.host_dma && (chan->xfer_dma & 0x3)); I think I understand why that happen, we first allocate 1024 mcu buffer then standard 4096 rx buffers, that couse 4096 buffers are not contained in single page and need split by dwc2 driver. Attached patch should fix this, plese test, thanks in advance. > Btw i can confirm a regression was introduced after 4.19, because in 4.19 there was no firmware timeout but even no working wifi: You ment 'no working wifi' or 'working wifi'? Stanislaw --KsGdsel6WgEHnImy Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0004-mt76usb-allocate-page-contained-rx-buffers.patch" >From 35dadd09bd3193b33b10f56e0210da680c6d915f Mon Sep 17 00:00:00 2001 From: Stanislaw Gruszka Date: Sat, 16 Feb 2019 14:53:19 +0100 Subject: [PATCH] mt76usb: allocate page contained rx buffers If we first allocate 1024 bytes buffer and then 4096 bytes buffer via page_frag_alloc() the second buffer will be crossing page boundaries what is most likely not appropriate for dma_map_{sg/page} and make buffer split misalign issues on dwc2 usb host driver. Since patch changed arguments of mt76u_buf_alloc() function I also changed name to indicate it is only used for RX allocation. Signed-off-by: Stanislaw Gruszka --- drivers/net/wireless/mediatek/mt76/mt76.h | 5 ++--- drivers/net/wireless/mediatek/mt76/usb.c | 24 ++++++++++-------------- drivers/net/wireless/mediatek/mt76/usb_mcu.c | 4 +--- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h index 364f3571c033..9e24f603664a 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76.h +++ b/drivers/net/wireless/mediatek/mt76/mt76.h @@ -364,7 +364,6 @@ enum mt76u_out_ep { #define MT_SG_MAX_SIZE 8 #define MT_NUM_TX_ENTRIES 256 #define MT_NUM_RX_ENTRIES 128 -#define MCU_RESP_URB_SIZE 1024 struct mt76_usb { struct mutex usb_ctrl_mtx; u8 data[32]; @@ -753,8 +752,8 @@ void mt76u_single_wr(struct mt76_dev *dev, const u8 req, const u16 offset, const u32 val); int mt76u_init(struct mt76_dev *dev, struct usb_interface *intf); void mt76u_deinit(struct mt76_dev *dev); -int mt76u_buf_alloc(struct mt76_dev *dev, struct mt76u_buf *buf, - int nsgs, int len, int sglen, gfp_t gfp); +int mt76u_rx_buf_alloc(struct mt76_dev *dev, struct mt76u_buf *buf, int nsgs, + gfp_t gfp); void mt76u_buf_free(struct mt76u_buf *buf); int mt76u_submit_buf(struct mt76_dev *dev, int dir, int index, struct mt76u_buf *buf, gfp_t gfp, diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c index de906f07e85a..472642ef25a4 100644 --- a/drivers/net/wireless/mediatek/mt76/usb.c +++ b/drivers/net/wireless/mediatek/mt76/usb.c @@ -271,11 +271,11 @@ mt76u_set_endpoints(struct usb_interface *intf, } static int -mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf, - int nsgs, int len, int sglen) +mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf, int nsgs) { struct mt76_queue *q = &dev->q_rx[MT_RXQ_MAIN]; struct urb *urb = buf->urb; + int sglen = SKB_WITH_OVERHEAD(q->buf_size); int i; spin_lock_bh(&q->rx_page_lock); @@ -284,7 +284,7 @@ mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf, void *data; int offset; - data = page_frag_alloc(&q->rx_page, len, GFP_ATOMIC); + data = page_frag_alloc(&q->rx_page, q->buf_size, GFP_ATOMIC); if (!data) break; @@ -309,8 +309,8 @@ mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf, return i ? : -ENOMEM; } -int mt76u_buf_alloc(struct mt76_dev *dev, struct mt76u_buf *buf, - int nsgs, int len, int sglen, gfp_t gfp) +int mt76u_rx_buf_alloc(struct mt76_dev *dev, struct mt76u_buf *buf, + int nsgs, gfp_t gfp) { buf->urb = usb_alloc_urb(0, gfp); if (!buf->urb) @@ -325,7 +325,7 @@ int mt76u_buf_alloc(struct mt76_dev *dev, struct mt76u_buf *buf, buf->dev = dev; buf->num_sgs = nsgs; - return mt76u_fill_rx_sg(dev, buf, nsgs, len, sglen); + return mt76u_fill_rx_sg(dev, buf, nsgs); } void mt76u_buf_free(struct mt76u_buf *buf) @@ -485,7 +485,7 @@ static void mt76u_rx_tasklet(unsigned long data) { struct mt76_dev *dev = (struct mt76_dev *)data; struct mt76_queue *q = &dev->q_rx[MT_RXQ_MAIN]; - int err, nsgs, buf_len = q->buf_size; + int err, nsgs; struct mt76u_buf *buf; rcu_read_lock(); @@ -497,9 +497,7 @@ static void mt76u_rx_tasklet(unsigned long data) nsgs = mt76u_process_rx_entry(dev, buf->urb); if (nsgs > 0) { - err = mt76u_fill_rx_sg(dev, buf, nsgs, - buf_len, - SKB_WITH_OVERHEAD(buf_len)); + err = mt76u_fill_rx_sg(dev, buf, nsgs); if (err < 0) break; } @@ -556,10 +554,8 @@ static int mt76u_alloc_rx(struct mt76_dev *dev) } for (i = 0; i < MT_NUM_RX_ENTRIES; i++) { - err = mt76u_buf_alloc(dev, &q->entry[i].ubuf, - nsgs, q->buf_size, - SKB_WITH_OVERHEAD(q->buf_size), - GFP_KERNEL); + err = mt76u_rx_buf_alloc(dev, &q->entry[i].ubuf, nsgs, + GFP_KERNEL); if (err < 0) return err; } diff --git a/drivers/net/wireless/mediatek/mt76/usb_mcu.c b/drivers/net/wireless/mediatek/mt76/usb_mcu.c index 036be4163e69..7c43738f5a6e 100644 --- a/drivers/net/wireless/mediatek/mt76/usb_mcu.c +++ b/drivers/net/wireless/mediatek/mt76/usb_mcu.c @@ -29,9 +29,7 @@ int mt76u_mcu_init_rx(struct mt76_dev *dev) struct mt76_usb *usb = &dev->usb; int err; - err = mt76u_buf_alloc(dev, &usb->mcu.res, 1, - MCU_RESP_URB_SIZE, MCU_RESP_URB_SIZE, - GFP_KERNEL); + err = mt76u_rx_buf_alloc(dev, &usb->mcu.res, 1, GFP_KERNEL); if (err < 0) return err; -- 2.7.5 --KsGdsel6WgEHnImy--