On Thu, 2022-02-10 at 09:26 +0100, Johannes Berg wrote: > > > > Considering that 20MHz-only STA and one that supports other bandwidths will not occur at the same time, > > instead of a separate field for struct ieee80211_eht_mcs_nss_supp_20mhz_only inside struct ieee80211_eht_mcs_nss_supp, we can use a byte array as we added in here: > > https://patchwork.kernel.org/project/linux-wireless/patch/1640163883-12696-3-git-send-email-quic_vjakkam@xxxxxxxxxxx/ > > Instead of length field with dynamic allocation we can have an array of size 9 bytes. > > > > We did something like that in our patches: > > https://patchwork.kernel.org/project/linux-wireless/patch/20220204230119.b0eeb527d761.I2413a37c8f7d2d6d638038a3d95360a3fce0114d@changeid/ > https://patchwork.kernel.org/project/linux-wireless/patch/20220204230119.1ee92202ac30.Id30a3ef2844b296efbd5486fe1da9ca36a95c5cf@changeid/ > > Not overlapping wastes like 4 bytes of memory, I think I can live with > that, vs. the extra complexity? If you overlap you need another bit to > indicate which one you're using ... > OTOH, that means we need to unwrap it in userspace, which is also strange ... So yeah I'm changing it to a union. johannes