From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iAX0q-0006vi-F7 for ath10k@lists.infradead.org; Wed, 18 Sep 2019 10:16:41 +0000 MIME-Version: 1.0 Date: Wed, 18 Sep 2019 18:16:38 +0800 From: Yibo Zhao Subject: Re: [PATCH 4/4] mac80211: Sync airtime weight sum with per AC synced sta airtime weight together In-Reply-To: <87impqipl7.fsf@toke.dk> References: <1568639388-27291-1-git-send-email-yiboz@codeaurora.org> <1568639388-27291-4-git-send-email-yiboz@codeaurora.org> <87impqipl7.fsf@toke.dk> Message-ID: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: =?UTF-8?Q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Cc: linux-wireless-owner@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org T24gMjAxOS0wOS0xOCAwNToyNCwgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOgo+IFlp Ym8gWmhhbyA8eWlib3pAY29kZWF1cm9yYS5vcmc+IHdyaXRlczoKPiAKPj4gR2xvYmFsIGFpcnRp bWUgd2VpZ2h0IHN1bSBpcyB1cGRhdGVkIG9ubHkgd2hlbiB0eHEgaXMgYWRkZWQvcmVtb3ZlZAo+ PiBmcm9tIHJidHJlZS4gSWYgdXBwZXIgbGF5ZXIgY29uZmlndXJlcyBzdGEgd2VpZ2h0IGR1cmlu ZyBoaWdoIGxvYWQsCj4+IGFpcnRpbWUgd2VpZ2h0IHN1bSB3aWxsIG5vdCBiZSB1cGRhdGVkIHNp bmNlIHR4cSBpcyBtb3N0IGxpa2VseSBvbiB0aGUKPj4gdHJlZS4gSXQgY291bGQgYSBsaXR0bGUg bGF0ZSBmb3IgdXBwZXIgbGF5ZXIgdG8gcmVjb25maWd1cmUgc3RhIHdlaWdodAo+PiB3aGVuIHR4 cSBpcyBhbHJlYWR5IGluIHRoZSByYnRyZWUuIEFuZCB0aHVzLCBpbmNvcnJlY3QgYWlydGltZSB3 ZWlnaHQgCj4+IHN1bQo+PiB3aWxsIGxlYWQgdG8gaW5jb3JyZWN0IGdsb2JhbCB2aXJ0dWFsIHRp bWUgY2FsY3VsYXRpb24gYXMgd2VsbCBhcyAKPj4gZ2xvYmFsCj4+IGFpcnRpbWUgd2VpZ2h0IHN1 bSBvdmVyZmxvdyBvZiBhaXJ0aW1lIHdlaWdodCBzdW0gZHVyaW5nIHR4cSByZW1vdmVkLgo+PiAK Pj4gSGVuY2UsIG5lZWQgdG8gdXBkYXRlIGFpcnRpbWUgd2VpZ2h0IHN1bSB1cG9uIHJlY2Vpdmlu ZyBldmVudCBmb3IKPj4gY29uZmlndXJpbmcgc3RhIHdlaWdodCBvbmNlIHN0YSdzIHR4cSBpcyBv biB0aGUgcmJ0cmVlLgo+PiAKPj4gQmVzaWRlcywgaWYgYWlydGltZSB3ZWlnaHQgc3VtIG9mIEFD cyBhbmQgc3RhIHdlaWdodCBpcyBzeW5jZWQgdW5kZXIgCj4+IHRoZQo+PiBzYW1lIHBlciBBQyBs b2NrIHByb3RlY3Rpb24sIHRoZXJlIGNhbiBiZSBhIHZlcnkgc2hvcnQgd2luZG93IGNhdXNpbmcK Pj4gaW5jb3JyY3QgYWlydGltZSB3ZWlnaHQgc3VtIGNhbGN1bGF0aW9uIGFzIGJlbG93Ogo+PiAK Pj4gICAgIGFjdGl2ZV90eHFfbG9ja19WTyAgICAgICAgICAgICAgICAgICAgICAgICAgLgo+PiAg ICAgVk8gd2VpZ2h0IHN1bSBpcyBzeW5jZAkJCS4KPj4gICAgIHN0YSBhaXJ0aW1lIHdlaWdodCBz dW0gaXMgc3luY2VkCQkuCj4+ICAgICBhY3RpdmVfdHhxX3VubG9ja19WTwkJCS4KPj4gICAgIC4J CQkJCQkuCj4+ICAgICBhY3RpdmVfdHhxX2xvY2tfVkkgICAgCQkJLgo+PiAgICAgVkkgd2VpZ2h0 IHN1bSBpcyBzeW5jZAkJCS4KPj4gICAgIHN0YSBhaXJ0aW1lIHdlaWdodCBzdW0JCWFjdGl2ZV90 eHFfbG9ja19CRQo+PiAgICAgYWN0aXZlX3R4cV91bmxvY2tfVkkJICAgICAgUmVtb3ZlIHR4cSBh bmQgdGh1cyBzdW0KPj4gICAgIC4JCQkJICAgICAgaXMgY2FsY3VsYXRlZCB3aXRoIHN5bmNlZAo+ PiAgICAgLgkJCQkgICAgICBzdGEgYWlydGltZSB3ZWlnaHQKPj4gICAgIC4JCQkJCWFjdGl2ZV90 eHFfdW5sb2NrX0JFCj4+IAo+PiBTbyBpbnRyb2R1Y2UgYSBwZXIgYWMgc3luY2VkIHN0YXRpb24g YWlydGltZSB3ZWlnaHQgc3luY2VkIHdpdGggcGVyCj4+IEFDIHN5bmNlZCB3ZWlnaHQgc3VtIHRv Z2V0aGVyLiBBbmQgdGhlIHBlci1BQyBzdGF0aW9uIGFpcnRpbWUgd2VpZ2h0Cj4+IGlzIHVzZWQg dG8gY2FsY3VsYXRlIHdlaWdodCBzdW0uCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBZaWJvIFpoYW8g PHlpYm96QGNvZGVhdXJvcmEub3JnPgo+PiAtLS0KPj4gIG5ldC9tYWM4MDIxMS9jZmcuYyAgICAg IHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICBuZXQvbWFjODAyMTEvc3RhX2lu Zm8uYyB8ICA2ICsrKystLQo+PiAgbmV0L21hYzgwMjExL3N0YV9pbmZvLmggfCAgMyArKysKPj4g IG5ldC9tYWM4MDIxMS90eC5jICAgICAgIHwgIDQgKystLQo+PiAgNCBmaWxlcyBjaGFuZ2VkLCAz NCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL25ldC9t YWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuYwo+PiBpbmRleCBkNjVhYTAxLi40YjQy MGJiIDEwMDY0NAo+PiAtLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmMKPj4gKysrIGIvbmV0L21hYzgw MjExL2NmZy5jCj4+IEBAIC0xMjg0LDcgKzEyODQsOCBAQCBzdGF0aWMgaW50IHN0YV9hcHBseV9w YXJhbWV0ZXJzKHN0cnVjdCAKPj4gaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKPj4gIAlpbnQgcmV0 ID0gMDsKPj4gIAlzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDsKPj4gIAlz dHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS0+c2RhdGE7Cj4+IC0JdTMy IG1hc2ssIHNldDsKPj4gKwl1MzIgbWFzaywgc2V0LCB0aWQsIGFjOwo+PiArCXN0cnVjdCB0eHFf aW5mbyAqdHhxaTsKPj4gCj4+ICAJc2JhbmQgPSBpZWVlODAyMTFfZ2V0X3NiYW5kKHNkYXRhKTsK Pj4gIAlpZiAoIXNiYW5kKQo+PiBAQCAtMTQ1Miw4ICsxNDUzLDMwIEBAIHN0YXRpYyBpbnQgc3Rh X2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IAo+PiBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAo+PiAg CWlmIChpZWVlODAyMTFfdmlmX2lzX21lc2goJnNkYXRhLT52aWYpKQo+PiAgCQlzdGFfYXBwbHlf bWVzaF9wYXJhbXMobG9jYWwsIHN0YSwgcGFyYW1zKTsKPj4gCj4+IC0JaWYgKHBhcmFtcy0+YWly dGltZV93ZWlnaHQpCj4+ICsJaWYgKHBhcmFtcy0+YWlydGltZV93ZWlnaHQgJiYKPj4gKwkgICAg cGFyYW1zLT5haXJ0aW1lX3dlaWdodCAhPSBzdGEtPmFpcnRpbWVfd2VpZ2h0KSB7Cj4+ICsJCWZv ciAoYWMgPSAwOyBhYyA8IElFRUU4MDIxMV9OVU1fQUNTOyBhYysrKSB7Cj4+ICsJCQlzcGluX2xv Y2tfYmgoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbYWNdKTsKPj4gKwkJCWZvciAodGlkID0gMDsg dGlkIDwgSUVFRTgwMjExX05VTV9USURTICsgMTsgdGlkKyspIHsKPj4gKwkJCQlpZiAoIXN0YS0+ c3RhLnR4cVt0aWRdIHx8Cj4+ICsJCQkJICAgIGFjICE9IGllZWU4MDIxMV9hY19mcm9tX3RpZCh0 aWQpKQo+PiArCQkJCQljb250aW51ZTsKPj4gKwo+PiArCQkJCXN0YS0+YWlydGltZV93ZWlnaHRf c3luY2VkW2FjXSA9Cj4+ICsJCQkJCQkJcGFyYW1zLT5haXJ0aW1lX3dlaWdodDsKPj4gKwo+PiAr CQkJCXR4cWkgPSB0b190eHFfaW5mbyhzdGEtPnN0YS50eHFbdGlkXSk7Cj4+ICsJCQkJaWYgKFJC X0VNUFRZX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKSkKPj4gKwkJCQkJY29udGludWU7Cj4+ ICsKPj4gKwkJCQlsb2NhbC0+YWlydGltZV93ZWlnaHRfc3VtW2FjXSA9IGxvY2FsLT5haXJ0aW1l X3dlaWdodF9zdW1bYWNdICsKPj4gKwkJCQkJCQkJcGFyYW1zLT5haXJ0aW1lX3dlaWdodCAtCj4+ ICsJCQkJCQkJCXN0YS0+YWlydGltZV93ZWlnaHQ7Cj4+ICsJCQl9Cj4+ICsJCQlzcGluX3VubG9j a19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1thY10pOwo+PiArCQl9Cj4+ICAJCXN0YS0+YWly dGltZV93ZWlnaHQgPSBwYXJhbXMtPmFpcnRpbWVfd2VpZ2h0Owo+IAo+IFdpdGggdGhpcywgYWly dGltZV93ZWlnaHQgaXMgYmFzaWNhbGx5IG9ubHkgdXNlZCB0byByZXR1cm4gdG8gYW5kIGZyb20K PiB1c2Vyc3BhY2UsIHJpZ2h0PyBJLmUuLCBhZnRlciB0aGUgYWJvdmUgbG9vcCBoYXMgcnVuLCBp dCB3aWxsIG1hdGNoIHRoZQo+IGNvbnRlbnRzIG9mIGFpcnRpbWVfd2VpZ2h0X3N5bmNlZDsgc28g d2h5IG5vdCBqdXN0IHR1cm4gYWlydGltZV93ZWlnaHQKPiBpbnRvICBhIHBlci1hYyBhcnJheT8g WW91IGNvdWxkIGp1c3QgdXNlIGFpcnRpbWVfd2VpZ2h0WzBdIGFzIHRoZSB2YWx1ZQo+IHRvIHJl dHVybiB0byB1c2Vyc3BhY2UuLi4KWWVzLCBJIGFsc28gZmVlbCBpdCBpcyBhIGxpdHRsZSB3ZWly ZCB0byBrZWVwIGJvdGggb2YgdGhlbS4gSSBhbSBmaW5lIAp3aXRoIHN1Z2dlc3Rpb24uCgo+IAo+ IC1Ub2tlCgotLSAKWWlibwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYXRoMTBrIG1haWxpbmcgbGlzdAphdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2F0aDEwawo= 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.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS 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 0D9E6C4CEC4 for ; Wed, 18 Sep 2019 10:16:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CFE5A21906 for ; Wed, 18 Sep 2019 10:16:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="mHr/+189"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="mHr/+189" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729478AbfIRKQl (ORCPT ); Wed, 18 Sep 2019 06:16:41 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:50750 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729128AbfIRKQl (ORCPT ); Wed, 18 Sep 2019 06:16:41 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id A7B35602F8; Wed, 18 Sep 2019 10:16:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1568801799; bh=zZmSMI9xJbFedwUxpMliYWUAfGPkhLOmdt4pFKZAJeg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=mHr/+189qXAkrwWGg04pq3DVoPsYsWumJtPmZb2BxIrkX6HDMbnDwZE4zkOq8SYAO bR+MxD8tXP/HyFD5eSDKMGrLEvC9cLPO7I6Cx4eoc/voflx/wf1xl8PYFoR+Wp4BJU DAVJ43xoBwxSiTbCqUsMpLUa+qYj3nGWBGBkSinw= Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.codeaurora.org (Postfix) with ESMTP id E481E6034D; Wed, 18 Sep 2019 10:16:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1568801799; bh=zZmSMI9xJbFedwUxpMliYWUAfGPkhLOmdt4pFKZAJeg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=mHr/+189qXAkrwWGg04pq3DVoPsYsWumJtPmZb2BxIrkX6HDMbnDwZE4zkOq8SYAO bR+MxD8tXP/HyFD5eSDKMGrLEvC9cLPO7I6Cx4eoc/voflx/wf1xl8PYFoR+Wp4BJU DAVJ43xoBwxSiTbCqUsMpLUa+qYj3nGWBGBkSinw= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Wed, 18 Sep 2019 18:16:38 +0800 From: Yibo Zhao To: =?UTF-8?Q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Cc: ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-wireless-owner@vger.kernel.org Subject: Re: [PATCH 4/4] mac80211: Sync airtime weight sum with per AC synced sta airtime weight together In-Reply-To: <87impqipl7.fsf@toke.dk> References: <1568639388-27291-1-git-send-email-yiboz@codeaurora.org> <1568639388-27291-4-git-send-email-yiboz@codeaurora.org> <87impqipl7.fsf@toke.dk> Message-ID: X-Sender: yiboz@codeaurora.org User-Agent: Roundcube Webmail/1.2.5 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On 2019-09-18 05:24, Toke Høiland-Jørgensen wrote: > Yibo Zhao writes: > >> Global airtime weight sum is updated only when txq is added/removed >> from rbtree. If upper layer configures sta weight during high load, >> airtime weight sum will not be updated since txq is most likely on the >> tree. It could a little late for upper layer to reconfigure sta weight >> when txq is already in the rbtree. And thus, incorrect airtime weight >> sum >> will lead to incorrect global virtual time calculation as well as >> global >> airtime weight sum overflow of airtime weight sum during txq removed. >> >> Hence, need to update airtime weight sum upon receiving event for >> configuring sta weight once sta's txq is on the rbtree. >> >> Besides, if airtime weight sum of ACs and sta weight is synced under >> the >> same per AC lock protection, there can be a very short window causing >> incorrct airtime weight sum calculation as below: >> >> active_txq_lock_VO . >> VO weight sum is syncd . >> sta airtime weight sum is synced . >> active_txq_unlock_VO . >> . . >> active_txq_lock_VI . >> VI weight sum is syncd . >> sta airtime weight sum active_txq_lock_BE >> active_txq_unlock_VI Remove txq and thus sum >> . is calculated with synced >> . sta airtime weight >> . active_txq_unlock_BE >> >> So introduce a per ac synced station airtime weight synced with per >> AC synced weight sum together. And the per-AC station airtime weight >> is used to calculate weight sum. >> >> Signed-off-by: Yibo Zhao >> --- >> net/mac80211/cfg.c | 27 +++++++++++++++++++++++++-- >> net/mac80211/sta_info.c | 6 ++++-- >> net/mac80211/sta_info.h | 3 +++ >> net/mac80211/tx.c | 4 ++-- >> 4 files changed, 34 insertions(+), 6 deletions(-) >> >> diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c >> index d65aa01..4b420bb 100644 >> --- a/net/mac80211/cfg.c >> +++ b/net/mac80211/cfg.c >> @@ -1284,7 +1284,8 @@ static int sta_apply_parameters(struct >> ieee80211_local *local, >> int ret = 0; >> struct ieee80211_supported_band *sband; >> struct ieee80211_sub_if_data *sdata = sta->sdata; >> - u32 mask, set; >> + u32 mask, set, tid, ac; >> + struct txq_info *txqi; >> >> sband = ieee80211_get_sband(sdata); >> if (!sband) >> @@ -1452,8 +1453,30 @@ static int sta_apply_parameters(struct >> ieee80211_local *local, >> if (ieee80211_vif_is_mesh(&sdata->vif)) >> sta_apply_mesh_params(local, sta, params); >> >> - if (params->airtime_weight) >> + if (params->airtime_weight && >> + params->airtime_weight != sta->airtime_weight) { >> + for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { >> + spin_lock_bh(&local->active_txq_lock[ac]); >> + for (tid = 0; tid < IEEE80211_NUM_TIDS + 1; tid++) { >> + if (!sta->sta.txq[tid] || >> + ac != ieee80211_ac_from_tid(tid)) >> + continue; >> + >> + sta->airtime_weight_synced[ac] = >> + params->airtime_weight; >> + >> + txqi = to_txq_info(sta->sta.txq[tid]); >> + if (RB_EMPTY_NODE(&txqi->schedule_order)) >> + continue; >> + >> + local->airtime_weight_sum[ac] = local->airtime_weight_sum[ac] + >> + params->airtime_weight - >> + sta->airtime_weight; >> + } >> + spin_unlock_bh(&local->active_txq_lock[ac]); >> + } >> sta->airtime_weight = params->airtime_weight; > > With this, airtime_weight is basically only used to return to and from > userspace, right? I.e., after the above loop has run, it will match the > contents of airtime_weight_synced; so why not just turn airtime_weight > into a per-ac array? You could just use airtime_weight[0] as the value > to return to userspace... Yes, I also feel it is a little weird to keep both of them. I am fine with suggestion. > > -Toke -- Yibo