[PATCH wireless-next 0/3] wifi: Preamble puncturing support for mesh
Ramasamy Kaliappan
ramasamy.kaliappan at oss.qualcomm.com
Fri Jun 27 07:19:24 PDT 2025
On 6/24/2025 6:54 PM, Johannes Berg wrote:
> 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?
>
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.
> 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.
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.
> johannes
More information about the ath12k
mailing list