Adding flags for SU Beamformer, SU Beamformee, MU Beamformer and MU Beamformee for VHT. This is utilized to pass MU-MIMO configurations from user space to driver. Signed-off-by: Muna Sinada <quic_msinada@xxxxxxxxxxx> --- include/net/mac80211.h | 8 ++++++++ net/mac80211/cfg.c | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/net/mac80211.h b/include/net/mac80211.h index ebadb2103968..ef4133091d41 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -636,6 +636,10 @@ struct ieee80211_fils_discovery { * @tx_pwr_env_num: number of @tx_pwr_env. * @pwr_reduction: power constraint of BSS. * @eht_support: does this BSS support EHT + * @vht_su_beamformer: does this BSS support operation as an VHT SU beamformer + * @vht_su_beamformee: does this BSS support operation as an VHT SU beamformee + * @vht_mu_beamformer: does this BSS support operation as an VHT MU beamformer + * @vht_mu_beamformee: does this BSS support operation as an VHT MU beamformee */ struct ieee80211_bss_conf { const u8 *bssid; @@ -711,6 +715,10 @@ struct ieee80211_bss_conf { u8 tx_pwr_env_num; u8 pwr_reduction; bool eht_support; + bool vht_su_beamformer; + bool vht_su_beamformee; + bool vht_mu_beamformer; + bool vht_mu_beamformee; }; /** diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index f7896f257e1b..76418bb360fa 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1164,6 +1164,21 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev, prev_beacon_int = sdata->vif.bss_conf.beacon_int; sdata->vif.bss_conf.beacon_int = params->beacon_interval; + if (params->vht_cap) { + sdata->vif.bss_conf.vht_su_beamformer = + !!(ap_vht_cap->vht_cap_info & + cpu_to_le32(IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)); + sdata->vif.bss_conf.vht_su_beamformee = + !!(ap_vht_cap->vht_cap_info & + cpu_to_le32(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)); + sdata->vif.bss_conf.vht_mu_beamformer = + !!(ap_vht_cap->vht_cap_info & + cpu_to_le32(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE)); + sdata->vif.bss_conf.vht_mu_beamformee = + !!(ap_vht_cap->vht_cap_info & + cpu_to_le32(IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)); + } + if (params->he_cap && params->he_oper) { sdata->vif.bss_conf.he_support = true; sdata->vif.bss_conf.htc_trig_based_pkt_ext = -- 2.7.4