On Tue, 2025-07-22 at 17:16 +1000, Lachlan Hodges wrote: > An S1G PPDU TIM PVB (Partial Virtual Bitmap) follows a different > format to non-S1G PPDU's. An S1G TIM PVB breaks down the contiguous > AID bitmap into encoded blocks and only sends an encoded block if > there is at least one AID with buffered unicast traffic. > > An S1G PPDU TIM represents groups of AIDS with an array of encoded > blocks. Each encoded block represents 64 AIDs and is only present if > at least one AID within the group of 64 is present. Each encoded > block can contain 0 to 8 subblocks, where each subblock represents 8 > AIDs. Similarly to the encoded blocks, sublocks are only added if there > is at least 1 AID set within that subblock. If a subblock is present, > the subblocks bit is set in the block bitmap which precedes the > sublock bitmap. > > As page slicing is currently not supported by mac80211, we limit the > S1G max AID to 1600. This is due to the fact that the TIM element has > a maximum length of 255, such that we have DTIM count + DTIM period + > bitmap control = 3 bytes, leaving us with 252 bytes for encoded > blocks. Each encoded block has a maximum size of 10 bytes (assuming > every AID is set) leaving us with 25 * 10 + 3 = 253 bytes. Looking at the spec, this seems like a bit of a simplification, since it also allows for "Single AID" and "OLB" modes, where I think this only covers "Block Bitmap" mode? > Correctly encode the S1G PPDU TIM PVB utilising the TIM bitmap. No argument there though, the transmitter doesn't _have_ to use the most space-efficient encoding. johannes