From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from us-smtp-2.mimecast.com ([205.139.110.61] helo=us-smtp-delivery-1.mimecast.com) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iAKkF-0007gB-8j for ath10k@lists.infradead.org; Tue, 17 Sep 2019 21:10:45 +0000 Received: by mail-ed1-f71.google.com with SMTP id ca13so2973513edb.10 for ; Tue, 17 Sep 2019 14:10:38 -0700 (PDT) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= Subject: Re: [PATCH 2/4] mac80211: defer txqs removal from rbtree In-Reply-To: <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> References: <1568639388-27291-1-git-send-email-yiboz@codeaurora.org> <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> Date: Tue, 17 Sep 2019 23:10:35 +0200 Message-ID: <87pnjyiq7o.fsf@toke.dk> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: Yibo Zhao , ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org WWlibyBaaGFvIDx5aWJvekBjb2RlYXVyb3JhLm9yZz4gd3JpdGVzOgoKPiBJbiBhIGxvb3AgdHhx cyBkZXF1ZXVlIHNjZW5hcmlvLCBpZiB0aGUgZmlyc3QgdHhxIGluIHRoZSByYnRyZWUgZ2V0cwo+ IHJlbW92ZWQgZnJvbSByYnRyZWUgaW1tZWRpYXRlbHkgaW4gdGhlIGllZWU4MDIxMV9yZXR1cm5f dHhxKCksIHRoZQo+IGxvb3Agd2lsbCBicmVhayBzb29uIGluIHRoZSBpZWVlODAyMTFfbmV4dF90 eHEoKSBkdWUgdG8gc2NoZWR1bGVfcG9zCj4gbm90IGxlYWRpbmcgdG8gdGhlIHNlY29uZCB0eHEg aW4gdGhlIHJidHJlZS4gVGh1cywgZGVmZXJpbmcgdGhlCj4gcmVtb3ZhbCByaWdodCBiZWZvcmUg dGhlIGVuZCBvZiB0aGlzIHNjaGVkdWxlIHJvdW5kLgo+Cj4gQ28tZGV2ZWxvcGVkLWJ5OiBZaWJv IFpoYW8gPHlpYm96QGNvZGVhdXJvcmEub3JnPgo+IFNpZ25lZC1vZmYtYnk6IFlpYm8gWmhhbyA8 eWlib3pAY29kZWF1cm9yYS5vcmc+Cj4gU2lnbmVkLW9mZi1ieTogVG9rZSBIw7hpbGFuZC1Kw7hy Z2Vuc2VuIDx0b2tlQHRva2UuZGs+CgpJIGRpZG4ndCB3cml0ZSB0aGlzIHBhdGNoLCBzbyBwbGVh c2UgZG9uJ3QgdXNlIG15IHNpZ24tb2ZmLiBJJ2xsIGFkZAphY2sgb3IgcmV2aWV3IHRhZ3MgYXMg YXBwcm9wcmlhdGUgaW4gcmVwbHk7IGJ1dCBhIGZldyBjb21tZW50cyBmaXJzdDoKCj4gLS0tCj4g IGluY2x1ZGUvbmV0L21hYzgwMjExLmggICAgIHwgMTYgKysrKysrKysrKy0tCj4gIG5ldC9tYWM4 MDIxMS9pZWVlODAyMTFfaS5oIHwgIDMgKysrCj4gIG5ldC9tYWM4MDIxMS9tYWluLmMgICAgICAg IHwgIDYgKysrKysKPiAgbmV0L21hYzgwMjExL3R4LmMgICAgICAgICAgfCA2MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwg ODMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+IGluZGV4IGFjMmVkOGUu LmJhNWEzNDUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+ICsrKyBiL2lu Y2x1ZGUvbmV0L21hYzgwMjExLmgKPiBAQCAtOTI1LDYgKzkyNSw4IEBAIHN0cnVjdCBpZWVlODAy MTFfdHhfcmF0ZSB7Cj4gIAo+ICAjZGVmaW5lIElFRUU4MDIxMV9NQVhfVFhfUkVUUlkJCTMxCj4g IAo+ICsjZGVmaW5lIElFRUU4MDIxMV9BSVJUSU1FX1RYUV9STV9DSEtfSU5UVl9JTl9NUyAxMDAK PiArCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcmF0ZV9zZXRfdmh0KHN0cnVjdCBp ZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSwKPiAgCQkJCQkgIHU4IG1jcywgdTggbnNzKQo+ICB7Cj4g QEAgLTYyMzIsNyArNjIzNCw4IEBAIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1 ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiAgICogQGFjOiBBQyBudW1iZXIgdG8gcmV0dXJu IHBhY2tldHMgZnJvbS4KPiAgICoKPiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJldHdlZW4g Y2FsbHMgdG8gaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCgpCj4gLSAqIGFuZCBpZWVlODAy MTFfdHhxX3NjaGVkdWxlX2VuZCgpLgo+ICsgKiBhbmQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9l bmQoKS4gSWYgdGhlIHR4cSBpcyBlbXB0eSwgaXQgd2lsbCBiZSBhZGRlZAo+ICsgKiB0byBhIHJl bW92ZSBsaXN0IGFuZCBnZXQgcmVtb3ZlZCBsYXRlci4KPiAgICogUmV0dXJucyB0aGUgbmV4dCB0 eHEgaWYgc3VjY2Vzc2Z1bCwgJU5VTEwgaWYgbm8gcXVldWUgaXMgZWxpZ2libGUuIElmIGEgdHhx Cj4gICAqIGlzIHJldHVybmVkLCBpdCBzaG91bGQgYmUgcmV0dXJuZWQgd2l0aCBpZWVlODAyMTFf cmV0dXJuX3R4cSgpIGFmdGVyIHRoZQo+ICAgKiBkcml2ZXIgaGFzIGZpbmlzaGVkIHNjaGVkdWxp bmcgaXQuCj4gQEAgLTYyNjgsNyArNjI3MSw4IEBAIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVs ZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpCj4gICAqIEBodzogcG9pbnRl ciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxvY19odygpCj4gICAqIEBhYzogQUMgbnVt YmVyIHRvIGFjcXVpcmUgbG9ja3MgZm9yCj4gICAqCj4gLSAqIFJlbGVhc2UgbG9ja3MgcHJldmlv dXNseSBhY3F1aXJlZCBieSBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2VuZCgpLgo+ICsgKiBSZWxl YXNlIGxvY2tzIHByZXZpb3VzbHkgYWNxdWlyZWQgYnkgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9l bmQoKS4gQ2hlY2sKPiArICogYW5kIHJlbW92ZSB0aGUgZW1wdHkgdHhxIGZyb20gcmItdHJlZS4K PiAgICovCj4gIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoc3RydWN0IGllZWU4MDIx MV9odyAqaHcsIHU4IGFjKQo+ICAJX19yZWxlYXNlcyh0eHFfbG9jayk7Cj4gQEAgLTYyODcsNiAr NjI5MSwxNCBAQCB2b2lkIGllZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9o dyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCj4gIAlfX2FjcXVpcmVzKHR4cV9sb2Nr KSBfX3JlbGVhc2VzKHR4cV9sb2NrKTsKPiAgCj4gIC8qKgo+ICsgKiBpZWVlODAyMTFfdHhxc19j aGVjayAtIENoZWNrIHR4cXMgd2FpdGluZyBmb3IgcmVtb3ZhbAo+ICsgKgo+ICsgKiBAdG1yOiBw b2ludGVyIGFzIG9idGFpbmVkIGZyb20gbG9jYWwKPiArICoKPiArICovCj4gK3ZvaWQgaWVlZTgw MjExX3R4cXNfY2hlY2soc3RydWN0IHRpbWVyX2xpc3QgKnRtcik7Cj4gKwo+ICsvKioKPiAgICog aWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQgLSBjaGVjayB3aGV0aGVyIFRYUSBpcyBhbGxvd2Vk IHRvIHRyYW5zbWl0Cj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayB3 aGV0aGVyIGdpdmVuIHR4cSBpcyBhbGxvd2VkIHRvIHRyYW5zbWl0IGJ5Cj4gZGlmZiAtLWdpdCBh L25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgK PiBpbmRleCBhNDU1NmY5Li40OWFhMTQzZSAxMDA2NDQKPiAtLS0gYS9uZXQvbWFjODAyMTEvaWVl ZTgwMjExX2kuaAo+ICsrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCj4gQEAgLTg0Nyw2 ICs4NDcsNyBAQCBzdHJ1Y3QgdHhxX2luZm8gewo+ICAJc3RydWN0IGNvZGVsX3N0YXRzIGNzdGF0 czsKPiAgCXN0cnVjdCBza19idWZmX2hlYWQgZnJhZ3M7Cj4gIAlzdHJ1Y3QgcmJfbm9kZSBzY2hl ZHVsZV9vcmRlcjsKPiArCXN0cnVjdCBsaXN0X2hlYWQgY2FuZGlkYXRlOwo+ICAJdW5zaWduZWQg bG9uZyBmbGFnczsKPiAgCj4gIAkvKiBrZWVwIGxhc3QhICovCj4gQEAgLTExNDUsNiArMTE0Niw4 IEBAIHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgewo+ICAJdTY0IGFpcnRpbWVfdl90W0lFRUU4MDIx MV9OVU1fQUNTXTsKPiAgCXU2NCBhaXJ0aW1lX3dlaWdodF9zdW1bSUVFRTgwMjExX05VTV9BQ1Nd Owo+ICAKPiArCXN0cnVjdCBsaXN0X2hlYWQgcmVtb3ZlX2xpc3RbSUVFRTgwMjExX05VTV9BQ1Nd Owo+ICsJc3RydWN0IHRpbWVyX2xpc3QgcmVtb3ZlX3RpbWVyOwo+ICAJdTE2IGFpcnRpbWVfZmxh Z3M7Cj4gIAo+ICAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wczsKPiBkaWZmIC0tZ2l0 IGEvbmV0L21hYzgwMjExL21haW4uYyBiL25ldC9tYWM4MDIxMS9tYWluLmMKPiBpbmRleCBlOWZm YThlLi43OGZlMjRhIDEwMDY0NAo+IC0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmMKPiArKysgYi9u ZXQvbWFjODAyMTEvbWFpbi5jCj4gQEAgLTY2NywxMCArNjY3LDE1IEBAIHN0cnVjdCBpZWVlODAy MTFfaHcgKmllZWU4MDIxMV9hbGxvY19od19ubShzaXplX3QgcHJpdl9kYXRhX2xlbiwKPiAgCj4g IAlmb3IgKGkgPSAwOyBpIDwgSUVFRTgwMjExX05VTV9BQ1M7IGkrKykgewo+ICAJCWxvY2FsLT5h Y3RpdmVfdHhxc1tpXSA9IFJCX1JPT1RfQ0FDSEVEOwo+ICsJCUlOSVRfTElTVF9IRUFEKCZsb2Nh bC0+cmVtb3ZlX2xpc3RbaV0pOwo+ICAJCXNwaW5fbG9ja19pbml0KCZsb2NhbC0+YWN0aXZlX3R4 cV9sb2NrW2ldKTsKPiAgCX0KPiAgCWxvY2FsLT5haXJ0aW1lX2ZsYWdzID0gQUlSVElNRV9VU0Vf VFggfCBBSVJUSU1FX1VTRV9SWDsKPiAgCj4gKwl0aW1lcl9zZXR1cCgmbG9jYWwtPnJlbW92ZV90 aW1lciwgaWVlZTgwMjExX3R4cXNfY2hlY2ssIDApOwo+ICsJbW9kX3RpbWVyKCZsb2NhbC0+cmVt b3ZlX3RpbWVyLAo+ICsJCSAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSUVFRTgwMjExX0FJ UlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01TKSk7Cj4gKwo+ICAJSU5JVF9MSVNUX0hFQUQoJmxv Y2FsLT5jaGFuY3R4X2xpc3QpOwo+ICAJbXV0ZXhfaW5pdCgmbG9jYWwtPmNoYW5jdHhfbXR4KTsK PiAgCj4gQEAgLTEzMDUsNiArMTMxMCw3IEBAIHZvaWQgaWVlZTgwMjExX3VucmVnaXN0ZXJfaHco c3RydWN0IGllZWU4MDIxMV9odyAqaHcpCj4gIAl0YXNrbGV0X2tpbGwoJmxvY2FsLT50eF9wZW5k aW5nX3Rhc2tsZXQpOwo+ICAJdGFza2xldF9raWxsKCZsb2NhbC0+dGFza2xldCk7Cj4gIAo+ICsJ ZGVsX3RpbWVyX3N5bmMoJmxvY2FsLT5yZW1vdmVfdGltZXIpOwo+ICAjaWZkZWYgQ09ORklHX0lO RVQKPiAgCXVucmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoJmxvY2FsLT5pZmFfbm90aWZpZXIp Owo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAy MTEvdHguYwo+IGluZGV4IGQwMGJhYWEuLjQyY2EwMTAgMTAwNjQ0Cj4gLS0tIGEvbmV0L21hYzgw MjExL3R4LmMKPiArKysgYi9uZXQvbWFjODAyMTEvdHguYwo+IEBAIC0xNDUwLDYgKzE0NTAsNyBA QCB2b2lkIGllZWU4MDIxMV90eHFfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpz ZGF0YSwKPiAgCWNvZGVsX3N0YXRzX2luaXQoJnR4cWktPmNzdGF0cyk7Cj4gIAlfX3NrYl9xdWV1 ZV9oZWFkX2luaXQoJnR4cWktPmZyYWdzKTsKPiAgCVJCX0NMRUFSX05PREUoJnR4cWktPnNjaGVk dWxlX29yZGVyKTsKPiArCUlOSVRfTElTVF9IRUFEKCZ0eHFpLT5jYW5kaWRhdGUpOwo+ICAKPiAg CXR4cWktPnR4cS52aWYgPSAmc2RhdGEtPnZpZjsKPiAgCj4gQEAgLTM3MjQsNiArMzcyNSw5IEBA IHZvaWQgaWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiAg Cj4gIAlzcGluX2xvY2tfYmgoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbYWNdKTsKPiAgCj4gKwlp ZiAoIWxpc3RfZW1wdHkoJnR4cWktPmNhbmRpZGF0ZSkpCj4gKwkJbGlzdF9kZWxfaW5pdCgmdHhx aS0+Y2FuZGlkYXRlKTsKPiArCj4gIAlpZiAoIVJCX0VNUFRZX05PREUoJnR4cWktPnNjaGVkdWxl X29yZGVyKSkKPiAgCQlnb3RvIG91dDsKPiAgCj4gQEAgLTM3ODMsNiArMzc4NywyMCBAQCBzdGF0 aWMgdm9pZCBfX2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dywKPiAgCVJCX0NMRUFSX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKTsKPiAgfQo+ICAKPiAr dm9pZCBpZWVlODAyMTFfcmVtb3ZlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiArCQkJ ICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQo+ICt7Cj4gKwlzdHJ1Y3QgaWVlZTgwMjExX2xv Y2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTsKPiArCXN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9 IHRvX3R4cV9pbmZvKHR4cSk7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFj dGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7Cj4gKwo+ICsJaWYgKCFSQl9FTVBUWV9OT0RFKCZ0eHFp LT5zY2hlZHVsZV9vcmRlcikpIHsKPiArCQlfX2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cShodywg dHhxKTsKPiArCQlsaXN0X2RlbF9pbml0KCZ0eHFpLT5jYW5kaWRhdGUpOwo+ICsJfQo+ICt9Cj4g Kwo+ICB2b2lkIGllZWU4MDIxMV91bnNjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dywKPiAgCQkJICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKPiAgCV9fYWNxdWlyZXMo dHhxX2xvY2spIF9fcmVsZWFzZXModHhxX2xvY2spCj4gQEAgLTM3OTAsNyArMzgwOCw3IEBAIHZv aWQgaWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAo+ICAJ c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7Cj4gIAo+ICAJ c3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW3R4cS0+YWNdKTsKPiAtCV9faWVl ZTgwMjExX3Vuc2NoZWR1bGVfdHhxKGh3LCB0eHEpOwo+ICsJaWVlZTgwMjExX3JlbW92ZV90eHEo aHcsIHR4cSk7Cj4gIAlzcGluX3VubG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEt PmFjXSk7Cj4gIH0KPiAgCj4gQEAgLTM4MDMsMTEgKzM4MjEsNDggQEAgdm9pZCBpZWVlODAyMTFf cmV0dXJuX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiAgCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbdHhxLT5hY10pOwo+ICAKPiAgCWlmICghUkJfRU1Q VFlfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpICYmCj4gLQkgICAgKHNrYl9xdWV1ZV9lbXB0 eSgmdHhxaS0+ZnJhZ3MpICYmICF0eHFpLT50aW4uYmFja2xvZ19wYWNrZXRzKSkKPiAtCQlfX2ll ZWU4MDIxMV91bnNjaGVkdWxlX3R4cShodywgdHhxKTsKPiArCQkhdHhxX2hhc19xdWV1ZSgmdHhx aS0+dHhxKSAmJgo+ICsJCWxpc3RfZW1wdHkoJnR4cWktPmNhbmRpZGF0ZSkpCj4gKwkJbGlzdF9h ZGRfdGFpbCgmdHhxaS0+Y2FuZGlkYXRlLCAmbG9jYWwtPnJlbW92ZV9saXN0W3R4cS0+YWNdKTsK PiArCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcmV0dXJuX3R4cSk7Cj4gIAo+ICt2 b2lkIF9faWVlZTgwMjExX2NoZWNrX3R4cXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWws IGludCBhYykKPiArewo+ICsJc3RydWN0IHR4cV9pbmZvICppdGVyLCAqdG1wOwo+ICsJc3RydWN0 IHN0YV9pbmZvICpzdGE7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFjdGl2 ZV90eHFfbG9ja1thY10pOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdGVyLCB0 bXAsICZsb2NhbC0+cmVtb3ZlX2xpc3RbYWNdLAo+ICsJCQkJIGNhbmRpZGF0ZSkgewo+ICsJCXN0 YSA9IGNvbnRhaW5lcl9vZihpdGVyLT50eHEuc3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7Cj4g Kwo+ICsJCWlmICh0eHFfaGFzX3F1ZXVlKCZpdGVyLT50eHEpKQo+ICsJCQlsaXN0X2RlbF9pbml0 KCZpdGVyLT5jYW5kaWRhdGUpOwo+ICsJCWVsc2UKPiArCQkJaWVlZTgwMjExX3JlbW92ZV90eHEo JmxvY2FsLT5odywgJml0ZXItPnR4cSk7Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQgaWVlZTgwMjEx X3R4cXNfY2hlY2soc3RydWN0IHRpbWVyX2xpc3QgKnQpCj4gK3sKPiArCXN0cnVjdCBpZWVlODAy MTFfbG9jYWwgKmxvY2FsID0gZnJvbV90aW1lcihsb2NhbCwgdCwgcmVtb3ZlX3RpbWVyKTsKPiAr CXN0cnVjdCB0eHFfaW5mbyAqaXRlciwgKnRtcDsKPiArCXN0cnVjdCBzdGFfaW5mbyAqc3RhOwo+ ICsJaW50IGFjOwo+ICsKPiArCWZvciAoYWMgPSAwOyBhYyA8IElFRUU4MDIxMV9OVU1fQUNTOyBh YysrKSB7Cj4gKwkJc3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2FjXSk7Cj4g KwkJX19pZWVlODAyMTFfY2hlY2tfdHhxcyhsb2NhbCwgYWMpOwo+ICsJCXNwaW5fdW5sb2NrX2Jo KCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2FjXSk7Cj4gKwl9Cj4gKwo+ICsJbW9kX3RpbWVyKCZs b2NhbC0+cmVtb3ZlX3RpbWVyLAo+ICsJCSAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSUVF RTgwMjExX0FJUlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01TKSk7Cj4gK30KCkknbGwgYXNrIHRo ZSBzYW1lIGFzIEkgZGlkIGxhc3QgdGltZSAod2hlcmUgeW91IHRvbGQgbWUgdG8gaG9sZCBvZmYK dW50aWwgdGhpcyByb3VuZCk6CgpXaHkgZG8geW91IG5lZWQgdGhlIHRpbWVyIGFuZCB0aGUgcGVy aW9kaWMgY2hlY2s/IElmIFRYUXMgYXJlIGFkZGVkIHRvCnRoZSByZW1vdmUgbGlzdCBkdXJpbmcg dGhlIHNjaGVkdWxpbmcgcnVuLCBhbmQgX19pZWVlODAyMTFfY2hlY2tfdHhxcygpCmlzIHJ1biBm cm9tIHNjaGVkdWxlX2VuZCgpLCBpc24ndCB0aGF0IHN1ZmZpY2llbnQgdG8gY2xlYXIgdGhlIGxp c3Q/CgotVG9rZQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmF0aDEwayBtYWlsaW5nIGxpc3QKYXRoMTBrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9hdGgxMGsK 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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 7ECD5C4CECD for ; Tue, 17 Sep 2019 21:10:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3492920862 for ; Tue, 17 Sep 2019 21:10:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Lz2OScOw" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726883AbfIQVKm (ORCPT ); Tue, 17 Sep 2019 17:10:42 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:37014 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726308AbfIQVKm (ORCPT ); Tue, 17 Sep 2019 17:10:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1568754640; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yw5guvCmbDIZYS2d9dmJ48BaCS1JvUmh8f0hK52Gd58=; b=Lz2OScOwef1kyiDWua9sgaA9AsviemufoROmZYidW8TWKgo2DWptnfZw+jk1pBstjoC4XF QYc9jVLPmU1unzNJI83PyqPmh+Tm3gr6AXZFckWZJJxTPsNUHHP1OI9rNR4UQBksZDhPVp 17N5ACQF/Ps7w77NeICuP9ffOTZ/kB8= Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-121-B6lplhG0PkSuutZvfDG_tw-1; Tue, 17 Sep 2019 17:10:38 -0400 Received: by mail-ed1-f72.google.com with SMTP id l11so2974971edv.8 for ; Tue, 17 Sep 2019 14:10:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=DD2XbQDKp4hIc+vyoPDPU9fuPdb+68KPHi8jqJUDZeM=; b=P/l24DziOGXgsG0WZHDPG1cqSC5JHxP+WNc43jPNpgZO2YyXxsdIhXp11p6u8TAC/B vLCMSKlFPCdFktmgBilL/No1EW7BChoohWMV8rqo5WU4L1AMqfIWRRWgbbHjldAxZDZk 8DC+tFCVyvvk9zTshkm+FARFVTNm5SfcDd73ArsQcdn16wahswCcsgZDJTjb69EwvkTY EOwcy+n+0ZGaoNFJVqWFCW7GsDal5veaxFZChq7THtsL8gKd7oomeIE7VIkmTGo8sG/s 0WjLkbrPZDQ/db5u0PQLLCy+eCWViUWGswcfipD3O5qqbn8w+GkIS/Y3/c0ZklUwCqx/ I1Fw== X-Gm-Message-State: APjAAAVvgkjW0kyAuLYz49G3aa3/Vpd3jf5QTdSTAhZBFCkPQUbKPaD7 3iJ5jyMdsFwIRFQOzIz0fnCLyNZm6IcsHQPNmQAvCRp0Ma/eGPiYhcsdE8Xm7xHP6XS/Guskm4J uHQDwT/AkAMVsa0IiEOEDoPj1bKo= X-Received: by 2002:a50:f00c:: with SMTP id r12mr6943374edl.274.1568754637465; Tue, 17 Sep 2019 14:10:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqwhsJPCAI8AWW9ZaFbkYdkRt8z0ZGBhfPh/VuLfeD7KNLwgLMdgon1H8OKWUZkCml1V1MR5Yw== X-Received: by 2002:a50:f00c:: with SMTP id r12mr6943357edl.274.1568754637257; Tue, 17 Sep 2019 14:10:37 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk ([2a00:7660:6da:443::2]) by smtp.gmail.com with ESMTPSA id 4sm406942ejm.47.2019.09.17.14.10.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Sep 2019 14:10:35 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 2A6341800B9; Tue, 17 Sep 2019 23:10:35 +0200 (CEST) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: Yibo Zhao , ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org, Yibo Zhao Subject: Re: [PATCH 2/4] mac80211: defer txqs removal from rbtree In-Reply-To: <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> References: <1568639388-27291-1-git-send-email-yiboz@codeaurora.org> <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 17 Sep 2019 23:10:35 +0200 Message-ID: <87pnjyiq7o.fsf@toke.dk> MIME-Version: 1.0 X-MC-Unique: B6lplhG0PkSuutZvfDG_tw-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Yibo Zhao writes: > In a loop txqs dequeue scenario, if the first txq in the rbtree gets > removed from rbtree immediately in the ieee80211_return_txq(), the > loop will break soon in the ieee80211_next_txq() due to schedule_pos > not leading to the second txq in the rbtree. Thus, defering the > removal right before the end of this schedule round. > > Co-developed-by: Yibo Zhao > Signed-off-by: Yibo Zhao > Signed-off-by: Toke H=C3=B8iland-J=C3=B8rgensen I didn't write this patch, so please don't use my sign-off. I'll add ack or review tags as appropriate in reply; but a few comments first: > --- > include/net/mac80211.h | 16 ++++++++++-- > net/mac80211/ieee80211_i.h | 3 +++ > net/mac80211/main.c | 6 +++++ > net/mac80211/tx.c | 63 ++++++++++++++++++++++++++++++++++++++++= +++--- > 4 files changed, 83 insertions(+), 5 deletions(-) > > diff --git a/include/net/mac80211.h b/include/net/mac80211.h > index ac2ed8e..ba5a345 100644 > --- a/include/net/mac80211.h > +++ b/include/net/mac80211.h > @@ -925,6 +925,8 @@ struct ieee80211_tx_rate { > =20 > #define IEEE80211_MAX_TX_RETRY=09=0931 > =20 > +#define IEEE80211_AIRTIME_TXQ_RM_CHK_INTV_IN_MS 100 > + > static inline void ieee80211_rate_set_vht(struct ieee80211_tx_rate *rate= , > =09=09=09=09=09 u8 mcs, u8 nss) > { > @@ -6232,7 +6234,8 @@ struct sk_buff *ieee80211_tx_dequeue(struct ieee802= 11_hw *hw, > * @ac: AC number to return packets from. > * > * Should only be called between calls to ieee80211_txq_schedule_start() > - * and ieee80211_txq_schedule_end(). > + * and ieee80211_txq_schedule_end(). If the txq is empty, it will be add= ed > + * to a remove list and get removed later. > * Returns the next txq if successful, %NULL if no queue is eligible. If= a txq > * is returned, it should be returned with ieee80211_return_txq() after = the > * driver has finished scheduling it. > @@ -6268,7 +6271,8 @@ void ieee80211_txq_schedule_start(struct ieee80211_= hw *hw, u8 ac) > * @hw: pointer as obtained from ieee80211_alloc_hw() > * @ac: AC number to acquire locks for > * > - * Release locks previously acquired by ieee80211_txq_schedule_end(). > + * Release locks previously acquired by ieee80211_txq_schedule_end(). Ch= eck > + * and remove the empty txq from rb-tree. > */ > void ieee80211_txq_schedule_end(struct ieee80211_hw *hw, u8 ac) > =09__releases(txq_lock); > @@ -6287,6 +6291,14 @@ void ieee80211_schedule_txq(struct ieee80211_hw *h= w, struct ieee80211_txq *txq) > =09__acquires(txq_lock) __releases(txq_lock); > =20 > /** > + * ieee80211_txqs_check - Check txqs waiting for removal > + * > + * @tmr: pointer as obtained from local > + * > + */ > +void ieee80211_txqs_check(struct timer_list *tmr); > + > +/** > * ieee80211_txq_may_transmit - check whether TXQ is allowed to transmit > * > * This function is used to check whether given txq is allowed to transm= it by > diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h > index a4556f9..49aa143e 100644 > --- a/net/mac80211/ieee80211_i.h > +++ b/net/mac80211/ieee80211_i.h > @@ -847,6 +847,7 @@ struct txq_info { > =09struct codel_stats cstats; > =09struct sk_buff_head frags; > =09struct rb_node schedule_order; > +=09struct list_head candidate; > =09unsigned long flags; > =20 > =09/* keep last! */ > @@ -1145,6 +1146,8 @@ struct ieee80211_local { > =09u64 airtime_v_t[IEEE80211_NUM_ACS]; > =09u64 airtime_weight_sum[IEEE80211_NUM_ACS]; > =20 > +=09struct list_head remove_list[IEEE80211_NUM_ACS]; > +=09struct timer_list remove_timer; > =09u16 airtime_flags; > =20 > =09const struct ieee80211_ops *ops; > diff --git a/net/mac80211/main.c b/net/mac80211/main.c > index e9ffa8e..78fe24a 100644 > --- a/net/mac80211/main.c > +++ b/net/mac80211/main.c > @@ -667,10 +667,15 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t p= riv_data_len, > =20 > =09for (i =3D 0; i < IEEE80211_NUM_ACS; i++) { > =09=09local->active_txqs[i] =3D RB_ROOT_CACHED; > +=09=09INIT_LIST_HEAD(&local->remove_list[i]); > =09=09spin_lock_init(&local->active_txq_lock[i]); > =09} > =09local->airtime_flags =3D AIRTIME_USE_TX | AIRTIME_USE_RX; > =20 > +=09timer_setup(&local->remove_timer, ieee80211_txqs_check, 0); > +=09mod_timer(&local->remove_timer, > +=09=09 jiffies + msecs_to_jiffies(IEEE80211_AIRTIME_TXQ_RM_CHK_INTV_IN_= MS)); > + > =09INIT_LIST_HEAD(&local->chanctx_list); > =09mutex_init(&local->chanctx_mtx); > =20 > @@ -1305,6 +1310,7 @@ void ieee80211_unregister_hw(struct ieee80211_hw *h= w) > =09tasklet_kill(&local->tx_pending_tasklet); > =09tasklet_kill(&local->tasklet); > =20 > +=09del_timer_sync(&local->remove_timer); > #ifdef CONFIG_INET > =09unregister_inetaddr_notifier(&local->ifa_notifier); > #endif > diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c > index d00baaa..42ca010 100644 > --- a/net/mac80211/tx.c > +++ b/net/mac80211/tx.c > @@ -1450,6 +1450,7 @@ void ieee80211_txq_init(struct ieee80211_sub_if_dat= a *sdata, > =09codel_stats_init(&txqi->cstats); > =09__skb_queue_head_init(&txqi->frags); > =09RB_CLEAR_NODE(&txqi->schedule_order); > +=09INIT_LIST_HEAD(&txqi->candidate); > =20 > =09txqi->txq.vif =3D &sdata->vif; > =20 > @@ -3724,6 +3725,9 @@ void ieee80211_schedule_txq(struct ieee80211_hw *hw= , > =20 > =09spin_lock_bh(&local->active_txq_lock[ac]); > =20 > +=09if (!list_empty(&txqi->candidate)) > +=09=09list_del_init(&txqi->candidate); > + > =09if (!RB_EMPTY_NODE(&txqi->schedule_order)) > =09=09goto out; > =20 > @@ -3783,6 +3787,20 @@ static void __ieee80211_unschedule_txq(struct ieee= 80211_hw *hw, > =09RB_CLEAR_NODE(&txqi->schedule_order); > } > =20 > +void ieee80211_remove_txq(struct ieee80211_hw *hw, > +=09=09=09 struct ieee80211_txq *txq) > +{ > +=09struct ieee80211_local *local =3D hw_to_local(hw); > +=09struct txq_info *txqi =3D to_txq_info(txq); > + > +=09lockdep_assert_held(&local->active_txq_lock[txq->ac]); > + > +=09if (!RB_EMPTY_NODE(&txqi->schedule_order)) { > +=09=09__ieee80211_unschedule_txq(hw, txq); > +=09=09list_del_init(&txqi->candidate); > +=09} > +} > + > void ieee80211_unschedule_txq(struct ieee80211_hw *hw, > =09=09=09 struct ieee80211_txq *txq) > =09__acquires(txq_lock) __releases(txq_lock) > @@ -3790,7 +3808,7 @@ void ieee80211_unschedule_txq(struct ieee80211_hw *= hw, > =09struct ieee80211_local *local =3D hw_to_local(hw); > =20 > =09spin_lock_bh(&local->active_txq_lock[txq->ac]); > -=09__ieee80211_unschedule_txq(hw, txq); > +=09ieee80211_remove_txq(hw, txq); > =09spin_unlock_bh(&local->active_txq_lock[txq->ac]); > } > =20 > @@ -3803,11 +3821,48 @@ void ieee80211_return_txq(struct ieee80211_hw *hw= , > =09lockdep_assert_held(&local->active_txq_lock[txq->ac]); > =20 > =09if (!RB_EMPTY_NODE(&txqi->schedule_order) && > -=09 (skb_queue_empty(&txqi->frags) && !txqi->tin.backlog_packets)) > -=09=09__ieee80211_unschedule_txq(hw, txq); > +=09=09!txq_has_queue(&txqi->txq) && > +=09=09list_empty(&txqi->candidate)) > +=09=09list_add_tail(&txqi->candidate, &local->remove_list[txq->ac]); > + > } > EXPORT_SYMBOL(ieee80211_return_txq); > =20 > +void __ieee80211_check_txqs(struct ieee80211_local *local, int ac) > +{ > +=09struct txq_info *iter, *tmp; > +=09struct sta_info *sta; > + > +=09lockdep_assert_held(&local->active_txq_lock[ac]); > + > +=09list_for_each_entry_safe(iter, tmp, &local->remove_list[ac], > +=09=09=09=09 candidate) { > +=09=09sta =3D container_of(iter->txq.sta, struct sta_info, sta); > + > +=09=09if (txq_has_queue(&iter->txq)) > +=09=09=09list_del_init(&iter->candidate); > +=09=09else > +=09=09=09ieee80211_remove_txq(&local->hw, &iter->txq); > +=09} > +} > + > +void ieee80211_txqs_check(struct timer_list *t) > +{ > +=09struct ieee80211_local *local =3D from_timer(local, t, remove_timer); > +=09struct txq_info *iter, *tmp; > +=09struct sta_info *sta; > +=09int ac; > + > +=09for (ac =3D 0; ac < IEEE80211_NUM_ACS; ac++) { > +=09=09spin_lock_bh(&local->active_txq_lock[ac]); > +=09=09__ieee80211_check_txqs(local, ac); > +=09=09spin_unlock_bh(&local->active_txq_lock[ac]); > +=09} > + > +=09mod_timer(&local->remove_timer, > +=09=09 jiffies + msecs_to_jiffies(IEEE80211_AIRTIME_TXQ_RM_CHK_INTV_IN_= MS)); > +} I'll ask the same as I did last time (where you told me to hold off until this round): Why do you need the timer and the periodic check? If TXQs are added to the remove list during the scheduling run, and __ieee80211_check_txqs() is run from schedule_end(), isn't that sufficient to clear the list? -Toke