From 3a5a4986fa0f1896404f8d49dda6c2711d5fb843 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Wed, 3 Jul 2024 14:27:19 +0800 Subject: [PATCH] mac80211: Add EHT UL MU-MIMO flag in ieee80211_bss_conf --- .../900-add-eth-ieee80211_bss_conf.patch | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 package/kernel/mac80211/patches/subsys/900-add-eth-ieee80211_bss_conf.patch diff --git a/package/kernel/mac80211/patches/subsys/900-add-eth-ieee80211_bss_conf.patch b/package/kernel/mac80211/patches/subsys/900-add-eth-ieee80211_bss_conf.patch new file mode 100644 index 000000000..55e2e1b73 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/900-add-eth-ieee80211_bss_conf.patch @@ -0,0 +1,55 @@ +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -673,6 +673,12 @@ + * @he_full_ul_mumimo: does this BSS support the reception (AP) or transmission + * (non-AP STA) of an HE TB PPDU on an RU that spans the entire PPDU + * bandwidth ++ * @eht_su_beamformer: in AP-mode, does this BSS enable operation as an EHT SU ++ * beamformer ++ * @eht_su_beamformee: in AP-mode, does this BSS enable operation as an EHT SU ++ * beamformee ++ * @eht_mu_beamformer: in AP-mode, does this BSS enable operation as an EHT MU ++ * beamformer + */ + struct ieee80211_bss_conf { + const u8 *bssid; +@@ -758,6 +764,9 @@ + bool he_su_beamformee; + bool he_mu_beamformer; + bool he_full_ul_mumimo; ++ bool eht_su_beamformer; ++ bool eht_su_beamformee; ++ bool eht_mu_beamformer; + }; + + /** +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -1307,6 +1307,27 @@ + IEEE80211_HE_PHY_CAP2_UL_MU_FULL_MU_MIMO; + } + ++ if (params->eht_cap) { ++ if (!link_conf->he_support) ++ return -EOPNOTSUPP; ++ link_conf->eht_support = true; ++ link_conf->eht_su_beamformer = ++ params->eht_cap->fixed.phy_cap_info[0] & ++ IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMER; ++ link_conf->eht_su_beamformee = ++ params->eht_cap->fixed.phy_cap_info[0] & ++ IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMEE; ++ link_conf->eht_mu_beamformer = ++ params->eht_cap->fixed.phy_cap_info[7] & ++ (IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_80MHZ | ++ IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_160MHZ | ++ IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_320MHZ); ++ } else { ++ link_conf->eht_su_beamformer = false; ++ link_conf->eht_su_beamformee = false; ++ link_conf->eht_mu_beamformer = false; ++ } ++ + if (sdata->vif.type == NL80211_IFTYPE_AP && + params->mbssid_config.tx_wdev) { + err = ieee80211_set_ap_mbssid_options(sdata,