Subject: Re: iwlwifi warnings in 5.5-rc1

From: Toke Høiland-Jørgensen <[email-masked]>
Date: Wed, 11 Dec 2019 15:02:26 +0100

Johannes Berg <[email-masked]> writes:

> Hi Toke,
>
>> > OK, I talked with Emmanuel and I think it's the GSO path - it'll end up
>> > with skb_clone() and then report both of them back.
>> 
>> Right, figured it was something like that; just couldn't find the place
>> in the driver where it did that from my cursory browsing.
>
> Yeah, deeply hidden in the guts :)
>
>> > Regardless, I think I'll probably have to disable AQL and make it more
>> > opt-in for the driver - I found a bunch of other issues ...
>> 
>> Issues like what? Making it opt-in was going to be my backup plan; I was
>> kinda hoping we could work out any issues so it would be a "no harm"
>> kind of thing that could be left as always-on. Maybe that was a bit too
>> optimistic; but it's also a pain having to keep track of which drivers
>> have which features/fixes...
>
> Sorry to keep you in suspense, had to run when I sent that email and
> didn't have time to elaborate.
>
> 1) Hardware building A-MPDU will probably make the airtime estimate
>    quite a bit wrong. Maybe this doesn't matter? But I wasn't sure how
>    this works now with ath10k where (most of?) the testing was.

Yeah, not too worried about this...

> 2) GSO/TSO like what we have - it's not really clear how to handle it.
>    The airtime estimate will shoot *way* up (64kB frame) once that frame
>    enters, and then ... should it "trickle back down" as the generated 
>    parts are transmitted? But then the driver needs to split up the
>    airtime estimate? Or should it just go back down entirely? On the
>    first frame? That might overshoot. On the last frame? Opposite
>    problem ...

Well, ideally it would be divided out over the component packets; but
yeah, who is going to do that? I think reporting it on the first packet
would be the safest if we had to choose. Also, ideally we would want the
GSO/TSO mechanism to lower the size of the superpackets at lower rates
(does it?). At higher rates this matters less...

> 3) I'm not quite convinced that all drivers report the TX rate
>    completely correctly in the status, some don't even use this path
>    but the ieee80211_tx_status_ext() which doesn't update the rate.
>
> 4) Probably most importantly, this is completely broken with HE because
>    there's currently no way to report HE rates in the TX status at all!
>    I just worked around that in our driver for 'iw' reporting purposes
>    by implementing the rate reporting in the sta_statistics callback,
>    but that data won't be used by the airtime estimates.

Hmm, yeah, both of those are good points. I guess I just kinda assumed
that the drivers were already doing the right thing there... :)

> Now, (1) probably doesn't matter, the estimates don't need to be that
> accurate. (2) I'm not sure how to solve; (3) and (4) could both be
> solved by having some mechanism of the rate scaling to tell us what the
> current rate is whenever it updates, rather than relying on the
> last_rate. Really we should do that much more, and even phase out
> last_rate entirely, it's a stupid concept.

Yes, that last bit would be good!

> There's an additional wrinkle here - what about HE scheduled mode, where
> the AP decided when and at what rate you're allowed to send? We don't
> report that at all, not even as part of rate scaling, since rate scaling
> only affects *our* decision, not when we send as a response to a trigger
> frame. This is _still_ relevant for AQL, but there we can only see what
> the AP used last (**), but we don't track that now nor do we track the
> proportion of packets that we sent triggered vs. normal medium
> access...

Huh, wasn't aware that was a thing in HE; that's cool! And yeah, could
have interesting interactions with AQL...

-Toke