From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.toke.dk ([2001:470:dc45:1000::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gG2ug-0002KF-Bv for ath10k@lists.infradead.org; Fri, 26 Oct 2018 14:16:36 +0000 From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= Subject: Re: [PATCH 3/6] mac80211: Add airtime accounting and scheduling to TXQs In-Reply-To: <1540033534-11211-4-git-send-email-rmanohar@codeaurora.org> References: <1540033534-11211-1-git-send-email-rmanohar@codeaurora.org> <1540033534-11211-4-git-send-email-rmanohar@codeaurora.org> Date: Fri, 26 Oct 2018 16:16:02 +0200 Message-ID: <8736ssbxp9.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: Rajkumar Manoharan , linux-wireless@vger.kernel.org, ath10k@lists.infradead.org UmFqa3VtYXIgTWFub2hhcmFuIDxybWFub2hhckBjb2RlYXVyb3JhLm9yZz4gd3JpdGVzOgoKPiBG cm9tOiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAdG9rZS5kaz4KPgo+IFRoaXMgYWRk cyBhaXJ0aW1lIGFjY291bnRpbmcgYW5kIHNjaGVkdWxpbmcgdG8gdGhlIG1hYzgwMjExIFRYUQo+ IHNjaGVkdWxlci4gQSBuZXcgY2FsbGJhY2ssIGllZWU4MDIxMV9zdGFfcmVnaXN0ZXJfYWlydGlt ZSgpLCBpcyBhZGRlZAo+IHRoYXQgZHJpdmVycyBjYW4gY2FsbCB0byByZXBvcnQgYWlydGltZSB1 c2FnZSBmb3Igc3RhdGlvbnMuCj4KPiBXaGVuIGFpcnRpbWUgaW5mb3JtYXRpb24gaXMgcHJlc2Vu dCwgbWFjODAyMTEgd2lsbCBzY2hlZHVsZSBUWFFzCj4gKHRocm91Z2ggaWVlZTgwMjExX25leHRf dHhxKCkpIGluIGEgd2F5IHRoYXQgZW5mb3JjZXMgYWlydGltZSBmYWlybmVzcwo+IGJldHdlZW4g YWN0aXZlIHN0YXRpb25zLiBUaGlzIHNjaGVkdWxpbmcgd29ya3MgdGhlIHNhbWUgd2F5IGFzIHRo ZSBhdGg5awo+IGluLWRyaXZlciBhaXJ0aW1lIGZhaXJuZXNzIHNjaGVkdWxpbmcuIElmIG5vIGFp cnRpbWUgdXNhZ2UgaXMgcmVwb3J0ZWQKPiBieSB0aGUgZHJpdmVyLCB0aGUgc2NoZWR1bGVyIHdp bGwgZGVmYXVsdCB0byByb3VuZC1yb2JpbiBzY2hlZHVsaW5nLgo+Cj4gRm9yIGRyaXZlcnMgdGhh dCBkb24ndCBjb250cm9sIFRYUSBzY2hlZHVsaW5nIGluIHNvZnR3YXJlLCBhIG5ldyBBUEkKPiBm dW5jdGlvbiwgaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQoKSwgaXMgYWRkZWQgd2hpY2ggdGhl IGRyaXZlciBjYW4gdXNlCj4gdG8gY2hlY2sgaWYgdGhlIFRYUSBpcyBlbGlnaWJsZSBmb3IgdHJh bnNtaXNzaW9uLCBvciBzaG91bGQgYmUgdGhyb3R0bGVkIHRvCj4gZW5mb3JjZSBmYWlybmVzcy4g Q2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBtdXN0IGFsc28gYmUgZW5jbG9zZWQgaW4KPiBpZWVlODAy MTFfdHhxX3NjaGVkdWxlX3tzdGFydCxlbmR9KCkgY2FsbHMgdG8gZW5zdXJlIHByb3BlciBsb2Nr aW5nLgo+Cj4gVGhlIEFQSSBpZWVlODAyMTFfdHhxX21heV90cmFuc21pdCgpIGFsc28gZW5zdXJl cyB0aGF0IFRYUSBsaXN0IHdpbGwgYmUKPiBhbGlnbmVkIGFnaW5zdCBkcml2ZXIncyBvd24gcm91 bmQtcm9iaW4gc2NoZWR1bGVyIGxpc3QuIGkuZSBpdCByb3RhdGVzCj4gdGhlIFRYUSBsaXN0IHRp bGwgaXQgbWFrZXMgdGhlIHJlcXVlc3RlZCBub2RlIGJlY29tZXMgdGhlIGZpcnN0IGVudHJ5Cj4g aW4gVFhRIGxpc3QuIFRodXMgYm90aCB0aGUgVFhRIGxpc3QgYW5kIGRyaXZlcidzIGxpc3QgYXJl IGluIHN5bmMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRv a2VAdG9rZS5kaz4KPiBTaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBNYW5vaGFyYW4gPHJtYW5vaGFy QGNvZGVhdXJvcmEub3JnPgo+IC0tLQo+ICBpbmNsdWRlL25ldC9tYWM4MDIxMS5oICAgICB8IDU4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBuZXQvbWFjODAyMTEvY2ZnLmMgICAg ICAgICB8ICAzICsrCj4gIG5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmMgICAgIHwgIDMgKysKPiAgbmV0 L21hYzgwMjExL2RlYnVnZnNfc3RhLmMgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKystLQo+ ICBuZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCB8ICAyICsrCj4gIG5ldC9tYWM4MDIxMS9tYWlu LmMgICAgICAgIHwgIDQgKysrCj4gIG5ldC9tYWM4MDIxMS9zdGFfaW5mby5jICAgIHwgNDUgKysr KysrKysrKysrKysrKysrKysrLS0KPiAgbmV0L21hYzgwMjExL3N0YV9pbmZvLmggICAgfCAxMyAr KysrKysrCj4gIG5ldC9tYWM4MDIxMS9zdGF0dXMuYyAgICAgIHwgIDYgKysrKwo+ICBuZXQvbWFj ODAyMTEvdHguYyAgICAgICAgICB8IDkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0KPiAgMTAgZmlsZXMgY2hhbmdlZCwgMjY0IGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9p bmNsdWRlL25ldC9tYWM4MDIxMS5oCj4gaW5kZXggMmY1YzBmYmQ0NTNjLi4wY2VkM2FkYjA5YWMg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+ICsrKyBiL2luY2x1ZGUvbmV0 L21hYzgwMjExLmgKPiBAQCAtMjMzNCw2ICsyMzM0LDggQEAgZW51bSBpZWVlODAyMTFfaHdfZmxh Z3Mgewo+ICAgKiBAdHhfc2tfcGFjaW5nX3NoaWZ0OiBQYWNpbmcgc2hpZnQgdG8gc2V0IG9uIFRD UCBzb2NrZXRzIHdoZW4gZnJhbWVzIGZyb20KPiAgICoJdGhlbSBhcmUgZW5jb3VudGVyZWQuIFRo ZSBkZWZhdWx0IHNob3VsZCB0eXBpY2FsbHkgbm90IGJlIGNoYW5nZWQsCj4gICAqCXVubGVzcyB0 aGUgZHJpdmVyIGhhcyBnb29kIHJlYXNvbnMgZm9yIG5lZWRpbmcgbW9yZSBidWZmZXJzLgo+ICsg Kgo+ICsgKiBAYWlydGltZV93ZWlnaHQ6IERlZmF1bHQgYWlydGltZSB3ZWlnaHQgcHJlZmVycmVk IGJ5IGRyaXZlci4KPiAgICovCj4gIHN0cnVjdCBpZWVlODAyMTFfaHcgewo+ICAJc3RydWN0IGll ZWU4MDIxMV9jb25mIGNvbmY7Cj4gQEAgLTIzNzAsNiArMjM3Miw3IEBAIHN0cnVjdCBpZWVlODAy MTFfaHcgewo+ICAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9jaXBoZXJfc2NoZW1lICpjaXBoZXJf c2NoZW1lczsKPiAgCXU4IG1heF9uYW5fZGVfZW50cmllczsKPiAgCXU4IHR4X3NrX3BhY2luZ19z aGlmdDsKPiArCXUzMiBhaXJ0aW1lX3dlaWdodDsKPiAgfTsKClRoaXMgZG9lc24ndCBtYWtlIHNl bnNlLiBBaXJ0aW1lIHdlaWdodHMgY2FuIGJlIHNldCBieSB1c2Vyc3BhY2UsIHNvCmV2ZW4gaWYg YSBkcml2ZXIgc2V0cyBhbm90aGVyIGRlZmF1bHQgaXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUK aG9ub3VyZWQuIFNvIHdoYXQncyB0aGUgcG9pbnQ/Cgo+ICtib29sIGllZWU4MDIxMV90eHFfbWF5 X3RyYW5zbWl0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAo+ICsJCQkJc3RydWN0IGllZWU4MDIx MV90eHEgKnR4cSkKPiArewo+ICsJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190 b19sb2NhbChodyk7Cj4gKwlzdHJ1Y3QgdHhxX2luZm8gKml0ZXIsICp0bXAsICp0eHFpID0gdG9f dHhxX2luZm8odHhxKTsKPiArCXN0cnVjdCBzdGFfaW5mbyAqc3RhOwo+ICsJdTggYWMgPSB0eHEt PmFjOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tb YWNdKTsKPiArCj4gKwlpZiAoIXR4cWktPnR4cS5zdGEpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJ aWYgKGxpc3RfZW1wdHkoJnR4cWktPnNjaGVkdWxlX29yZGVyKSkKPiArCQlnb3RvIG91dDsKPiAr Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXRlciwgdG1wLCAmbG9jYWwtPmFjdGl2ZV90 eHFzW2FjXSwKPiArCQkJCSBzY2hlZHVsZV9vcmRlcikgewo+ICsJCWlmIChpdGVyID09IHR4cWkp Cj4gKwkJCWJyZWFrOwo+ICsKPiArCQlpZiAoIWl0ZXItPnR4cS5zdGEpIHsKPiArCQkJbGlzdF9t b3ZlX3RhaWwoJml0ZXItPnNjaGVkdWxlX29yZGVyLAo+ICsJCQkJICAgICAgICZsb2NhbC0+YWN0 aXZlX3R4cXNbYWNdKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsJCXN0YSA9IGNvbnRhaW5l cl9vZihpdGVyLT50eHEuc3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7Cj4gKwkJaWYgKHN0YS0+ YWlydGltZVthY10uZGVmaWNpdCA8IDApCj4gKwkJCXN0YS0+YWlydGltZVthY10uZGVmaWNpdCAr PSBzdGEtPmFpcnRpbWVfd2VpZ2h0Owo+ICsJCWxpc3RfbW92ZV90YWlsKCZpdGVyLT5zY2hlZHVs ZV9vcmRlciwgJmxvY2FsLT5hY3RpdmVfdHhxc1thY10pOwo+ICsJfQoKU28gc2luY2Ugd2UncmUg cm90YXRpbmcgdGhlIHF1ZXVlIG9uIGV2ZXJ5IGNhbGwgdG8gdGhlIGZ1bmN0aW9uLCBJJ20Kd29u ZGVyaW5nIGlmIHRoaXMgYWN0dWFsbHkgc3VjY2VlZHMgaW4gdGhyb3R0bGluZyB0aGUgc2xvdyBz dGF0aW9uJ3MKYWlydGltZSB1c2FnZSBlbm91Z2ggdG8gYWNoaWV2ZSBmYWlybmVzcz8gU28gSSds bCBhc2sgYWdhaW46IERpZCB5b3UKdGVzdCB0aGUgZmFpcm5lc3MgcGVyZm9ybWFuY2UsIGFuZCBo b3c/CgoKQWxzbywgdGFraW5nIGEgc3RlcCBiYWNrOgoKV2l0aCB0aGlzLCB3ZSdyZSBkb2luZyBs b3RzIG9mIHdvcmsgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhhcmR3YXJlJ3MKcm91bmQtcm9iaW4g c2NoZWR1bGluZyBxdWV1ZSBsaW5lcyB1cCB3aXRoIG1hYzgwMjExOyBzbyBpZiB3ZSBkbyB0aGlz CmFueXdheSwgd2h5IGNhbid0IHdlIGp1c3QgY29udHJvbCB0aGUgb3JkZXIgZGlyZWN0bHkgZnJv bSBtYWM4MDIxMQood2hpY2ggaXMgd2hhdCB3ZSBkbyB3aXRoIHRoZSBvdGhlciBuZXh0X3R4cSgp IEFQSSk/CgotVG9rZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYXRoMTBrIG1haWxpbmcgbGlzdAphdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2F0aDEwawo= 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_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 B6205C6786E for ; Fri, 26 Oct 2018 14:16:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3568F2085B for ; Fri, 26 Oct 2018 14:16:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=toke.dk header.i=@toke.dk header.b="YgXUP72G" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3568F2085B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=toke.dk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726198AbeJZWxa (ORCPT ); Fri, 26 Oct 2018 18:53:30 -0400 Received: from mail.toke.dk ([52.28.52.200]:33657 "EHLO mail.toke.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726113AbeJZWxa (ORCPT ); Fri, 26 Oct 2018 18:53:30 -0400 From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1540563374; bh=rUHJB8Hin3czoeUn7ehilxSPOpddCtiBXKATwqXpxfM=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=YgXUP72GBzdrnHIXL6KYDm6Pwg/XkuASROcxSevXC2LXo833gR3tC71vj7CyPa7F9 uu467Oaq5g+giC3Tlj2Jg1oQeSfAw3BOmemomu1Ev8e42Y+ibQDK6g0Hriy2n7R/Mw fGWhm6ZugQIjBY/r5MxjB252KORQThKmN4tRnsLySazV2eIEjH19KQTCeJoj6iWSzG YDRuehuuwVA7RnOPl6JqHhhtfKqFF9RVLNo4G3EWhJVC9+B91UH5sGxzwKu0M2OBnm MJ0pAXpPDwId1s87KWbh2/JwWcSKCncXB4G9y15I8t1ZAG2+VQYbvGauhrWoM7Xuak LMxZ+A7/pQZMQ== To: Rajkumar Manoharan , linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Cc: Rajkumar Manoharan Subject: Re: [PATCH 3/6] mac80211: Add airtime accounting and scheduling to TXQs In-Reply-To: <1540033534-11211-4-git-send-email-rmanohar@codeaurora.org> References: <1540033534-11211-1-git-send-email-rmanohar@codeaurora.org> <1540033534-11211-4-git-send-email-rmanohar@codeaurora.org> Date: Fri, 26 Oct 2018 16:16:02 +0200 X-Clacks-Overhead: GNU Terry Pratchett Message-ID: <8736ssbxp9.fsf@toke.dk> MIME-Version: 1.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 Rajkumar Manoharan writes: > From: Toke H=C3=B8iland-J=C3=B8rgensen > > This adds airtime accounting and scheduling to the mac80211 TXQ > scheduler. A new callback, ieee80211_sta_register_airtime(), is added > that drivers can call to report airtime usage for stations. > > When airtime information is present, mac80211 will schedule TXQs > (through ieee80211_next_txq()) in a way that enforces airtime fairness > between active stations. This scheduling works the same way as the ath9k > in-driver airtime fairness scheduling. If no airtime usage is reported > by the driver, the scheduler will default to round-robin scheduling. > > For drivers that don't control TXQ scheduling in software, a new API > function, ieee80211_txq_may_transmit(), is added which the driver can use > to check if the TXQ is eligible for transmission, or should be throttled = to > enforce fairness. Calls to this function must also be enclosed in > ieee80211_txq_schedule_{start,end}() calls to ensure proper locking. > > The API ieee80211_txq_may_transmit() also ensures that TXQ list will be > aligned aginst driver's own round-robin scheduler list. i.e it rotates > the TXQ list till it makes the requested node becomes the first entry > in TXQ list. Thus both the TXQ list and driver's list are in sync. > > Signed-off-by: Toke H=C3=B8iland-J=C3=B8rgensen > Signed-off-by: Rajkumar Manoharan > --- > include/net/mac80211.h | 58 ++++++++++++++++++++++++++++++ > net/mac80211/cfg.c | 3 ++ > net/mac80211/debugfs.c | 3 ++ > net/mac80211/debugfs_sta.c | 50 ++++++++++++++++++++++++-- > net/mac80211/ieee80211_i.h | 2 ++ > net/mac80211/main.c | 4 +++ > net/mac80211/sta_info.c | 45 +++++++++++++++++++++-- > net/mac80211/sta_info.h | 13 +++++++ > net/mac80211/status.c | 6 ++++ > net/mac80211/tx.c | 90 ++++++++++++++++++++++++++++++++++++++++= +++--- > 10 files changed, 264 insertions(+), 10 deletions(-) > > diff --git a/include/net/mac80211.h b/include/net/mac80211.h > index 2f5c0fbd453c..0ced3adb09ac 100644 > --- a/include/net/mac80211.h > +++ b/include/net/mac80211.h > @@ -2334,6 +2334,8 @@ enum ieee80211_hw_flags { > * @tx_sk_pacing_shift: Pacing shift to set on TCP sockets when frames f= rom > * them are encountered. The default should typically not be changed, > * unless the driver has good reasons for needing more buffers. > + * > + * @airtime_weight: Default airtime weight preferred by driver. > */ > struct ieee80211_hw { > struct ieee80211_conf conf; > @@ -2370,6 +2372,7 @@ struct ieee80211_hw { > const struct ieee80211_cipher_scheme *cipher_schemes; > u8 max_nan_de_entries; > u8 tx_sk_pacing_shift; > + u32 airtime_weight; > }; This doesn't make sense. Airtime weights can be set by userspace, so even if a driver sets another default it is not guaranteed to be honoured. So what's the point? > +bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw, > + struct ieee80211_txq *txq) > +{ > + struct ieee80211_local *local =3D hw_to_local(hw); > + struct txq_info *iter, *tmp, *txqi =3D to_txq_info(txq); > + struct sta_info *sta; > + u8 ac =3D txq->ac; > + > + lockdep_assert_held(&local->active_txq_lock[ac]); > + > + if (!txqi->txq.sta) > + goto out; > + > + if (list_empty(&txqi->schedule_order)) > + goto out; > + > + list_for_each_entry_safe(iter, tmp, &local->active_txqs[ac], > + schedule_order) { > + if (iter =3D=3D txqi) > + break; > + > + if (!iter->txq.sta) { > + list_move_tail(&iter->schedule_order, > + &local->active_txqs[ac]); > + continue; > + } > + sta =3D container_of(iter->txq.sta, struct sta_info, sta); > + if (sta->airtime[ac].deficit < 0) > + sta->airtime[ac].deficit +=3D sta->airtime_weight; > + list_move_tail(&iter->schedule_order, &local->active_txqs[ac]); > + } So since we're rotating the queue on every call to the function, I'm wondering if this actually succeeds in throttling the slow station's airtime usage enough to achieve fairness? So I'll ask again: Did you test the fairness performance, and how? Also, taking a step back: With this, we're doing lots of work to make sure that the hardware's round-robin scheduling queue lines up with mac80211; so if we do this anyway, why can't we just control the order directly from mac80211 (which is what we do with the other next_txq() API)? -Toke