From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2.tohojo.dk (mail2.tohojo.dk [77.235.48.147]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id D58BE3B25D for ; Fri, 17 Jun 2016 05:17:49 -0400 (EDT) X-Virus-Scanned: amavisd-new at mail2.tohojo.dk DKIM-Filter: OpenDKIM Filter v2.10.3 mail2.tohojo.dk E03C440A3A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=201310; t=1466155067; bh=q4jZilrteNJDVVVBylMlI/ezMHFgXU1CxMaqJimDB6Q=; h=From:To:Cc:Subject:Date:From; b=C44VDj3lZh+Z5MrcUN9fL0VosswmgPJBrJUw2l9nyXbjQKR5zJMNMhNKKqDFWvSXK TMqxldoFJXzDavCdjjTyYoy3ZSHpVKfHFF372T4+g9mHQyhSfAfzGgtLEniwPhTjXU 3h/bJlAqoMH4x5+aF/Gz/yabGhTUnm+0uiOjiZ3w= Received: by alrua-kau.kau.toke.dk (Postfix, from userid 1000) id 3176FC40139; Fri, 17 Jun 2016 11:17:47 +0200 (CEST) From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= To: make-wifi-fast@lists.bufferbloat.net Date: Fri, 17 Jun 2016 11:17:34 +0200 Message-Id: <20160617091736.4730-1-toke@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Make-wifi-fast] [PATCH 0/2] ath9k: Add airtime fairness scheduler X-BeenThere: make-wifi-fast@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2016 09:17:50 -0000 (Re-send to make-wifi-fast list due to a busted MX record). This is the second version of my airtime fairness patch. This version has a somewhat reworked scheduler (now closer to the structure of fq_codel) and a different way to measure RX airtime; and there's a debugfs entry to control which airtime measurements to include in the scheduling decisions. For a simple one-way UDP test, the scheduler achieves pretty much perfect airtime share (by its own measure). There's not much throughput difference in the UDP case, but TCP tests see a moderate improvement. I'll write up something more detailed on the performance measures over the weekend and post it in a separate mail. This patch set is rebased to mac80211-next - which means it no longer includes Michal's patch to disable qdiscs. I have retained my version of Tim's patch to make ath9k use wake_tx_queue in this patch set. That probably needs some work still, but I believe he is working on that. I have not tested extensively with the mac80211 FQ-CoDel patches enabled, but I expect them to be complementary to this. Changes since the RFC version: - The scheduler will now enforce fairness harder. The previous version would refill the deficit of slow stations too fast in some cases. - Change the way RX airtime is measured. For aggregates, the airtime is now calculated as the difference between the rs->rs_tstamp of the first and last frame in the aggregate. For non-aggregates, the previous calculation from the packet size is retained. - There is now an 'airtime_flags' debugfs entry which can be used to control which airtime measures are accounted to the deficit. If bit 0 is set, TX airtime will be accounted, and if bit 1 is set, RX airtime will. If no bits are set, the scheduler will revert to simple round-robin scheduling. The default is enabling both TX and RX. - Squashed the whole thing into one patch and rebased to mac80211-next. Toke H=C3=B8iland-J=C3=B8rgensen (2): ath9k: use mac80211 intermediate software queues ath9k: Add a per-station airtime deficit scheduler drivers/net/wireless/ath/ath9k/ath9k.h | 34 +++- drivers/net/wireless/ath/ath9k/channel.c | 12 +- drivers/net/wireless/ath/ath9k/debug.c | 3 + drivers/net/wireless/ath/ath9k/debug.h | 29 ++++ drivers/net/wireless/ath/ath9k/debug_sta.c | 53 +++++- drivers/net/wireless/ath/ath9k/init.c | 2 + drivers/net/wireless/ath/ath9k/main.c | 7 +- drivers/net/wireless/ath/ath9k/recv.c | 60 +++++++ drivers/net/wireless/ath/ath9k/xmit.c | 255 ++++++++++++++++++++++-= ------ 9 files changed, 386 insertions(+), 69 deletions(-) --=20 2.8.3