Hostapd: Add eht_oper_chwidth in hostapd config as needed
11BE SAP is not able to be started in 80MHz bandwidth due to
eht_oper_chwidth is not configured in hostapd config. Add this
item in CreateHostapdConfig() to support starting 11BE SAP with
80MHz above bandwidth.
Bug: 324190248
Test: Start SAP in 5G band from GUI.
Signed-off-by: Xin Deng <quic_deng@quicinc.com>
Change-Id: I52743b92240aa9404f8a34682e52cfe6f2f5f9f0
diff --git a/hostapd/aidl/hostapd.cpp b/hostapd/aidl/hostapd.cpp
index 1b5317a..a21701c 100644
--- a/hostapd/aidl/hostapd.cpp
+++ b/hostapd/aidl/hostapd.cpp
@@ -548,10 +548,13 @@
}
#endif /* CONFIG_IEEE80211BE */
- std::string ht_cap_vht_oper_he_oper_chwidth_as_string;
+ std::string ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string;
switch (iface_params.hwModeParams.maximumChannelBandwidth) {
case ChannelBandwidth::BANDWIDTH_20:
- ht_cap_vht_oper_he_oper_chwidth_as_string = StringPrintf(
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string = StringPrintf(
+#ifdef CONFIG_IEEE80211BE
+ "eht_oper_chwidth=0\n"
+#endif /* CONFIG_IEEE80211BE */
#ifdef CONFIG_IEEE80211AX
"he_oper_chwidth=0\n"
#endif
@@ -559,8 +562,11 @@
"%s", (band & band6Ghz) ? "op_class=131" : "");
break;
case ChannelBandwidth::BANDWIDTH_40:
- ht_cap_vht_oper_he_oper_chwidth_as_string = StringPrintf(
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string = StringPrintf(
"ht_capab=[HT40+]\n"
+#ifdef CONFIG_IEEE80211BE
+ "eht_oper_chwidth=0\n"
+#endif /* CONFIG_IEEE80211BE */
#ifdef CONFIG_IEEE80211AX
"he_oper_chwidth=0\n"
#endif
@@ -568,13 +574,19 @@
"%s", (band & band6Ghz) ? "op_class=132" : "");
break;
case ChannelBandwidth::BANDWIDTH_80:
- ht_cap_vht_oper_he_oper_chwidth_as_string = StringPrintf(
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string = StringPrintf(
"ht_capab=[HT40+]\n"
+#ifdef CONFIG_IEEE80211BE
+ "eht_oper_chwidth=%d\n"
+#endif /* CONFIG_IEEE80211BE */
#ifdef CONFIG_IEEE80211AX
"he_oper_chwidth=%d\n"
#endif
"vht_oper_chwidth=%d\n"
"%s",
+#ifdef CONFIG_IEEE80211BE
+ (iface_params.hwModeParams.enable80211BE && !is_60Ghz_used) ? 1 : 0,
+#endif
#ifdef CONFIG_IEEE80211AX
(iface_params.hwModeParams.enable80211AX && !is_60Ghz_used) ? 1 : 0,
#endif
@@ -582,13 +594,19 @@
(band & band6Ghz) ? "op_class=133" : "");
break;
case ChannelBandwidth::BANDWIDTH_160:
- ht_cap_vht_oper_he_oper_chwidth_as_string = StringPrintf(
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string = StringPrintf(
"ht_capab=[HT40+]\n"
+#ifdef CONFIG_IEEE80211BE
+ "eht_oper_chwidth=%d\n"
+#endif /* CONFIG_IEEE80211BE */
#ifdef CONFIG_IEEE80211AX
"he_oper_chwidth=%d\n"
#endif
"vht_oper_chwidth=%d\n"
"%s",
+#ifdef CONFIG_IEEE80211BE
+ (iface_params.hwModeParams.enable80211BE && !is_60Ghz_used) ? 2 : 0,
+#endif
#ifdef CONFIG_IEEE80211AX
(iface_params.hwModeParams.enable80211AX && !is_60Ghz_used) ? 2 : 0,
#endif
@@ -598,17 +616,21 @@
default:
if (!is_2Ghz_band_only && !is_60Ghz_used) {
if (iface_params.hwModeParams.enable80211AC) {
- ht_cap_vht_oper_he_oper_chwidth_as_string =
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string =
"ht_capab=[HT40+]\n"
"vht_oper_chwidth=1\n";
}
if (band & band6Ghz) {
- ht_cap_vht_oper_he_oper_chwidth_as_string += "op_class=134\n";
-
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string += "op_class=134\n";
}
#ifdef CONFIG_IEEE80211AX
if (iface_params.hwModeParams.enable80211AX) {
- ht_cap_vht_oper_he_oper_chwidth_as_string += "he_oper_chwidth=1";
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string += "he_oper_chwidth=1\n";
+ }
+#endif
+#ifdef CONFIG_IEEE80211BE
+ if (iface_params.hwModeParams.enable80211BE) {
+ ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string += "eht_oper_chwidth=1";
}
#endif
}
@@ -682,7 +704,7 @@
iface_params.hwModeParams.enable80211AC ? 1 : 0,
he_params_as_string.c_str(),
eht_params_as_string.c_str(),
- hw_mode_as_string.c_str(), ht_cap_vht_oper_he_oper_chwidth_as_string.c_str(),
+ hw_mode_as_string.c_str(), ht_cap_vht_oper_he_oper_eht_oper_chwidth_as_string.c_str(),
nw_params.isHidden ? 1 : 0,
#ifdef CONFIG_INTERWORKING
access_network_params_as_string.c_str(),