From: "Toke Høiland-Jørgensen" <toke@toke.dk>
To: Felix Fietkau <nbd@nbd.name>
Cc: "Valo\, Kalle" <kvalo@qca.qualcomm.com>,
"linux-wireless\@vger.kernel.org"
<linux-wireless@vger.kernel.org>
Subject: Re: [PATCH v2] ath9k: Introduce airtime fairness scheduling between stations
Date: Mon, 28 Nov 2016 11:00:17 +0100 [thread overview]
Message-ID: <87mvgjvs9a.fsf@toke.dk> (raw)
In-Reply-To: <4533523f-deb5-69f6-aeb7-f5312285b49e@nbd.name> (Felix Fietkau's message of "Mon, 28 Nov 2016 10:34:11 +0100")
Felix Fietkau <nbd@nbd.name> writes:
> On 2016-11-27 16:58, Toke H=C3=B8iland-J=C3=B8rgensen wrote:
>> "Valo, Kalle" <kvalo@qca.qualcomm.com> writes:
>>=20
>>> (The make-wifi-fast list is annoying as it always spams me when it's on
>>> CC, so dropped it.)
>>>
>>> Toke H=C3=B8iland-J=C3=B8rgensen <toke@toke.dk> writes:
>>>
>>>> This reworks the ath9k driver to schedule transmissions to connected
>>>> stations in a way that enforces airtime fairness between them. It
>>>> accomplishes this by measuring the time spent transmitting to or
>>>> receiving from a station at TX and RX completion, and accounting this =
to
>>>> a per-station, per-QoS level airtime deficit. Then, an FQ-CoDel based
>>>> deficit scheduler is employed at packet dequeue time, to control which
>>>> station gets the next transmission opportunity.
>>>>
>>>> Airtime fairness can significantly improve the efficiency of the netwo=
rk
>>>> when station rates vary. The following throughput values are from a
>>>> simple three-station test scenario, where two stations operate at the
>>>> highest HT20 rate, and one station at the lowest, and the scheduler is
>>>> employed at the access point:
>>>>
>>>> Before / After
>>>> Fast station 1: 19.17 / 25.09 Mbps
>>>> Fast station 2: 19.83 / 25.21 Mbps
>>>> Slow station: 2.58 / 1.77 Mbps
>>>> Total: 41.58 / 52.07 Mbps
>>>>
>>>> The benefit of airtime fairness goes up the more stations are present.
>>>> In a 30-station test with one station artificially limited to 1 Mbps,
>>>> we have seen aggregate throughput go from 2.14 to 17.76 Mbps.
>>>>
>>>> Signed-off-by: Toke H=C3=B8iland-J=C3=B8rgensen <toke@toke.dk>
>>>
>>> [...]
>>>
>>>> +void ath_acq_lock(struct ath_softc *sc, struct ath_acq *acq)
>>>> + __acquires(&acq->lock)
>>>> +{
>>>> + spin_lock_bh(&acq->lock);
>>>> +}
>>>> +
>>>> +void ath_acq_unlock(struct ath_softc *sc, struct ath_acq *acq)
>>>> + __releases(&acq->lock)
>>>> +{
>>>> + spin_unlock_bh(&acq->lock);
>>>> +}
>>>
>>> Why these? To me it looks like they just add an extra function jump and
>>> unneccessary extra layer.
>>=20
>> Well, there's already similar functions for the txq lock (ath_txq_lock()
>> and ath_txq_unlock() in xmit.c), so figured I'd be consistent with
>> those. And also that the __acquires and __releases macros were probably
>> useful.
>>=20
>> Also, won't the compiler automatically inline them?
> Not necessarily, these functions are not static. I think it would be a
> good idea to turn the ath_txq_lock/unlock functions into static inline
> functions as well.
Right, I'll re-send with these functions fixed, and send a separate
patch to fix ath_txq_lock*
> Please don't blindly repeat patterns that are already there, some of
> them might just not make any sense at all ;)
But that would imply that kernel developers are not infallible. Surely
that can't be right? ;)
-Toke
next prev parent reply other threads:[~2016-11-28 10:00 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-17 9:09 [PATCH 0/2] ath9k: Add airtime fairness scheduler Toke Høiland-Jørgensen
2016-06-17 9:09 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-06-17 9:09 ` [PATCH 1/2] ath9k: use mac80211 intermediate software queues Toke Høiland-Jørgensen
2016-06-17 9:09 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-06-17 13:28 ` Felix Fietkau
2016-06-17 13:28 ` Felix Fietkau
2016-06-17 13:41 ` Tim Shepard
2016-06-17 14:08 ` [ath9k-devel] " Tim Shepard
2016-06-17 14:35 ` Felix Fietkau
2016-06-17 14:35 ` Felix Fietkau
2016-06-17 17:45 ` Tim Shepard
2016-06-17 17:45 ` [ath9k-devel] " Tim Shepard
2016-06-17 19:15 ` Toke Høiland-Jørgensen
2016-06-17 19:16 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-06-17 13:43 ` Toke Høiland-Jørgensen
2016-06-17 13:43 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-06-17 13:48 ` Felix Fietkau
2016-06-17 13:48 ` Felix Fietkau
2016-06-17 16:33 ` [ath9k-devel] " Felix Fietkau
2016-06-17 16:33 ` Felix Fietkau
2016-06-17 14:10 ` [ath9k-devel] " Dave Taht
2016-06-17 14:10 ` Dave Taht
2016-06-18 19:05 ` [PATCH] ath9k: Switch to using " Toke Høiland-Jørgensen
2016-06-18 19:06 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-06-19 3:17 ` Tim Shepard
2016-06-19 3:17 ` [ath9k-devel] " Tim Shepard
2016-06-19 8:52 ` Toke Høiland-Jørgensen
2016-06-19 8:52 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-06-19 13:39 ` Tim Shepard
2016-06-19 13:40 ` [ath9k-devel] " Tim Shepard
2016-06-19 13:50 ` Toke Høiland-Jørgensen
2016-06-19 13:50 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-03 3:52 ` Tim Shepard
2016-07-03 3:53 ` [ath9k-devel] " Tim Shepard
2016-07-04 17:46 ` Toke Høiland-Jørgensen
2016-07-04 17:47 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-06 13:23 ` Felix Fietkau
2016-07-06 13:23 ` Felix Fietkau
2016-07-06 14:45 ` Toke Høiland-Jørgensen
2016-07-06 14:46 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-06 16:16 ` [PATCH v2] " Toke Høiland-Jørgensen
2016-07-06 16:17 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-06 17:57 ` Sebastian Gottschall
2016-07-06 18:19 ` [ath9k-devel] " Sebastian Gottschall
2016-07-06 18:13 ` Felix Fietkau
2016-07-06 18:13 ` Felix Fietkau
2016-07-06 18:52 ` Toke Høiland-Jørgensen
2016-07-06 18:52 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-06 18:59 ` Felix Fietkau
2016-07-06 18:59 ` Felix Fietkau
2016-07-06 19:08 ` Toke Høiland-Jørgensen
2016-07-06 19:08 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-06 19:34 ` [PATCH v3] " Toke Høiland-Jørgensen
2016-07-06 19:38 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-08 14:26 ` [ath9k-devel] [v3] " Kalle Valo
2016-07-08 14:26 ` Kalle Valo
2016-07-08 15:53 ` Toke Høiland-Jørgensen
2016-07-08 15:53 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-08 16:10 ` Felix Fietkau
2016-07-08 16:10 ` Felix Fietkau
2016-07-08 16:28 ` Toke Høiland-Jørgensen
2016-07-08 16:28 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-08 16:31 ` Felix Fietkau
2016-07-08 16:31 ` Felix Fietkau
2016-07-08 16:38 ` Toke Høiland-Jørgensen
2016-07-08 16:38 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-08 18:24 ` Sebastian Gottschall
2016-07-08 18:24 ` [ath9k-devel] " Sebastian Gottschall
2016-07-09 12:00 ` Toke Høiland-Jørgensen
2016-07-09 12:00 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-07-08 16:38 ` [PATCH v3] " Tim Shepard
2016-07-08 16:38 ` [ath9k-devel] " Tim Shepard
2016-07-09 15:44 ` Toke Høiland-Jørgensen
2016-07-09 15:45 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-08-05 16:03 ` [PATCH v4] " Toke Høiland-Jørgensen
2016-08-05 16:05 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-08-22 15:43 ` Kalle Valo
2016-08-22 15:43 ` Kalle Valo
2016-08-22 16:16 ` Toke Høiland-Jørgensen
2016-08-22 16:16 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-08-22 17:02 ` Kalle Valo
2016-08-22 17:02 ` Kalle Valo
2016-08-22 17:13 ` Toke Høiland-Jørgensen
2016-08-22 17:13 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-08-23 6:59 ` Kalle Valo
2016-08-23 6:59 ` Kalle Valo
2016-08-23 8:52 ` Arend van Spriel
2016-08-23 8:58 ` [ath9k-devel] " Arend van Spriel
2016-10-05 14:02 ` Toke Høiland-Jørgensen
2016-10-05 14:09 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-10-05 15:50 ` Kalle Valo
2016-10-05 15:50 ` Kalle Valo
2016-10-05 16:55 ` Toke Høiland-Jørgensen
2016-10-05 16:55 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-10-05 17:54 ` Kalle Valo
2016-10-05 17:54 ` Kalle Valo
2016-10-05 19:56 ` Toke Høiland-Jørgensen
2016-10-05 19:56 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-09-02 14:00 ` [PATCH v5] " Toke Høiland-Jørgensen
2016-09-03 10:16 ` Felix Fietkau
2016-10-07 11:43 ` [v5] " Kalle Valo
2016-11-09 2:22 ` Kalle Valo
2016-11-09 2:44 ` Tim Shepard
2016-11-09 10:42 ` Toke Høiland-Jørgensen
2016-11-09 20:07 ` Valo, Kalle
2016-11-09 11:31 ` [PATCH v6] " Toke Høiland-Jørgensen
2016-11-09 22:42 ` [v6] " Kalle Valo
2016-11-09 23:10 ` Toke Høiland-Jørgensen
2016-11-15 15:00 ` Kalle Valo
2016-06-17 9:09 ` [PATCH 2/2] ath9k: Add a per-station airtime deficit scheduler Toke Høiland-Jørgensen
2016-06-17 9:09 ` [ath9k-devel] " Toke Høiland-Jørgensen
2016-11-24 13:54 ` [PATCH v2] ath9k: Introduce airtime fairness scheduling between stations Toke Høiland-Jørgensen
2016-11-25 15:16 ` Valo, Kalle
2016-11-27 15:58 ` Toke Høiland-Jørgensen
2016-11-28 9:34 ` Felix Fietkau
2016-11-28 10:00 ` Toke Høiland-Jørgensen [this message]
2016-11-28 10:12 ` [PATCH v3] " Toke Høiland-Jørgensen
2016-12-15 8:43 ` [v3] " Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mvgjvs9a.fsf@toke.dk \
--to=toke@toke.dk \
--cc=kvalo@qca.qualcomm.com \
--cc=linux-wireless@vger.kernel.org \
--cc=nbd@nbd.name \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.