From: Adrian Chadd <adrian@freebsd.org>
To: "Toke Høiland-Jørgensen" <toke@toke.dk>
Cc: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
make-wifi-fast@lists.bufferbloat.net,
ath9k-devel <ath9k-devel@lists.ath9k.org>
Subject: Re: [Make-wifi-fast] [RFC/RFT 5/5] ath9k: Count RX airtime in airtime deficit
Date: Sat, 4 Jun 2016 10:06:08 -0700 [thread overview]
Message-ID: <CAJ-VmonzVQ5Yx6mvnvcT4PKTT7CXRR_Vf=K75da04i8GqrhjfQ@mail.gmail.com> (raw)
In-Reply-To: <20160603165144.17356-6-toke@toke.dk>
hi,
I've been working on something similar in freebsd, so cool to see this
happening here!
The only thing missing atm is STBC and LDPC. My RX airtime code looks
basically like this one too; but I have TODO items for ensuring
LDPC/STBC calculations are sane.
-adrian
On 3 June 2016 at 09:51, Toke Høiland-Jørgensen <toke@toke.dk> wrote:
> This adds RX airtime to the airtime deficit used in the scheduler. This
> is not a definite win, but I have only done very limited testing where
> it has been included. Feel free to skip this patch when testing.
>
> Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
> ---
> drivers/net/wireless/ath/ath9k/recv.c | 51 ++++++++++++++++++++++++++++++++++-
> 1 file changed, 50 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
> index 7eb8980..23d6ebe 100644
> --- a/drivers/net/wireless/ath/ath9k/recv.c
> +++ b/drivers/net/wireless/ath/ath9k/recv.c
> @@ -991,6 +991,55 @@ static void ath9k_apply_ampdu_details(struct ath_softc *sc,
> }
> }
>
> +static void ath_rx_count_airtime(struct ath_softc *sc,
> + struct ath_rx_status *rs,
> + struct sk_buff *skb)
> +{
> + struct ath_node *an;
> + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
> + struct ath_hw *ah = sc->sc_ah;
> + struct ath_common *common = ath9k_hw_common(ah);
> + struct ieee80211_sta *sta;
> + struct ieee80211_rx_status *rxs;
> + const struct ieee80211_rate *rate;
> + bool is_sgi, is_40, is_sp;
> + int phy;
> + u32 airtime = 0;
> +
> + if (!ieee80211_is_data(hdr->frame_control))
> + return;
> +
> + rcu_read_lock();
> +
> + sta = ieee80211_find_sta_by_ifaddr(sc->hw, hdr->addr2, NULL);
> + if (!sta)
> + goto exit;
> + an = (struct ath_node *) sta->drv_priv;
> + rxs = IEEE80211_SKB_RXCB(skb);
> +
> + is_sgi = !!(rxs->flag & RX_FLAG_SHORT_GI);
> + is_40 = !!(rxs->flag & RX_FLAG_40MHZ);
> + is_sp = !!(rxs->flag & RX_FLAG_SHORTPRE);
> +
> + if (!!(rxs->flag & RX_FLAG_HT)) {
> + /* MCS rates */
> +
> + airtime += ath_pkt_duration(sc, rxs->rate_idx, rs->rs_datalen,
> + is_40, is_sgi, is_sp);
> + } else {
> +
> + phy = IS_CCK_RATE(rs->rs_rate) ? WLAN_RC_PHY_CCK : WLAN_RC_PHY_OFDM;
> + rate = &common->sbands[rxs->band].bitrates[rxs->rate_idx];
> + airtime += ath9k_hw_computetxtime(ah, phy, rate->bitrate * 100,
> + rs->rs_datalen, rxs->rate_idx, is_sp);
> + }
> +
> + an->airtime_deficit -= airtime;
> + ath_debug_airtime(sc, an, airtime, 0);
> +exit:
> + rcu_read_unlock();
> +}
> +
> int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
> {
> struct ath_rxbuf *bf;
> @@ -1137,7 +1186,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
> ath9k_antenna_check(sc, &rs);
> ath9k_apply_ampdu_details(sc, &rs, rxs);
> ath_debug_rate_stats(sc, &rs, skb);
> - ath_debug_rx_airtime(sc, &rs, skb);
> + ath_rx_count_airtime(sc, &rs, skb);
>
> hdr = (struct ieee80211_hdr *)skb->data;
> if (ieee80211_is_ack(hdr->frame_control))
> --
> 2.7.4
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-06-04 17:06 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-03 16:51 [Make-wifi-fast] [RFC/RFT 0/5] Adding an airtime fairness scheduler to ath9k Toke Høiland-Jørgensen
2016-06-03 16:51 ` [Make-wifi-fast] [RFC/RFT 1/5] mac80211: skip netdev queue control with software queuing Toke Høiland-Jørgensen
2016-06-06 2:26 ` Julian Calaby
2016-06-06 17:00 ` Toke Høiland-Jørgensen
2016-06-03 16:51 ` [Make-wifi-fast] [RFC/RFT 2/5] ath9k: use mac80211 intermediate software queues Toke Høiland-Jørgensen
2016-06-03 16:51 ` [Make-wifi-fast] [RFC/RFT 3/5] ath9k: Add airstame stats to per-station debugfs Toke Høiland-Jørgensen
2016-06-03 16:51 ` [Make-wifi-fast] [RFC/RFT 4/5] ath9k: Add a per-station airtime deficit scheduler Toke Høiland-Jørgensen
2016-06-03 16:51 ` [Make-wifi-fast] [RFC/RFT 5/5] ath9k: Count RX airtime in airtime deficit Toke Høiland-Jørgensen
2016-06-04 17:06 ` Adrian Chadd [this message]
2016-06-05 10:55 ` Toke Høiland-Jørgensen
2016-06-05 17:23 ` Adrian Chadd
2016-06-07 0:01 ` Adrian Chadd
2016-06-07 1:31 ` Jonathan Morton
2016-06-07 8:58 ` Toke Høiland-Jørgensen
2016-06-07 11:12 ` Toke Høiland-Jørgensen
2016-06-08 1:41 ` Adrian Chadd
2016-06-08 13:06 ` Toke Høiland-Jørgensen
2016-06-10 8:40 ` Michal Kazior
2016-06-10 8:53 ` Toke Høiland-Jørgensen
2016-06-10 9:02 ` Michal Kazior
2016-06-10 9:08 ` Toke Høiland-Jørgensen
2016-06-10 9:20 ` Michal Kazior
2016-06-10 9:49 ` Toke Høiland-Jørgensen
2016-06-10 15:33 ` Toke Høiland-Jørgensen
2016-06-10 15:52 ` Adrian Chadd
2016-06-04 15:24 ` [Make-wifi-fast] [RFC/RFT 0/5] Adding an airtime fairness scheduler to ath9k Luca Muscariello
2016-06-05 10:51 ` Toke Høiland-Jørgensen
2016-06-05 11:40 ` Luca Muscariello
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
List information: https://lists.bufferbloat.net/postorius/lists/make-wifi-fast.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAJ-VmonzVQ5Yx6mvnvcT4PKTT7CXRR_Vf=K75da04i8GqrhjfQ@mail.gmail.com' \
--to=adrian@freebsd.org \
--cc=ath9k-devel@lists.ath9k.org \
--cc=linux-wireless@vger.kernel.org \
--cc=make-wifi-fast@lists.bufferbloat.net \
--cc=toke@toke.dk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox