All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: Peter Oh <peter.oh@bowerswilkins.com>, linux-wireless@vger.kernel.org
Cc: "Toke Høiland-Jørgensen" <toke@toke.dk>, "Felix Fietkau" <nbd@nbd.name>
Subject: Re: [PATCH] mac80211: don't put null-data frames on the normal TXQ
Date: Wed, 04 Jul 2018 01:48:01 +0200	[thread overview]
Message-ID: <1530661681.4735.51.camel@sipsolutions.net> (raw)
In-Reply-To: <e9813f60-5cf5-a4bf-5906-623282319991@bowerswilkins.com>

On Tue, 2018-07-03 at 13:40 -0700, Peter Oh wrote:
> 
> On 07/03/2018 05:47 AM, Johannes Berg wrote:
> > From: Johannes Berg <johannes.berg@intel.com>
> > 
> > Since (QoS) NDP frames shouldn't be put into aggregation nor are
> > assigned real sequence numbers, etc. it's better to treat them as
> > non-data packets and not put them on the normal TXQs, for example
> > when building A-MPDUs they need to be treated specially,
> 
> To be treated specially at which layer, mac80211 or drivers?

They cannot be put into an A-MPDU, so you need to skip them when
building A-MPDUs.

> Are you seeing any issues other than complexity of handling NDP or is it 
> just improvement?

I'm not actually running any hardware on my development setup that would
use TXQs today. However, I'm starting to work on converting iwlwifi to
it, and if we put the NDPs on there it means we no longer can schedule
the TXQ to a single hardware queue.

Similarly, I think for other drivers it would be a complexity reduction
and possibly performance improvement with aggregation because you no
longer need to check if the next frame is an NDP and if yes, finish the
open A-MPDU and put both frames on the HW queue.

That said, I hadn't looked much at the drivers. Seems the situation is
worse than I thought, with those not doing it so well.

ath10k appears to not do aggregation in the host, and I guess the data
isn't split over multiple queues so the firmware has to determine/buffer
it some other way. No idea how that would work.

I see no evidence of ath9k doing this correctly, so this might fix a bug
there, but I may have missed it.

mt76 also appears to behave erroneously: if the txq is marked with
aggregation it will even update the mtxq->agg_ssn to 0x10 for QoS NDPs,
because those always have seqno 0; in mt76_check_agg_ssn:
	mtxq->agg_ssn = le16_to_cpu(hdr->seq_ctrl) + 0x10;

johannes

  reply	other threads:[~2018-07-03 23:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-03 12:47 [PATCH] mac80211: don't put null-data frames on the normal TXQ Johannes Berg
2018-07-03 14:31 ` Toke Høiland-Jørgensen
2018-07-03 14:32   ` Johannes Berg
2018-07-03 14:36     ` Toke Høiland-Jørgensen
2018-07-03 20:40 ` Peter Oh
2018-07-03 23:48   ` Johannes Berg [this message]
2018-07-04  4:24     ` Ben Greear
2018-07-04  7:12       ` Johannes Berg
2018-07-04  7:26     ` Toke Høiland-Jørgensen
2018-07-04  7:54       ` Johannes Berg
2018-07-04  8:25         ` Toke Høiland-Jørgensen

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1530661681.4735.51.camel@sipsolutions.net \
    --to=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=nbd@nbd.name \
    --cc=peter.oh@bowerswilkins.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.