blob: 43ba4dbac72b4f53c0b1cfc9d833866680ece758 [file] [log] [blame]
developer05f3b2b2024-08-19 19:17:34 +08001From 305f9748549189ce802544c0923446ca6a53ae1b Mon Sep 17 00:00:00 2001
developer66e89bc2024-04-23 14:50:01 +08002From: MeiChia Chiu <meichia.chiu@mediatek.com>
3Date: Thu, 12 Jan 2023 15:18:19 +0800
developer05f3b2b2024-08-19 19:17:34 +08004Subject: [PATCH 024/126] mtk: hostapd: Add he_ldpc configuration
developer66e89bc2024-04-23 14:50:01 +08005
6---
7 hostapd/config_file.c | 2 ++
8 hostapd/hostapd.conf | 5 +++++
9 src/ap/ap_config.c | 1 +
10 src/ap/ap_config.h | 1 +
11 src/ap/ieee802_11_he.c | 7 +++++++
12 src/common/ieee802_11_defs.h | 3 +++
13 6 files changed, 19 insertions(+)
14
15diff --git a/hostapd/config_file.c b/hostapd/config_file.c
developer05f3b2b2024-08-19 19:17:34 +080016index 1f57b882f..dc05738db 100644
developer66e89bc2024-04-23 14:50:01 +080017--- a/hostapd/config_file.c
18+++ b/hostapd/config_file.c
developer05f3b2b2024-08-19 19:17:34 +080019@@ -4000,6 +4000,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
developer66e89bc2024-04-23 14:50:01 +080020 conf->he_phy_capab.he_su_beamformee = atoi(pos);
21 } else if (os_strcmp(buf, "he_mu_beamformer") == 0) {
22 conf->he_phy_capab.he_mu_beamformer = atoi(pos);
23+ } else if (os_strcmp(buf, "he_ldpc") == 0) {
24+ conf->he_phy_capab.he_ldpc = atoi(pos);
25 } else if (os_strcmp(buf, "he_bss_color") == 0) {
26 conf->he_op.he_bss_color = atoi(pos) & 0x3f;
27 conf->he_op.he_bss_color_disabled = 0;
28diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
developer05f3b2b2024-08-19 19:17:34 +080029index 56442c69d..118754800 100644
developer66e89bc2024-04-23 14:50:01 +080030--- a/hostapd/hostapd.conf
31+++ b/hostapd/hostapd.conf
developer05f3b2b2024-08-19 19:17:34 +080032@@ -858,6 +858,11 @@ wmm_ac_vo_acm=0
developer66e89bc2024-04-23 14:50:01 +080033 # 1 = supported
34 #he_mu_beamformer=1
35
36+#he_ldpc: HE LDPC support
37+# 0 = not supported
38+# 1 = supported (default)
39+#he_ldpc=1
40+
41 # he_bss_color: BSS color (1-63)
42 #he_bss_color=1
43
44diff --git a/src/ap/ap_config.c b/src/ap/ap_config.c
developer05f3b2b2024-08-19 19:17:34 +080045index 5dd7f7b2b..3a12de3cd 100644
developer66e89bc2024-04-23 14:50:01 +080046--- a/src/ap/ap_config.c
47+++ b/src/ap/ap_config.c
developer05f3b2b2024-08-19 19:17:34 +080048@@ -275,6 +275,7 @@ struct hostapd_config * hostapd_config_defaults(void)
developer66e89bc2024-04-23 14:50:01 +080049 #endif /* CONFIG_ACS */
50
51 #ifdef CONFIG_IEEE80211AX
52+ conf->he_phy_capab.he_ldpc = 1;
53 conf->he_op.he_rts_threshold = HE_OPERATION_RTS_THRESHOLD_MASK >>
54 HE_OPERATION_RTS_THRESHOLD_OFFSET;
55 /* Set default basic MCS/NSS set to single stream MCS 0-7 */
56diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
developer05f3b2b2024-08-19 19:17:34 +080057index d0a692750..f90f4d554 100644
developer66e89bc2024-04-23 14:50:01 +080058--- a/src/ap/ap_config.h
59+++ b/src/ap/ap_config.h
developer05f3b2b2024-08-19 19:17:34 +080060@@ -1035,6 +1035,7 @@ struct hostapd_bss_config {
developer66e89bc2024-04-23 14:50:01 +080061 * struct he_phy_capabilities_info - HE PHY capabilities
62 */
63 struct he_phy_capabilities_info {
64+ bool he_ldpc;
65 bool he_su_beamformer;
66 bool he_su_beamformee;
67 bool he_mu_beamformer;
68diff --git a/src/ap/ieee802_11_he.c b/src/ap/ieee802_11_he.c
69index a2deda6c4..3c6ee72fe 100644
70--- a/src/ap/ieee802_11_he.c
71+++ b/src/ap/ieee802_11_he.c
72@@ -139,6 +139,13 @@ u8 * hostapd_eid_he_capab(struct hostapd_data *hapd, u8 *eid,
73 os_memcpy(&cap->optional[mcs_nss_size],
74 mode->he_capab[opmode].ppet, ppet_size);
75
76+ if (hapd->iface->conf->he_phy_capab.he_ldpc)
77+ cap->he_phy_capab_info[HE_PHYCAP_LDPC_CODING_IN_PAYLOAD_IDX] |=
78+ HE_PHYCAP_LDPC_CODING_IN_PAYLOAD;
79+ else
80+ cap->he_phy_capab_info[HE_PHYCAP_LDPC_CODING_IN_PAYLOAD_IDX] &=
81+ ~HE_PHYCAP_LDPC_CODING_IN_PAYLOAD;
82+
83 if (hapd->iface->conf->he_phy_capab.he_su_beamformer)
84 cap->he_phy_capab_info[HE_PHYCAP_SU_BEAMFORMER_CAPAB_IDX] |=
85 HE_PHYCAP_SU_BEAMFORMER_CAPAB;
86diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
developer05f3b2b2024-08-19 19:17:34 +080087index 269b1cf97..c380d0c7e 100644
developer66e89bc2024-04-23 14:50:01 +080088--- a/src/common/ieee802_11_defs.h
89+++ b/src/common/ieee802_11_defs.h
developer05f3b2b2024-08-19 19:17:34 +080090@@ -2461,6 +2461,9 @@ struct ieee80211_spatial_reuse {
developer66e89bc2024-04-23 14:50:01 +080091 #define HE_PHYCAP_CHANNEL_WIDTH_SET_160MHZ_IN_5G ((u8) BIT(3))
92 #define HE_PHYCAP_CHANNEL_WIDTH_SET_80PLUS80MHZ_IN_5G ((u8) BIT(4))
93
94+#define HE_PHYCAP_LDPC_CODING_IN_PAYLOAD_IDX 1
95+#define HE_PHYCAP_LDPC_CODING_IN_PAYLOAD ((u8) BIT(5))
96+
97 #define HE_PHYCAP_SU_BEAMFORMER_CAPAB_IDX 3
98 #define HE_PHYCAP_SU_BEAMFORMER_CAPAB ((u8) BIT(7))
99 #define HE_PHYCAP_SU_BEAMFORMEE_CAPAB_IDX 4
100--
developer05f3b2b2024-08-19 19:17:34 +08001012.18.0
developer66e89bc2024-04-23 14:50:01 +0800102