From patchwork Fri Sep 7 22:22:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= X-Patchwork-Id: 10592625 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0B37C14BD for ; Fri, 7 Sep 2018 22:23:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F14AF252D5 for ; Fri, 7 Sep 2018 22:22:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E2EF428516; Fri, 7 Sep 2018 22:22:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 202FC252D5 for ; Fri, 7 Sep 2018 22:22:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726662AbeIHDF6 (ORCPT ); Fri, 7 Sep 2018 23:05:58 -0400 Received: from mail.toke.dk ([52.28.52.200]:35791 "EHLO mail.toke.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726147AbeIHDF5 (ORCPT ); Fri, 7 Sep 2018 23:05:57 -0400 Subject: [PATCH RFC v3 0/4] Move TXQ scheduling into mac80211 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1536358970; bh=zMcd2+EflIzpHa6cRZgdka54xykPUxrB4ps9MHKkL9w=; h=Subject:From:To:Cc:Date:From; b=oYakw5SLNJPhEaAbh+uH2dEnXomp5bigUbupqgLXUKKQRfU4fEX/Ahksqm+DNXkGH 8QdgtVgAJWXDCUpUvklxCwVjzFqM2HoV8cjGVW0uk3DjjHEPp2npIbFRt/D97QoNHp TTj5Vxc9AUro078q4JM9wx4Q0aXnl2B+Z6TL2f62sWJE6P+2NEBU+pTq66SRKwVhNb kapSEYlxRJ+YrFS2tXKxKaPYSzSWJr+VR9W5pM2Cpq9RYAd7h2dOxCIemRKafX9bDw J419CPJlNHC956VWC14B7pZ5ndz+S5D67GaScYvFW8JhSFmnk1Ojap22OMBXn7Oj18 KxJPE4392zW1g== From: Toke =?utf-8?q?H=C3=B8iland-J=C3=B8rgensen?= To: linux-wireless@vger.kernel.org, make-wifi-fast@lists.bufferbloat.net Cc: Rajkumar Manoharan , Felix Fietkau Date: Sat, 08 Sep 2018 00:22:50 +0200 X-Clacks-Overhead: GNU Terry Pratchett Message-ID: <153635803319.14170.10011969968767927187.stgit@alrua-x1> MIME-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This is an updated version of the patch series to move TXQ scheduling and airtime fairness scheduling into mac80211. I've only compile tested this version, but thought it was better to get the conversation moving instead of being blocked on me. This addresses most of the comments from the last round. Specifically: - It folds in Rajkumar's patches to keep per-AC TXQ lists, and to add an API that ath10k can use to check if a TXQ may transmit according even when not using get_next_txq(). I changed a few names and descriptions, but otherwise it's mostly the same. After the discussions we had in the last series, I *think* it will work this way, but I'm not entirely sure. - I got rid of any mention of seqno in next_txq() and schedule_txq() - and removed the third parameter to schedule_txq() entirely, so drivers can no longer signal that a TXQ should be allowed to re-appear in a scheduling round. We can add that back if needed. - Added a helper function to schedule and wake TXQs in a single call, for internal mac80211 use. - Changed the default station weight to 256 and got rid of the per-phy quantum. This makes it possible to lower station weights without having to change the weights of every other station. A few things that were discussed in the last round that I did *not* change: - I did not add any locking around next_txq(); the driver is still supposed to maintain a lock that prevents two threads from trying to schedule the same AC at the same time. This is what drivers already do, so I figured it was easier to just keep it that way rather than do it in mac80211. - I didn't get rid of the register_airtime() callback. As far as I can tell, only iwlwifi uses the tx_time field in the struct tx_info. Which means that we *could* probably use it for this and just make the other drivers set it; but I'm not sure what effects that would have in relation to WMM-AC for those drivers, so I chickened out. Will have to try it out, I guess; but it also depends on whether ath10k needs to be able to report airtime asynchronously anyway. So I'll hold off on that for a bit more. -Toke --- Toke Høiland-Jørgensen (4): mac80211: Add TXQ scheduling API mac80211: Add airtime accounting and scheduling to TXQs cfg80211: Add airtime statistics and settings ath9k: Switch to mac80211 TXQ scheduling and airtime APIs drivers/net/wireless/ath/ath9k/ath9k.h | 14 -- drivers/net/wireless/ath/ath9k/debug.c | 3 drivers/net/wireless/ath/ath9k/debug.h | 8 - drivers/net/wireless/ath/ath9k/debug_sta.c | 54 ------ drivers/net/wireless/ath/ath9k/init.c | 3 drivers/net/wireless/ath/ath9k/recv.c | 9 - drivers/net/wireless/ath/ath9k/xmit.c | 245 ++++++++-------------------- include/net/cfg80211.h | 12 + include/net/mac80211.h | 97 +++++++++++ include/uapi/linux/nl80211.h | 15 ++ net/mac80211/agg-tx.c | 2 net/mac80211/cfg.c | 3 net/mac80211/debugfs.c | 3 net/mac80211/debugfs_sta.c | 42 ++++- net/mac80211/driver-ops.h | 7 + net/mac80211/ieee80211_i.h | 11 + net/mac80211/main.c | 5 + net/mac80211/sta_info.c | 49 +++++- net/mac80211/sta_info.h | 13 + net/mac80211/tx.c | 125 ++++++++++++++ net/wireless/nl80211.c | 25 +++ 21 files changed, 471 insertions(+), 274 deletions(-) X-Clacks-Overhead: GNU Terry Pratchett