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 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 1068ACA9EAC for ; Sat, 19 Oct 2019 11:37:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CD3C921D7C for ; Sat, 19 Oct 2019 11:37:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="NlfOAKI3" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726079AbfJSLhV (ORCPT ); Sat, 19 Oct 2019 07:37:21 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:32631 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725912AbfJSLhU (ORCPT ); Sat, 19 Oct 2019 07:37:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1571485039; 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=Eg6GWygKeYzqmkq+LDj844ZOc9L0SpguuNdAt7HOGwI=; b=NlfOAKI3FLe96FZVC1YmQhPOl5zJ0aMUVlEZnWCkY7aoME9/BNNbbEGXWD/+SPE9GNnZcP hA+pKBXAHcWYyTLAUi43SSk5pBfvKn8QfVM//aTbF/qvrKQ2T6jNCGzfT1CmNlr2xNo0WZ WoPc6tAsNr4G7CoMko4Wbf1TyY6+fqI= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-265-qX6acbbyNWugMVQJS57T7w-1; Sat, 19 Oct 2019 07:37:18 -0400 Received: by mail-lf1-f72.google.com with SMTP id u14so1763721lfi.10 for ; Sat, 19 Oct 2019 04:37:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:date:message-id:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=gQX28cV4kR5e8hFv0Sv15bTp7rYQDznh9B4z2Gx6gas=; b=QWq/LBR60vtjAMAsVZ0iaM4ujEkNuCuGsY3K/nISwswge/2BjgRNI/fJk3hZ1fqsuq URgMfz7EgfbJEf119EGo5YmJN4Dtp3PsJWpUFLOjd8fH4BV+49vlf2dli59Mqd2AbMvr B9rsZtDOL/fQym0Z5oaEWXKQ/kGUueXbhm0dNc1zoKlfs+J8B5oumzY7EOYMSKgl+sjx /QRfXFw739iuVyeIn4dNwYJCblxk5NJ8s1GXL/GQM36EN+YHCy/EoE3jNH/+cbe6SQc/ jJgcueUTdyqshcWQtE7iU6cA3WYvrc7IkvOfu2w+93GFr3SUAT3TdW12NZryrJN1Okcj 2xvg== X-Gm-Message-State: APjAAAUq0RWdqx3lN4OJgmbtF82z2xzA2QRsYb9l/0A1RzyRzWhLa6IB PbpUADnfsM9TR4s3uXsayRG2xhCFHlc8TJFaaYS0ZVYaBXgw8tnZsEwle/DH4aCiJ6s2VrrqFCv b4py5Wvp7qiyQybyNhnvowlQYiRg= X-Received: by 2002:a2e:9890:: with SMTP id b16mr9161984ljj.4.1571485036738; Sat, 19 Oct 2019 04:37:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqyJEjxmojsJP7IanyFe53Iv8Ncd2ZXFdJBhgc/XXnG9JRPPb5VwPEj6BG1t7AJcX3UPrE3L2g== X-Received: by 2002:a2e:9890:: with SMTP id b16mr9161976ljj.4.1571485036534; Sat, 19 Oct 2019 04:37:16 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk ([2a00:7660:6da:443::2]) by smtp.gmail.com with ESMTPSA id i17sm5961865lfj.35.2019.10.19.04.37.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Oct 2019 04:37:15 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 5ED841804C9; Sat, 19 Oct 2019 13:37:15 +0200 (CEST) Subject: [PATCH v4 1/4] mac80211: Shrink the size of ack_frame_id to make room for tx_time_est From: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= To: Johannes Berg Cc: linux-wireless@vger.kernel.org, make-wifi-fast@lists.bufferbloat.net, ath10k@lists.infradead.org, John Crispin , Lorenzo Bianconi , Felix Fietkau , Kan Yan , Rajkumar Manoharan , Kevin Hayes Date: Sat, 19 Oct 2019 13:37:15 +0200 Message-ID: <157148503526.2989444.13871793436722188173.stgit@toke.dk> In-Reply-To: <157148503415.2989444.7391437309981941226.stgit@toke.dk> References: <157148503415.2989444.7391437309981941226.stgit@toke.dk> User-Agent: StGit/0.20 MIME-Version: 1.0 X-MC-Unique: qX6acbbyNWugMVQJS57T7w-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 From: Toke H=C3=B8iland-J=C3=B8rgensen To implement airtime queue limiting, we need to keep a running account of the estimated airtime of all skbs queued into the device. Do to this correctly, we need to store the airtime estimate into the skb so we can decrease the outstanding balance when the skb is freed. This means that the time estimate must be stored somewhere that will survive for the lifetime of the skb. To get this, decrease the size of the ack_frame_id field to 6 bits, and lower the size of the ID space accordingly. This leaves 10 bits for use for tx_time_est, which is enough to store a maximum of 4096 us, if we shift the values so they become units of 4us. Signed-off-by: Toke H=C3=B8iland-J=C3=B8rgensen --- include/net/mac80211.h | 4 +++- net/mac80211/cfg.c | 2 +- net/mac80211/tx.c | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/net/mac80211.h b/include/net/mac80211.h index d69081c38788..4288ace72c2b 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -967,6 +967,7 @@ ieee80211_rate_get_vht_nss(const struct ieee80211_tx_ra= te *rate) * @band: the band to transmit on (use for checking for races) * @hw_queue: HW queue to put the frame on, skb_get_queue_mapping() gives = the AC * @ack_frame_id: internal frame ID for TX status, used internally + * @tx_time_est: TX time estimate in units of 4us, used internally * @control: union part for control data * @control.rates: TX rates array to try * @control.rts_cts_rate_idx: rate for RTS or CTS @@ -1007,7 +1008,8 @@ struct ieee80211_tx_info { =20 =09u8 hw_queue; =20 -=09u16 ack_frame_id; +=09u16 ack_frame_id:6; +=09u16 tx_time_est:10; =20 =09union { =09=09struct { diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 70739e746c13..4fb7f1f12109 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -3428,7 +3428,7 @@ int ieee80211_attach_ack_skb(struct ieee80211_local *= local, struct sk_buff *skb, =20 =09spin_lock_irqsave(&local->ack_status_lock, spin_flags); =09id =3D idr_alloc(&local->ack_status_frames, ack_skb, -=09=09 1, 0x10000, GFP_ATOMIC); +=09=09 1, 0x40, GFP_ATOMIC); =09spin_unlock_irqrestore(&local->ack_status_lock, spin_flags); =20 =09if (id < 0) { diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 938c10f7955b..a16c2f863702 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -2719,7 +2719,7 @@ static struct sk_buff *ieee80211_build_hdr(struct iee= e80211_sub_if_data *sdata, =20 =09=09=09spin_lock_irqsave(&local->ack_status_lock, flags); =09=09=09id =3D idr_alloc(&local->ack_status_frames, ack_skb, -=09=09=09=09 1, 0x10000, GFP_ATOMIC); +=09=09=09=09 1, 0x40, GFP_ATOMIC); =09=09=09spin_unlock_irqrestore(&local->ack_status_lock, flags); =20 =09=09=09if (id >=3D 0) { From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120] helo=us-smtp-1.mimecast.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iLn2w-0003sz-Ux for ath10k@lists.infradead.org; Sat, 19 Oct 2019 11:37:24 +0000 Received: by mail-lf1-f72.google.com with SMTP id v16so35202lfg.18 for ; Sat, 19 Oct 2019 04:37:17 -0700 (PDT) Subject: [PATCH v4 1/4] mac80211: Shrink the size of ack_frame_id to make room for tx_time_est From: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Date: Sat, 19 Oct 2019 13:37:15 +0200 Message-ID: <157148503526.2989444.13871793436722188173.stgit@toke.dk> In-Reply-To: <157148503415.2989444.7391437309981941226.stgit@toke.dk> References: <157148503415.2989444.7391437309981941226.stgit@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: Johannes Berg Cc: Kan Yan , Rajkumar Manoharan , Kevin Hayes , make-wifi-fast@lists.bufferbloat.net, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, John Crispin , Lorenzo Bianconi , Felix Fietkau RnJvbTogVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHJlZGhhdC5jb20+CgpUbyBpbXBs ZW1lbnQgYWlydGltZSBxdWV1ZSBsaW1pdGluZywgd2UgbmVlZCB0byBrZWVwIGEgcnVubmluZyBh Y2NvdW50IG9mCnRoZSBlc3RpbWF0ZWQgYWlydGltZSBvZiBhbGwgc2ticyBxdWV1ZWQgaW50byB0 aGUgZGV2aWNlLiBEbyB0byB0aGlzCmNvcnJlY3RseSwgd2UgbmVlZCB0byBzdG9yZSB0aGUgYWly dGltZSBlc3RpbWF0ZSBpbnRvIHRoZSBza2Igc28gd2UgY2FuCmRlY3JlYXNlIHRoZSBvdXRzdGFu ZGluZyBiYWxhbmNlIHdoZW4gdGhlIHNrYiBpcyBmcmVlZC4gVGhpcyBtZWFucyB0aGF0IHRoZQp0 aW1lIGVzdGltYXRlIG11c3QgYmUgc3RvcmVkIHNvbWV3aGVyZSB0aGF0IHdpbGwgc3Vydml2ZSBm b3IgdGhlIGxpZmV0aW1lCm9mIHRoZSBza2IuCgpUbyBnZXQgdGhpcywgZGVjcmVhc2UgdGhlIHNp emUgb2YgdGhlIGFja19mcmFtZV9pZCBmaWVsZCB0byA2IGJpdHMsIGFuZApsb3dlciB0aGUgc2l6 ZSBvZiB0aGUgSUQgc3BhY2UgYWNjb3JkaW5nbHkuIFRoaXMgbGVhdmVzIDEwIGJpdHMgZm9yIHVz ZSBmb3IKdHhfdGltZV9lc3QsIHdoaWNoIGlzIGVub3VnaCB0byBzdG9yZSBhIG1heGltdW0gb2Yg NDA5NiB1cywgaWYgd2Ugc2hpZnQgdGhlCnZhbHVlcyBzbyB0aGV5IGJlY29tZSB1bml0cyBvZiA0 dXMuCgpTaWduZWQtb2ZmLWJ5OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAcmVkaGF0 LmNvbT4KLS0tCiBpbmNsdWRlL25ldC9tYWM4MDIxMS5oIHwgICAgNCArKystCiBuZXQvbWFjODAy MTEvY2ZnLmMgICAgIHwgICAgMiArLQogbmV0L21hYzgwMjExL3R4LmMgICAgICB8ICAgIDIgKy0K IDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCmlu ZGV4IGQ2OTA4MWMzODc4OC4uNDI4OGFjZTcyYzJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9t YWM4MDIxMS5oCisrKyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKQEAgLTk2Nyw2ICs5NjcsNyBA QCBpZWVlODAyMTFfcmF0ZV9nZXRfdmh0X25zcyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3R4X3Jh dGUgKnJhdGUpCiAgKiBAYmFuZDogdGhlIGJhbmQgdG8gdHJhbnNtaXQgb24gKHVzZSBmb3IgY2hl Y2tpbmcgZm9yIHJhY2VzKQogICogQGh3X3F1ZXVlOiBIVyBxdWV1ZSB0byBwdXQgdGhlIGZyYW1l IG9uLCBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoKSBnaXZlcyB0aGUgQUMKICAqIEBhY2tfZnJhbWVf aWQ6IGludGVybmFsIGZyYW1lIElEIGZvciBUWCBzdGF0dXMsIHVzZWQgaW50ZXJuYWxseQorICog QHR4X3RpbWVfZXN0OiBUWCB0aW1lIGVzdGltYXRlIGluIHVuaXRzIG9mIDR1cywgdXNlZCBpbnRl cm5hbGx5CiAgKiBAY29udHJvbDogdW5pb24gcGFydCBmb3IgY29udHJvbCBkYXRhCiAgKiBAY29u dHJvbC5yYXRlczogVFggcmF0ZXMgYXJyYXkgdG8gdHJ5CiAgKiBAY29udHJvbC5ydHNfY3RzX3Jh dGVfaWR4OiByYXRlIGZvciBSVFMgb3IgQ1RTCkBAIC0xMDA3LDcgKzEwMDgsOCBAQCBzdHJ1Y3Qg aWVlZTgwMjExX3R4X2luZm8gewogCiAJdTggaHdfcXVldWU7CiAKLQl1MTYgYWNrX2ZyYW1lX2lk OworCXUxNiBhY2tfZnJhbWVfaWQ6NjsKKwl1MTYgdHhfdGltZV9lc3Q6MTA7CiAKIAl1bmlvbiB7 CiAJCXN0cnVjdCB7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAy MTEvY2ZnLmMKaW5kZXggNzA3MzllNzQ2YzEzLi40ZmI3ZjFmMTIxMDkgMTAwNjQ0Ci0tLSBhL25l dC9tYWM4MDIxMS9jZmcuYworKysgYi9uZXQvbWFjODAyMTEvY2ZnLmMKQEAgLTM0MjgsNyArMzQy OCw3IEBAIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2Nh bCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsCiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmbG9j YWwtPmFja19zdGF0dXNfbG9jaywgc3Bpbl9mbGFncyk7CiAJaWQgPSBpZHJfYWxsb2MoJmxvY2Fs LT5hY2tfc3RhdHVzX2ZyYW1lcywgYWNrX3NrYiwKLQkJICAgICAgIDEsIDB4MTAwMDAsIEdGUF9B VE9NSUMpOworCQkgICAgICAgMSwgMHg0MCwgR0ZQX0FUT01JQyk7CiAJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmbG9jYWwtPmFja19zdGF0dXNfbG9jaywgc3Bpbl9mbGFncyk7CiAKIAlpZiAoaWQg PCAwKSB7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5j CmluZGV4IDkzOGMxMGY3OTU1Yi4uYTE2YzJmODYzNzAyIDEwMDY0NAotLS0gYS9uZXQvbWFjODAy MTEvdHguYworKysgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtMjcxOSw3ICsyNzE5LDcgQEAgc3Rh dGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFf c3ViX2lmX2RhdGEgKnNkYXRhLAogCiAJCQlzcGluX2xvY2tfaXJxc2F2ZSgmbG9jYWwtPmFja19z dGF0dXNfbG9jaywgZmxhZ3MpOwogCQkJaWQgPSBpZHJfYWxsb2MoJmxvY2FsLT5hY2tfc3RhdHVz X2ZyYW1lcywgYWNrX3NrYiwKLQkJCQkgICAgICAgMSwgMHgxMDAwMCwgR0ZQX0FUT01JQyk7CisJ CQkJICAgICAgIDEsIDB4NDAsIEdGUF9BVE9NSUMpOwogCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmbG9jYWwtPmFja19zdGF0dXNfbG9jaywgZmxhZ3MpOwogCiAJCQlpZiAoaWQgPj0gMCkgewoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmF0aDEwayBt YWlsaW5nIGxpc3QKYXRoMTBrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9hdGgxMGsK