mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-30 01:52:51 +00:00
80 lines
2.8 KiB
Diff
80 lines
2.8 KiB
Diff
--- a/hostapd/config_file.c
|
|
+++ b/hostapd/config_file.c
|
|
@@ -3517,6 +3517,8 @@ static int hostapd_config_fill(struct ho
|
|
conf->he_phy_capab.he_su_beamformee = atoi(pos);
|
|
} else if (os_strcmp(buf, "he_mu_beamformer") == 0) {
|
|
conf->he_phy_capab.he_mu_beamformer = atoi(pos);
|
|
+ } else if (os_strcmp(buf, "he_ul_mumimo") == 0) {
|
|
+ conf->he_phy_capab.he_ul_mumimo = atoi(pos);
|
|
} else if (os_strcmp(buf, "he_bss_color") == 0) {
|
|
conf->he_op.he_bss_color = atoi(pos) & 0x3f;
|
|
conf->he_op.he_bss_color_disabled = 0;
|
|
--- a/hostapd/hostapd.conf
|
|
+++ b/hostapd/hostapd.conf
|
|
@@ -816,6 +816,12 @@ wmm_ac_vo_acm=0
|
|
# 1 = supported
|
|
#he_mu_beamformer=1
|
|
|
|
+#he_ul_mumimo: HE Uplink multiple user MIMO support
|
|
+# -1 or unspecified = Decided by firmware or underlying hardware(Default)
|
|
+# 0 = not supported
|
|
+# 1 = supported
|
|
+#he_mu_beamformer=1
|
|
+
|
|
# he_bss_color: BSS color (1-63)
|
|
#he_bss_color=1
|
|
|
|
--- a/src/ap/ap_config.c
|
|
+++ b/src/ap/ap_config.c
|
|
@@ -266,6 +266,8 @@ struct hostapd_config * hostapd_config_d
|
|
HE_OPERATION_RTS_THRESHOLD_OFFSET;
|
|
/* Set default basic MCS/NSS set to single stream MCS 0-7 */
|
|
conf->he_op.he_basic_mcs_nss_set = 0xfffc;
|
|
+ /* Set default to be decided by Driver/underlying HW */
|
|
+ conf->he_phy_capab.he_ul_mumimo = -1;
|
|
conf->he_op.he_bss_color_disabled = 1;
|
|
conf->he_op.he_bss_color_partial = 0;
|
|
conf->he_op.he_bss_color = 1;
|
|
--- a/src/ap/ap_config.h
|
|
+++ b/src/ap/ap_config.h
|
|
@@ -903,6 +903,7 @@ struct he_phy_capabilities_info {
|
|
bool he_su_beamformer;
|
|
bool he_su_beamformee;
|
|
bool he_mu_beamformer;
|
|
+ int he_ul_mumimo;
|
|
};
|
|
|
|
/**
|
|
--- a/src/ap/hw_features.c
|
|
+++ b/src/ap/hw_features.c
|
|
@@ -727,9 +727,10 @@ static int ieee80211ax_supported_he_capa
|
|
(SPATIAL_REUSE_NON_SRG_OFFSET_PRESENT |
|
|
SPATIAL_REUSE_SRG_INFORMATION_PRESENT))));
|
|
|
|
- HE_CAP_CHECK2(hw->phy_cap, HE_PHYCAP_UL_MUMIMO_CAPB,
|
|
- HE_PHYCAP_UL_MUMIMO_CAPB_IDX, HE_PHYCAP_UL_MUOFDMA_CAPB,
|
|
- HE_PHYCAP_UL_MUOFDMA_CAPB_IDX, conf->he_mu_edca.he_qos_info);
|
|
+ if (conf->he_phy_capab.he_ul_mumimo != -1)
|
|
+ HE_CAP_CHECK(hw->phy_cap, HE_PHYCAP_UL_MUMIMO_CAPB,
|
|
+ HE_PHYCAP_UL_MUMIMO_CAPB_IDX,
|
|
+ conf->he_phy_capab.he_ul_mumimo);
|
|
|
|
HE_CAP_CHECK2(hw->mac_cap, HE_MACCAP_TWT_REQUESTER, HE_MACCAP_TWT_REQUESTER_IDX,
|
|
HE_MACCAP_TWT_RESPONDER, HE_MACCAP_TWT_RESPONDER_IDX,
|
|
--- a/src/ap/ieee802_11_he.c
|
|
+++ b/src/ap/ieee802_11_he.c
|
|
@@ -152,6 +152,13 @@ u8 * hostapd_eid_he_capab(struct hostapd
|
|
cap->he_phy_capab_info[HE_PHYCAP_MU_BEAMFORMER_CAPAB_IDX] &=
|
|
~HE_PHYCAP_MU_BEAMFORMER_CAPAB;
|
|
|
|
+ if (hapd->iface->conf->he_phy_capab.he_ul_mumimo == 1)
|
|
+ cap->he_phy_capab_info[HE_PHYCAP_UL_MUMIMO_CAPB_IDX] |=
|
|
+ HE_PHYCAP_UL_MUMIMO_CAPB;
|
|
+ else if (hapd->iface->conf->he_phy_capab.he_ul_mumimo == 0)
|
|
+ cap->he_phy_capab_info[HE_PHYCAP_UL_MUMIMO_CAPB_IDX] &=
|
|
+ ~HE_PHYCAP_UL_MUMIMO_CAPB;
|
|
+
|
|
cap->he_phy_capab_info[HE_PHYCAP_CHANNEL_WIDTH_SET_IDX] &=
|
|
he_oper_chwidth;
|
|
|