HomeFreeBSD

[net80211] start laying down the foundation for 11ac support.

Description

[net80211] start laying down the foundation for 11ac support.

This is a work in progress and some of this stuff may change;
but hopefully I'm laying down enough stuff and space in fields
to allow it to grow without another major recompile.

We'll see!

  • Add a net80211 PHY type for VHT 2G and VHT 5G.

    Note - yes, VHT is supposed to be for 5GHZ, however some vendors (*cough* most of them) support some subset of VHT rate support in 2GHz. No - not 80MHz wide channels, but at least some MCS8-9 support, maybe some beamforming, and maybe some longer A-MPDU aggregates. I don't want to even think about MU-MIMO on 2GHz.
  • Add an ifmedia placeholder type for VHT rates.
  • Add channel flags for VHT, VHT20/40U/40D/80/80+80/160
  • Add channel macros for the above
  • Add ieee80211_channel fields for the VHT information and flags, along with some padding (so this struct definitely grows.)
  • Add a phy type flag for VHT - 'v'
  • Bump the number of channels to a much higher amount - until we get something like the linux mac80211 chanctx abstraction (where the stack provides a current channel configuration via callbacks, versus the driver ever checking ic->ic_curchan or similar) we'll have to populate VHT+HT combinations.

Eg, there'll likely be a full set of duplicate VHT20/40 channels to match
HT channels. There will also be a full set of duplicate VHT80 channels -
note that for VHT80, its assumed you're doing VHT40 as a base, so we
don't need a duplicate of VHT80 + 20MHz only primary channels, only
a duplicate of all the VHT40 combinations.

I don't want to think about VHT80+80 or VHT160 for now - and I won't,
as the current device I'm doing 11ac bringup on (QCA9880) only does
VHT80.

I'll likely revisit the channel configuration and scanning related
stuff after I get VHT20/40 up.

  • Add vht flags and the basic MCS rate setup to ieee80211com, ieee80211vap and ieee80211_node in preparation for 11ac configuration. There is zero code that uses this right now.
  • Whilst here, add some more placeholders in case I need to extend out things by some uint32_t flag sized fields. Hopefully I won't!

What I haven't yet done:

  • any of the code that uses this
  • any of the beamforming related fields
  • any of the MU-MIMO fields required for STA/AP operation
  • any of the IE fields in beacon frame / probe request/response handling and the calculations required for shifting beacon contents around when the TIM grows/shrinks

This will require a full rebuild of net80211 related programs -
ifconfig, hostapd, wpa_supplicant.

Details

Provenance
adrianAuthored on Dec 16 2016, 4:43 AM
Parents
rGfa133b6bf028: Use the right bitwise OR operation for clearing single-step at trap time.
Branches
Unknown
Tags
Unknown

Event Timeline