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