[PATCH wireless-next 0/3] wifi: Preamble puncturing support for mesh

Johannes Berg johannes at sipsolutions.net
Tue Jun 24 06:24:48 PDT 2025


On Mon, 2025-06-09 at 05:40 +0530, Ramasamy Kaliappan wrote:
> From: Ramasamy Kaliappan <rkaliapp at qti.qualcomm.com>
> 
> Preamble puncturing(“Punctured 242-tone RU") refers to the transmission
> of a PPDU in which no signal is present in at least one of the 20 MHz
> subchannels within the PPDU bandwidth. Puncturing might be the result of
> the unavailability of 20 MHz subchannel(s) within the PPDU bandwidth,
> such as a busy channel indicated by the CCA or the setting of the disable
> subchannel bitmap field (16 bit field) in the EHT Operations element.
> 
> EHT disable sub channel bitmap is a 16 bit field where
> each bit corresponds to a 20 MHz channel in the given bandwidth.
> Bit 0 corresponding to the channel with lowest frequency.
> Bit set to 1 indicates that the channel is punctured, otherwise active.
> 
> Userspace can send the EHT disable sub channel bitmap via attribute
> NL80211_ATTR_PUNCT_BITMAP in frequency  param as a part of join mesh
> (NL80211_CMD_JOIN_MESH) command. The received puncturing bitmap is
> validated and copied to chandef's punctured bitmap of mesh interface data.
> 
> Build the mesh beacon’s EHT Operation element including
> disable_subchannel_bitmap based on chandef's punctured bitmap.
> 
> Validate and update peer mesh station's puncturing bitmap
> in local structures while adding new mesh station
> (parsed from peer mesh station's EHT Operation element)

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?

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?

johannes



More information about the ath12k mailing list