| From: Muna Sinada <quic_msinada@quicinc.com> |
| Date: Wed, 5 Oct 2022 14:54:45 -0700 |
| Subject: [PATCH] wifi: mac80211: Add VHT MU-MIMO related flags in |
| ieee80211_bss_conf |
| |
| 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 in AP mode. |
| |
| Signed-off-by: Muna Sinada <quic_msinada@quicinc.com> |
| Link: https://lore.kernel.org/r/1665006886-23874-1-git-send-email-quic_msinada@quicinc.com |
| [fixed indentation, removed redundant !!] |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| --- |
| |
| --- a/include/net/mac80211.h |
| +++ b/include/net/mac80211.h |
| @@ -653,6 +653,14 @@ struct ieee80211_fils_discovery { |
| * write-protected by sdata_lock and local->mtx so holding either is fine |
| * for read access. |
| * @color_change_color: the bss color that will be used after the change. |
| + * @vht_su_beamformer: in AP mode, does this BSS support operation as an VHT SU |
| + * beamformer |
| + * @vht_su_beamformee: in AP mode, does this BSS support operation as an VHT SU |
| + * beamformee |
| + * @vht_mu_beamformer: in AP mode, does this BSS support operation as an VHT MU |
| + * beamformer |
| + * @vht_mu_beamformee: in AP mode, does this BSS support operation as an VHT MU |
| + * beamformee |
| */ |
| struct ieee80211_bss_conf { |
| const u8 *bssid; |
| @@ -726,6 +734,11 @@ struct ieee80211_bss_conf { |
| |
| bool color_change_active; |
| u8 color_change_color; |
| + |
| + bool vht_su_beamformer; |
| + bool vht_su_beamformee; |
| + bool vht_mu_beamformer; |
| + bool vht_mu_beamformee; |
| }; |
| |
| /** |
| --- a/net/mac80211/cfg.c |
| +++ b/net/mac80211/cfg.c |
| @@ -1252,6 +1252,21 @@ static int ieee80211_start_ap(struct wip |
| prev_beacon_int = link_conf->beacon_int; |
| link_conf->beacon_int = params->beacon_interval; |
| |
| + if (params->vht_cap) { |
| + link_conf->vht_su_beamformer = |
| + params->vht_cap->vht_cap_info & |
| + cpu_to_le32(IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE); |
| + link_conf->vht_su_beamformee = |
| + params->vht_cap->vht_cap_info & |
| + cpu_to_le32(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE); |
| + link_conf->vht_mu_beamformer = |
| + params->vht_cap->vht_cap_info & |
| + cpu_to_le32(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE); |
| + link_conf->vht_mu_beamformee = |
| + params->vht_cap->vht_cap_info & |
| + cpu_to_le32(IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE); |
| + } |
| + |
| if (params->he_cap && params->he_oper) { |
| link_conf->he_support = true; |
| link_conf->htc_trig_based_pkt_ext = |