On Fri, 2018-08-17 at 14:21 -0700, Danek Duvall wrote:
> The mac80211_hwsim driver puts this in its VHT capabilities info field:
> 
>     IEEE80211_VHT_CAP_RXSTBC_1 | 
>     IEEE80211_VHT_CAP_RXSTBC_2 |
>     IEEE80211_VHT_CAP_RXSTBC_3 |
>     IEEE80211_VHT_CAP_RXSTBC_4

Uh, yeah, that's garbage.

> and I don't understand what that's supposed to mean.  According to
> 802.11-2016, the three-bit field isn't a series of boolean values, but a
> single numerical value in its three bits, where the value is the maximum
> number of STBC streams, and the maximum defined value is 4.

Yeah ...

> But the way that the code treats it, we end up with a value of 7.

Indeed.

> There seems to be a similar issue in mac80211/main.c, in the definition of
> mac80211_vht_capa_mod_mask.

I guess this one is sort of fine - you can override here and the 7 is
actually the right result, but we should put there
IEEE80211_VHT_CAP_RXSTBC_MASK.

> Is that a bug in the code, or a misunderstanding on my part?  No other
> (in-tree) drivers use any of the macros other than _1, so I don't have any
> other references for how the other values might be used.

It's a bug.

I think it should be two changes - one, in hwsim, to just set _4 (it's
fake anyway), and in mac80211/main.c to use
IEEE80211_VHT_CAP_RXSTBC_MASK instead of the four values ORed together.

Want to prepare such patches? Otherwise I can too.

johannes

Reply via email to