hostapd(hidl): Only enable HT40 for ACS
For non-ACS configuration, we cannot enable HT40 since framework does
not know if the channel it selected is HT/VHT capable.
Bug: 74257902
Test: Verified hostapd.conf on both marlin & taimen.
Change-Id: Ied484636597f29a497df83c7e4df69ede3fd6302
diff --git a/hostapd/hidl/1.0/hostapd.cpp b/hostapd/hidl/1.0/hostapd.cpp
index ee8cfc8..978cdf1 100644
--- a/hostapd/hidl/1.0/hostapd.cpp
+++ b/hostapd/hidl/1.0/hostapd.cpp
@@ -138,19 +138,26 @@
// Hw Mode String
std::string hw_mode_as_string;
+ std::string ht_cap_vht_oper_chwidth_as_string;
switch (iface_params.channelParams.band) {
case IHostapd::Band::BAND_2_4_GHZ:
hw_mode_as_string = "hw_mode=g";
break;
case IHostapd::Band::BAND_5_GHZ:
- hw_mode_as_string = "hw_mode=a\n"
- "ht_capab=[HT40+]\n"
- "vht_oper_chwidth=1";
+ hw_mode_as_string = "hw_mode=a";
+ if (iface_params.channelParams.enableAcs) {
+ ht_cap_vht_oper_chwidth_as_string =
+ "ht_capab=[HT40+]\n"
+ "vht_oper_chwidth=1";
+ }
break;
case IHostapd::Band::BAND_ANY:
- hw_mode_as_string = "hw_mode=any\n"
- "ht_capab=[HT40+]\n"
- "vht_oper_chwidth=1";
+ hw_mode_as_string = "hw_mode=any";
+ if (iface_params.channelParams.enableAcs) {
+ ht_cap_vht_oper_chwidth_as_string =
+ "ht_capab=[HT40+]\n"
+ "vht_oper_chwidth=1";
+ }
break;
default:
wpa_printf(MSG_ERROR, "Invalid band");
@@ -168,6 +175,7 @@
"ieee80211n=%d\n"
"ieee80211ac=%d\n"
"%s\n"
+ "%s\n"
"ignore_broadcast_ssid=%d\n"
"wowlan_triggers=any\n"
"%s\n",
@@ -175,8 +183,8 @@
channel_config_as_string.c_str(),
iface_params.hwModeParams.enable80211N ? 1 : 0,
iface_params.hwModeParams.enable80211AC ? 1 : 0,
- hw_mode_as_string.c_str(), nw_params.isHidden ? 1 : 0,
- encryption_config_as_string.c_str());
+ hw_mode_as_string.c_str(), ht_cap_vht_oper_chwidth_as_string.c_str(),
+ nw_params.isHidden ? 1 : 0, encryption_config_as_string.c_str());
}
} // namespace