mbox series

[RFC,v2,00/13] refactor and wider-BW OFDMA support

Message ID 20231123221436.143254-14-johannes@sipsolutions.net
Headers show
Series refactor and wider-BW OFDMA support | expand

Message

Johannes Berg Nov. 23, 2023, 10:14 p.m. UTC
Hi,

Continuing the work I already began in [1] (but hadn't so far posted
a v2 of), this shows what really was the purpose of me looking at it,
which I had alluded to earlier: supporting wider-bandwidth OFDMA in
mac80211.

While starting to work on it more after the channel request, I saw
that the code that determines the channels etc. in the MLME is not
really very amenable to the kinds of things I needed to have here,
so I've done some major refactoring of that code, that's in patch 7.

Note that patch 5 breaks two hwsim tests, but the reason is that the
code in wpa_supplicant doesn't take the HE/EHT operation into account
when calculating the expected throughput, only the capabilities, so I
believe that's just a bug there.

Note also that I think that patch 8 shouldn't be there, an AP that
drops any of HT/VHT/HE/EHT operation while doing a channel switch
doesn't really seem quite reasonable to me. As noted there, that's
affecting 8 more tests, and I've split out the workaround into this
patch to show more obviously what's going on.

Also, the refactor patch (patch 7) introduces a FIXME for puncturing,
as it doesn't configure it properly from the start, but will then
only reconfigure it when the first beacon is parsed. There were some
additional patches about puncturing [2], and I need to take a look
at those. I believe patch 3 there is already covered by what I've
done in my patch 7 (partially it's the same), but I probably still
need patch 1/2 in some way, and of course the driver patch isn't
related at all.
However, the right fix for the puncturing is to put it into the
chandef as Aloka had originally suggested, but I questioned and
somehow managed to convince her that it shouldn't be - I was quite
clearly wrong about that. I already said I'd need to move it into
the chandef, and at that point the FIXME in this code basically is
addressed automatically. I didn't want to introduce any workarounds
to this code instead.

So ... yes I realize that these are some big changes, but I tend to
think that they make the code better to understand/maintain, in
particular the 'connection mode' struct that's easier to track.

The hwsim tests seem to run cleanly apart from what I mentioned
above, although I have 9 tests that always fail for me, and for
some reason I cannot run the wmediumd tests right now.

johannes

[1] https://lore.kernel.org/r/20231109003040.4b25d42b8b14.I60d093b2fc81ca1853925a4d0ac3a2337d5baa5b@changeid
[2] https://lore.kernel.org/linux-wireless/20230928055022.9670-1-quic_kangyang@quicinc.com/
[3] https://lore.kernel.org/linux-wireless/20230928055022.9670-4-quic_kangyang@quicinc.com/