| From 305f9748549189ce802544c0923446ca6a53ae1b Mon Sep 17 00:00:00 2001 |
| From: MeiChia Chiu <meichia.chiu@mediatek.com> |
| Date: Thu, 12 Jan 2023 15:18:19 +0800 |
| Subject: [PATCH 024/126] mtk: hostapd: Add he_ldpc configuration |
| |
| --- |
| hostapd/config_file.c | 2 ++ |
| hostapd/hostapd.conf | 5 +++++ |
| src/ap/ap_config.c | 1 + |
| src/ap/ap_config.h | 1 + |
| src/ap/ieee802_11_he.c | 7 +++++++ |
| src/common/ieee802_11_defs.h | 3 +++ |
| 6 files changed, 19 insertions(+) |
| |
| diff --git a/hostapd/config_file.c b/hostapd/config_file.c |
| index 1f57b882f..dc05738db 100644 |
| --- a/hostapd/config_file.c |
| +++ b/hostapd/config_file.c |
| @@ -4000,6 +4000,8 @@ static int hostapd_config_fill(struct hostapd_config *conf, |
| 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_ldpc") == 0) { |
| + conf->he_phy_capab.he_ldpc = 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; |
| diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf |
| index 56442c69d..118754800 100644 |
| --- a/hostapd/hostapd.conf |
| +++ b/hostapd/hostapd.conf |
| @@ -858,6 +858,11 @@ wmm_ac_vo_acm=0 |
| # 1 = supported |
| #he_mu_beamformer=1 |
| |
| +#he_ldpc: HE LDPC support |
| +# 0 = not supported |
| +# 1 = supported (default) |
| +#he_ldpc=1 |
| + |
| # he_bss_color: BSS color (1-63) |
| #he_bss_color=1 |
| |
| diff --git a/src/ap/ap_config.c b/src/ap/ap_config.c |
| index 5dd7f7b2b..3a12de3cd 100644 |
| --- a/src/ap/ap_config.c |
| +++ b/src/ap/ap_config.c |
| @@ -275,6 +275,7 @@ struct hostapd_config * hostapd_config_defaults(void) |
| #endif /* CONFIG_ACS */ |
| |
| #ifdef CONFIG_IEEE80211AX |
| + conf->he_phy_capab.he_ldpc = 1; |
| conf->he_op.he_rts_threshold = HE_OPERATION_RTS_THRESHOLD_MASK >> |
| HE_OPERATION_RTS_THRESHOLD_OFFSET; |
| /* Set default basic MCS/NSS set to single stream MCS 0-7 */ |
| diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h |
| index d0a692750..f90f4d554 100644 |
| --- a/src/ap/ap_config.h |
| +++ b/src/ap/ap_config.h |
| @@ -1035,6 +1035,7 @@ struct hostapd_bss_config { |
| * struct he_phy_capabilities_info - HE PHY capabilities |
| */ |
| struct he_phy_capabilities_info { |
| + bool he_ldpc; |
| bool he_su_beamformer; |
| bool he_su_beamformee; |
| bool he_mu_beamformer; |
| diff --git a/src/ap/ieee802_11_he.c b/src/ap/ieee802_11_he.c |
| index a2deda6c4..3c6ee72fe 100644 |
| --- a/src/ap/ieee802_11_he.c |
| +++ b/src/ap/ieee802_11_he.c |
| @@ -139,6 +139,13 @@ u8 * hostapd_eid_he_capab(struct hostapd_data *hapd, u8 *eid, |
| os_memcpy(&cap->optional[mcs_nss_size], |
| mode->he_capab[opmode].ppet, ppet_size); |
| |
| + if (hapd->iface->conf->he_phy_capab.he_ldpc) |
| + cap->he_phy_capab_info[HE_PHYCAP_LDPC_CODING_IN_PAYLOAD_IDX] |= |
| + HE_PHYCAP_LDPC_CODING_IN_PAYLOAD; |
| + else |
| + cap->he_phy_capab_info[HE_PHYCAP_LDPC_CODING_IN_PAYLOAD_IDX] &= |
| + ~HE_PHYCAP_LDPC_CODING_IN_PAYLOAD; |
| + |
| if (hapd->iface->conf->he_phy_capab.he_su_beamformer) |
| cap->he_phy_capab_info[HE_PHYCAP_SU_BEAMFORMER_CAPAB_IDX] |= |
| HE_PHYCAP_SU_BEAMFORMER_CAPAB; |
| diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h |
| index 269b1cf97..c380d0c7e 100644 |
| --- a/src/common/ieee802_11_defs.h |
| +++ b/src/common/ieee802_11_defs.h |
| @@ -2461,6 +2461,9 @@ struct ieee80211_spatial_reuse { |
| #define HE_PHYCAP_CHANNEL_WIDTH_SET_160MHZ_IN_5G ((u8) BIT(3)) |
| #define HE_PHYCAP_CHANNEL_WIDTH_SET_80PLUS80MHZ_IN_5G ((u8) BIT(4)) |
| |
| +#define HE_PHYCAP_LDPC_CODING_IN_PAYLOAD_IDX 1 |
| +#define HE_PHYCAP_LDPC_CODING_IN_PAYLOAD ((u8) BIT(5)) |
| + |
| #define HE_PHYCAP_SU_BEAMFORMER_CAPAB_IDX 3 |
| #define HE_PHYCAP_SU_BEAMFORMER_CAPAB ((u8) BIT(7)) |
| #define HE_PHYCAP_SU_BEAMFORMEE_CAPAB_IDX 4 |
| -- |
| 2.18.0 |
| |