From: Johannes Berg <johannes@sipsolutions.net>
To: "Toke Høiland-Jørgensen" <toke@toke.dk>
Cc: make-wifi-fast@lists.bufferbloat.net, linux-wireless@vger.kernel.org
Subject: Re: [Make-wifi-fast] [PATCH v9 2/2] mac80211: Move reorder-sensitive TX handlers to after TXQ dequeue
Date: Fri, 30 Sep 2016 14:43:32 +0200 [thread overview]
Message-ID: <1475239412.17481.59.camel@sipsolutions.net> (raw)
In-Reply-To: <87y4295zpy.fsf@toke.dk>
> Because I need to run it anyway for the xmit_fast path on dequeue. I
> thought doing it this way simplifies the code (at the cost of the
> handler getting called twice when xmit_fast is not active).
Ok, that's fair.
> > I *think* it should commute with the rate control handler, but even
> > so, wouldn't it make more sense to have rate control late? Assuming
> > the packets are queued for some amount of time, having rate control
> > information queued with them would get stale.
>
> Yes, having rate control run at dequeue would be good, and that's
> what I did initially. However, I found that this would lead to a
> deadlock because the rate control handler would send out packets in
> some cases (I forget the details but can go back and check if
> needed). And since the dequeue function is called with the driver TXQ
> lock held, that would lead to a deadlock when those packets made it
> to the driver TX path.
That seems really odd, but I can see how a deadlock happens then.
> So I decided to just keep it this way for now; I plan to go poking
> into the rate controller later anyway, so moving the handler to later
> could be part of that.
Sure, that's fair.
> But that handler only sets a few flags? Is
> tx->sdata->control_port_protocol likely to change while the packet is
> queued?
Oh right, I confused things there. We check the controlled port much
earlier, but anyway that should be OK.
> > It's a bit unfortunate that you lose fast-xmit here completely for
> > the key stuff, but I don't see a good way to avoid that, other than
> > completely rejiggering all the (possibly affected) queues when keys
> > change... might be very complex to do that, certainly a follow-up
> > patch if it's desired.
>
> Yeah, figured it was better to have something that's correct and then
> go back and change it if the performance hit turns out to be too
> high.
Makes sense.
> > This check seems a bit weird though - how could fast-xmit be set
> > without a TXQ station?
>
> I think that is probably just left over from before I introduced the
> control flag. Should be fine to remove it.
Ok.
> >
> > >
> > > +++ b/net/mac80211/util.c
> > > @@ -3393,11 +3393,18 @@ void ieee80211_txq_get_depth(struct
> > > ieee80211_txq *txq,
> > > unsigned long *byte_cnt)
> > > {
> > > struct txq_info *txqi = to_txq_info(txq);
> > > + u32 frag_cnt = 0, frag_bytes = 0;
> > > + struct sk_buff *skb;
> > > +
> > > + skb_queue_walk(&txqi->frags, skb) {
> > > + frag_cnt++;
> > > + frag_bytes += skb->len;
> > > + }
> >
> > I hope this is called infrequently :)
>
> Well, ath10k is the only user. It does get called on each
> wake_tx_queue, though, so not that infrequently. My reasoning was
> that since the frags queue is never going to have more than a fairly
> small number of packets in it (those produced from a single split
> packet), counting this way is acceptable instead of keeping a state
> variable up to date. Can change it if you disagree :)
No, I guess you're right, it can't be a long queue.
> Not sure if you want a v10, or if you're satisfied with the above
> comments and will just fix up the nits on merging?
>
I'll fix it up. Thanks!
johannes
next prev parent reply other threads:[~2016-09-30 12:43 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-17 12:58 [Make-wifi-fast] [PATCH] mac80211: Move crypto IV generation " Toke Høiland-Jørgensen
2016-08-17 13:08 ` Johannes Berg
2016-08-17 13:16 ` Toke Høiland-Jørgensen
2016-08-17 13:18 ` Johannes Berg
2016-08-17 13:23 ` Toke Høiland-Jørgensen
2016-08-17 14:45 ` [Make-wifi-fast] [PATCH v2] " Toke Høiland-Jørgensen
2016-08-17 15:47 ` Noah Causin
2016-08-17 22:33 ` Toke Høiland-Jørgensen
2016-08-19 3:06 ` Noah Causin
2016-08-22 14:24 ` Toke Høiland-Jørgensen
2016-08-23 17:06 ` Noah Causin
2016-08-23 17:51 ` Toke Høiland-Jørgensen
2016-08-17 19:49 ` Johannes Berg
2016-08-17 20:07 ` Dave Taht
2016-08-17 20:43 ` Johannes Berg
2016-08-22 14:47 ` Toke Høiland-Jørgensen
2016-08-26 8:38 ` Johannes Berg
2016-08-26 8:54 ` Toke Høiland-Jørgensen
2016-08-24 16:20 ` [Make-wifi-fast] [PATCH v3] mac80211: Move reorder-sensitive TX handlers " Toke Høiland-Jørgensen
2016-08-24 22:40 ` Noah Causin
2016-08-25 12:45 ` Toke Høiland-Jørgensen
2016-08-26 14:30 ` Toke Høiland-Jørgensen
2016-08-26 14:51 ` Dave Taht
2016-08-30 13:15 ` [Make-wifi-fast] [PATCH v4] " Toke Høiland-Jørgensen
2016-08-30 13:17 ` Toke Høiland-Jørgensen
2016-08-31 21:06 ` Johannes Berg
2016-09-01 8:23 ` Toke Høiland-Jørgensen
2016-09-01 8:34 ` Johannes Berg
2016-09-01 8:38 ` Toke Høiland-Jørgensen
2016-09-01 9:07 ` Johannes Berg
2016-09-01 9:20 ` Toke Høiland-Jørgensen
2016-09-01 9:27 ` Johannes Berg
2016-09-01 9:42 ` Toke Høiland-Jørgensen
2016-09-01 16:03 ` [Make-wifi-fast] [PATCH v5] " Toke Høiland-Jørgensen
2016-09-01 17:59 ` Johannes Berg
2016-09-01 18:30 ` Toke Høiland-Jørgensen
2016-09-01 18:35 ` Johannes Berg
2016-09-02 2:48 ` Jason Andryuk
2016-09-02 9:27 ` Toke Høiland-Jørgensen
2016-09-02 13:41 ` [Make-wifi-fast] [PATCH v6] " Toke Høiland-Jørgensen
2016-09-02 14:44 ` Toke Høiland-Jørgensen
2016-09-05 11:30 ` [Make-wifi-fast] [PATCH v7] " Toke Høiland-Jørgensen
2016-09-05 16:06 ` Toke Høiland-Jørgensen
2016-09-05 17:00 ` Dave Taht
2016-09-05 17:26 ` Toke Høiland-Jørgensen
2016-09-05 17:59 ` Dave Taht
2016-09-05 20:23 ` Dave Taht
2016-09-05 20:45 ` Toke Høiland-Jørgensen
2016-09-05 21:02 ` Dave Taht
2016-09-05 21:25 ` Toke Høiland-Jørgensen
2016-09-05 21:29 ` Dave Taht
2016-09-05 21:35 ` Toke Høiland-Jørgensen
2016-09-05 21:42 ` Dave Taht
2016-09-05 22:04 ` Dave Taht
2016-09-05 22:01 ` Toke Høiland-Jørgensen
2016-09-05 22:08 ` Dave Taht
2016-09-05 22:31 ` Dave Taht
2016-09-05 17:49 ` Felix Fietkau
2016-09-05 17:59 ` Toke Høiland-Jørgensen
2016-09-05 18:45 ` Felix Fietkau
2016-09-06 11:43 ` Toke Høiland-Jørgensen
2016-09-06 11:45 ` Toke Høiland-Jørgensen
2016-09-06 11:44 ` [Make-wifi-fast] [PATCH v8] " Toke Høiland-Jørgensen
2016-09-06 22:04 ` Felix Fietkau
2016-09-12 12:35 ` Johannes Berg
2016-09-12 13:08 ` Toke Høiland-Jørgensen
2016-09-12 13:19 ` Johannes Berg
2016-09-22 17:04 ` [Make-wifi-fast] [PATCH v9 0/2] mac80211: TXQ dequeue path rework Toke Høiland-Jørgensen
2016-09-22 17:04 ` [Make-wifi-fast] [PATCH v9 1/2] mac80211: Move ieee802111_tx_dequeue() to later in tx.c Toke Høiland-Jørgensen
2016-09-30 11:13 ` Johannes Berg
2016-09-22 17:04 ` [Make-wifi-fast] [PATCH v9 2/2] mac80211: Move reorder-sensitive TX handlers to after TXQ dequeue Toke Høiland-Jørgensen
2016-09-30 10:27 ` Johannes Berg
2016-09-30 12:39 ` Toke Høiland-Jørgensen
2016-09-30 12:43 ` Johannes Berg [this message]
2016-09-30 12:45 ` Toke Høiland-Jørgensen
2016-09-30 12:49 ` Johannes Berg
2016-09-30 14:01 ` 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
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=1475239412.17481.59.camel@sipsolutions.net \
--to=johannes@sipsolutions.net \
--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