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 D88F53B2A2 for ; Fri, 3 Jun 2016 12:52:33 -0400 (EDT) X-Virus-Scanned: amavisd-new at mail2.tohojo.dk DKIM-Filter: OpenDKIM Filter v2.10.3 mail2.tohojo.dk 839AD40B3A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=201310; t=1464972748; bh=CRhzTDXnoDQz0Nr9MGTHLsARuNq9Er7aYLAixgeuSP4=; h=From:To:Cc:Subject:Date:From; b=cuJwh+2fpWIckDJ0ikRm8SXVrsym1GmCFdsF4GJ9s/+MlAvLxmDvWdEuXFicwRSpD 6mpUPAsPDN2CTiRdnItc96Fwq+H33pLMk1XLI8L9L3J0T/+QKhdqEHLwyRJNp8H3ip 0IV24QA/O4uHPzLu6Dyq77shYFLm8srwCZEgzblw= Received: by alrua-kau.kau.toke.dk (Postfix, from userid 1000) id 40099C40158; Fri, 3 Jun 2016 18:52:25 +0200 (CEST) From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= To: linux-wireless@vger.kernel.org, make-wifi-fast@lists.bufferbloat.net, ath9k-devel@lists.ath9k.org Date: Fri, 3 Jun 2016 18:51:39 +0200 Message-Id: <20160603165144.17356-1-toke@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Make-wifi-fast] [RFC/RFT 0/5] Adding an airtime fairness scheduler to ath9k 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, 03 Jun 2016 16:52:34 -0000 This patch set is my first pass at attempting to add an airtime fairness enforcing scheduler to ath9k (for use in access point mode). For some background on this approach and its possible benefits see this paper: https://www.usenix.org/event/usenix04/tech/general/full_papers/tan/tan.pd= f This is still very preliminary work, but I thought I'd post it for comment anyway. Tentatively, it's looking like it gives some improvement, but is by no means perfect in what it is achieving. See https://blog.tohojo.dk/2016/06/a-first-stab-at-an-airtime-fairness-schedu= ler-for-ath9k.html for some graphs of the patch set. I'm seeing roughly a 15% improvement in aggregate throughput in the presence of a slow station. To work, the scheduler needs per-station queueing, so this patch series also includes Michal's patch to not have qdiscs on the interface when wake_tx_queue is present, and Tim's patch to add wake_tx_queue to ath9k. The latter I reworked to not require the global variable renaming, since I found that change to be too confusing after having spent time getting used to the ath9k names for things (I put my own name on this commit and added a second Signed-off-by; apologies if this is not the right way to do things for this kind of rework). The scheduler patch set itself is in three parts: The first patch simply adds airtime accounting and exports it to a per-station debugfs file (which the latest git version of Flent knows how to read). The second patch adds the airtime scheduler using only the TX airtime information. Finally the third patch adds in RX airtime to the deficit used by the scheduler. This last part is not always a win (see the blog post linked above), but I haven't tested it extensively. So feel free to test with or without the last patch. There is some code duplication between the debugfs code and the scheduler which I haven't removed yet to be able to easily switch between having the scheduler use the airtime values and simply accounting them for debugging purposes. Comments and test results very welcome! :) -Toke Michal Kazior (1): mac80211: skip netdev queue control with software queuing Toke H=C3=B8iland-J=C3=B8rgensen (4): ath9k: use mac80211 intermediate software queues ath9k: Add airstame stats to per-station debugfs ath9k: Add a per-station airtime deficit scheduler ath9k: Count RX airtime in airtime deficit. drivers/net/wireless/ath/ath9k/ath9k.h | 27 +++- drivers/net/wireless/ath/ath9k/channel.c | 12 +- drivers/net/wireless/ath/ath9k/debug.h | 29 ++++ drivers/net/wireless/ath/ath9k/debug_sta.c | 144 ++++++++++++++++++- drivers/net/wireless/ath/ath9k/init.c | 1 + drivers/net/wireless/ath/ath9k/main.c | 7 +- drivers/net/wireless/ath/ath9k/recv.c | 50 +++++++ drivers/net/wireless/ath/ath9k/xmit.c | 222 +++++++++++++++++++++++= +----- include/net/mac80211.h | 4 - net/mac80211/ieee80211_i.h | 2 +- net/mac80211/iface.c | 18 ++- net/mac80211/main.c | 3 - net/mac80211/sta_info.c | 2 +- net/mac80211/tx.c | 82 ++++++----- net/mac80211/util.c | 11 +- 15 files changed, 511 insertions(+), 103 deletions(-) --=20 2.7.4