From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 172C13BA8E for ; Tue, 11 Sep 2018 20:07:47 -0400 (EDT) Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 5776F606AC; Wed, 12 Sep 2018 00:07:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1536710866; bh=wzV6nf4ySDAwBySdrHqntNpH/A2ckrz+2j3sybFeWug=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=TG2A8Jlz6LHUhxOcYsWNhmSZBTU7MIsNpBHq6toBh3tmkxDlzUoZ/11Thu8Mr98vo gJ+legLguOwwh/jEgiD1GrufUmZmmormyKCtom5yZhsoZU2MDTX6oTEkDiJJk26yf0 XPwglI6/4glh/mr1tyJsnUoKYvD2gtgQPXo/3xjU= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.codeaurora.org (Postfix) with ESMTP id 9B51A606AC; Wed, 12 Sep 2018 00:07:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1536710865; bh=wzV6nf4ySDAwBySdrHqntNpH/A2ckrz+2j3sybFeWug=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Xh53+nilFg5ITp1rulKU/m/CFv3/LWIhq0/SW2IJErEHscdNr/J+2dnrJlil2oJcP kxdICS/NZk6fSmQUlENbfQxft/DZWqDZcTVBrTqUFTn+bmFdo7y/W4M8C1q2hneUT8 E+aTen9e6VjBER3Jvh+4ej5nY27oY+ReCthU+WTc= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Tue, 11 Sep 2018 17:07:45 -0700 From: Rajkumar Manoharan To: =?UTF-8?Q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Cc: Johannes Berg , linux-wireless@vger.kernel.org, make-wifi-fast@lists.bufferbloat.net, Felix Fietkau In-Reply-To: <87h8ixli4s.fsf@toke.dk> References: <153635803319.14170.10011969968767927187.stgit@alrua-x1> <153635897061.14170.17999956909203163571.stgit@alrua-x1> <1536567496.3224.36.camel@sipsolutions.net> <87h8ixli4s.fsf@toke.dk> Message-ID: X-Sender: rmanohar@codeaurora.org User-Agent: Roundcube Webmail/1.2.5 Subject: Re: [Make-wifi-fast] [PATCH RFC v3 2/4] mac80211: Add airtime accounting and scheduling to TXQs 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: Wed, 12 Sep 2018 00:07:47 -0000 On 2018-09-10 04:13, Toke Høiland-Jørgensen wrote: > Johannes Berg writes: >>> - txqi->flags & (1<>> - txqi->flags & (1<>> - txqi->flags & (1<>> ""); >>> + txqi->flags & (1 << IEEE80211_TXQ_STOP) ? "STOP" : "RUN", >>> + txqi->flags & (1 << IEEE80211_TXQ_AMPDU) ? " AMPDU" : "", >>> + txqi->flags & (1 << IEEE80211_TXQ_NO_AMSDU) ? " NO-AMSDU" >>> : ""); >> >> consider BIT() instead as a cleanup? :) >> >> (or maybe this is just a leftover from merging some other patches?) > > Yeah, this is a merging artifact; Rajkumar's patch added another flag, > that I removed again. Didn't notice that there was still a whitespace > change in this patch... > I added the flag based on our last discussion. The driver needs to check txq status for each tx_dequeue(). One time txq check is not sufficient as it allows the driver to dequeue all frames from txq. drv_func() { while (ieee80211_airtime_may_transmit(txq) && hw_has_space() && (pkt = ieee80211_tx_dequeue(hw, txq))) push_to_hw(pkt); } >>> +bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw, >>> + struct ieee80211_txq *txq) >>> +{ >>> + struct ieee80211_local *local = hw_to_local(hw); >>> + struct txq_info *txqi = to_txq_info(txq); >>> + bool may_tx = false; >>> + >>> + spin_lock_bh(&local->active_txq_lock); >>> + >>> + if (ieee80211_txq_check_deficit(local, txqi)) { >>> + may_tx = true; >>> + list_del_init(&txqi->schedule_order); >> To handle above case, may_transmit should remove the node only when it is in list. if (list_empty(&txqi->schedule_order)) list_del_init(&txqi->schedule_order); So that it can be used to determine whether txq is running negative. -Rajkumar