Re: [RFC v2 3/3] UHR: add new field

Johannes Berg <[email protected]> Wed, 21 Jan 2026 12:31:22 +0100
Newsgroups org.netbsd.radiotap
Message-ID <[email protected]>
While implementing the user field,

On Wed, 2026-01-14 at 13:07 +0100, Johannes Berg wrote:
>=20
> +### `user_known`
> +
> +| **bits**         | **non-MU-MIMO / Co-SR** | **MU-MIMO / Co-BF** |
> +| **`0x00000001`** | STA-ID known | (same) |
> +| **`0x00000002`** | MCS known | (same) |
> +| **`0x00000004`** | NSS known | (reserved) |
> +| **`0x00000008`** | UEQM known | (reserved) |
> +| **`0x00000010`** | Beamforming And Coding / UEQM Pattern known | (rese=
rved) |

I realized that it's far simpler to split this up into Beamforming,
Coding and UEQM pattern separately.

> +| **`0x00000020`** | 2xLDPC known | (same) |
> +| **`0x00000040`** | (reserved) | Spatial Configuration known |
> +| **`0x00000080`** | (reserved) | Disregard known |
> +| **`0x00000100`** | (reserved) | Coding/BSS Color Indication known |
> +| **`0x00000200`** | User Encoding Block CRC known | (same) |
> +| **`0x00000400`** | User Encoding Block Tail known | (same) |
> +| **`0x0000f800`** | (reserved) | (reserved) |
> +| **`0x000f0000`** | User Encoding Block CRC (B23N-B23N+3) | (same) |
> +| **`0x03f00000`** | User Encoding Block Tail (B23N+4-B23N+9)| (same) |
> +| **`0x7c000000`** | (reserved) | (reserved) |
> +| **`0x80000000`** | Data captured for this user | (same) |
> +
> +### `user_info`
> +
> +| **bits**         | **non-MU-MIMO / Co-SR** | **MU-MIMO / Co-BF** |
> +| **`0x000007ff`** | STA-ID | (same) |
> +| **`0x0001f000`** | MCS | (same) |
> +| **`0x000e0000`** | NSS (0=3D1 spatial stream, 1=3D2 spatial streams, .=
..) | (overlap) |
> +| **`0x00100000`** | UEQM | (overlap) |
> +| **`0x00600000`** | Beamforming And Coding / UEQM Pattern | (overlap) |
> +| **`0x000f0000`** | (overlap) | Spatial Configuration |
> +| **`0x00100000`** | (overlap) | Disregard |
> +| **`0x00200000`** | (overlap) | Coding/BSS Color Indication |
> +| **`0x00400000`** | (overlap) | (reserved) |
> +| **`0x00800000`** | 2xLDPC | (same) |
> +| **`0xff000000`** | (reserved) | (reserved) |

which then also requires some more bits here. That should make it
simpler for wireshark too.

I'll update as follows I think:


### `user_known`

| **bits**         | **non-MU-MIMO / Co-SR** | **MU-MIMO / Co-BF** |
| **`0x00000001`** | STA-ID known | (same) |
| **`0x00000002`** | MCS known | (same) |
| **`0x00000004`** | NSS known | (reserved) |
| **`0x00000008`** | UEQM known | (reserved) |
| **`0x00000010`** | Beamforming known / UEQM Pattern known | (reserved) |
| **`0x00000020`** | Coding known / UEQM Pattern known | (reserved) |
| **`0x00000040`** | UEQM Pattern known | (reserved) |
| **`0x00000080`** | 2xLDPC known | (same) |
| **`0x00000100`** | (reserved) | Spatial Configuration known |
| **`0x00000200`** | (reserved) | Disregard known |
| **`0x00000400`** | (reserved) | Coding/BSS Color Indication known |
| **`0x00000800`** | User Encoding Block CRC known | (same) |
| **`0x00001000`** | User Encoding Block Tail known | (same) |
| **`0x0000e000`** | (reserved) | (reserved) |
| **`0x000f0000`** | User Encoding Block CRC (B23N-B23N+3) | (same) |
| **`0x03f00000`** | User Encoding Block Tail (B23N+4-B23N+9)| (same) |
| **`0x7c000000`** | (reserved) | (reserved) |
| **`0x80000000`** | Data captured for this user | (same) |

### `user_info`

| **bits**         | **non-MU-MIMO / Co-SR** | **MU-MIMO / Co-BF** |
| **`0x000007ff`** | STA-ID | (same) |
| **`0x0001f000`** | MCS | (same) |
| **`0x000e0000`** | NSS (0=3D1 spatial stream, 1=3D2 spatial streams, ...)=
 | (overlap) |
| **`0x00100000`** | UEQM | (overlap) |
| **`0x00200000`** | Beamforming | (overlap) |
| **`0x00400000`** | Coding (0 for BCC, 1 for LDPC) | (overlap) |
| **`0x01800000`** | UEQM Pattern | (reserved) |
| **`0x000f0000`** | (overlap) | Spatial Configuration |
| **`0x00100000`** | (overlap) | Disregard |
| **`0x00200000`** | (overlap) | Coding/BSS Color Indication |
| **`0x01c00000`** | (overlap) | (reserved) |
| **`0x02000000`** | 2xLDPC | (same) |
| **`0xfc000000`** | (reserved) | (reserved) |


even if some combinations are just not valid then, but otherwise the
parsing needs to depend on many bits and even the STA-ID.

johannes