[PATCH wireless-next 0/3] wifi: Preamble puncturing support for mesh
Johannes Berg
johannes at sipsolutions.net
Mon Jun 30 06:21:14 PDT 2025
On Fri, 2025-06-27 at 19:49 +0530, Ramasamy Kaliappan wrote:
> > I ... don't really understand how this is supposed to work.
> >
> > Say, for the sake of simplicity, we have an 80 MHz channel, the lowest
> > channel is the control channel (so puncturing 0x1 is invalid). Possible
> > puncturing values are 0x2, 0x4 and 0x8.
> >
> > If locally we have 0x2, that means (I assume, since that's how chandef
> > is meant to work) CCA and RX is always on the control channel and upper
> > 40 MHz parts. If you're now going to transmit to a station that has
> > puncturing 0x8, you didn't do CCA on the 0x2 subchannel, but ...
> > transmit anyway?
> >
> Yes,we do not transmit blindly to mesh peers with different puncturing.
> Before initiating transmission, the driver computes the intersection of
> the local and peer puncturing bitmaps to determine the set of valid sub
> channels.
Hm, I guess that's fair, but why not do that in mac80211 instead, that'd
be simpler and far more obvious/safe?
Also, clearly your driver _doesn't_ do what you say "the driver" does,
if anything it magically and "undocumentedly" happens in firmware.
> > I mean, maybe this could work if the remote puncturing is a superset of
> > the local puncturing? But just blindly doing it the way it appears to be
> > done in this patchset seems ... questionable at best?
> >
> > Can you explain more how this is even supposed to work?
> >
> When associating with a mesh peer, the mesh peer's puncture pattern is
> shared with the driver. The driver evaluates the intersection of this
> bitmap with local pattern.
Could also be done in mac80211, I guess.
> if the resulting pattern corresponds to valid transmission bandwidth,
> the valid subchannels used for transmission.
>
> If the resulting pattern does not support a valid bandwidth, the driver
> falls back to using only the primary 20 MHz control channel for
> transmission.
Right.
I also note that there's not even any definition where the puncturing
pattern is rooted ... is it relative to the local chandef? Relative to
the peer's chandef? Clearly not even that is documented. What happens if
the bitmap changes? Why does userspace track it rather than mac80211,
which has the beacon of the peer and handles CSA, so what happens with
puncturing in CSA?
Did you think about any of these questions, or are you just using me as
a design tool? ;-)
johannes
More information about the ath12k
mailing list