[8/9] hostapd: Fix 40 MHz flags when manually chosing the channel

Message ID 20260429194934.863108-8-michael.tremer@ipfire.org
State New
Headers
Series [1/9] hostapd: Force setting reg domain before hostapd starts |

Commit Message

Michael Tremer 29 Apr 2026, 7:49 p.m. UTC
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 src/initscripts/packages/hostapd | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)
  

Patch

diff --git a/src/initscripts/packages/hostapd b/src/initscripts/packages/hostapd
index eb00e11d3..3d6ea4f69 100644
--- a/src/initscripts/packages/hostapd
+++ b/src/initscripts/packages/hostapd
@@ -189,6 +189,9 @@  write_config() {
 	local he_caps=()
 	local eht_caps=()
 
+	# Clear [HT40+][HT40-]
+	ht_flags="$(( ht_flags & ~0x0002 ))"
+
 	# HT Capabilities
 	for flag in ${!HT_CAPS[@]}; do
 		if (( ${ht_flags} & ${flag} )); then
@@ -381,8 +384,32 @@  write_config() {
 	local enable_n=0
 
 	case "${CONFIG["MODE"]}" in
-		HT*|VHT*|HE*|EHT*)
+		HT20|VHT20|HE20|EHT20)
+			enable_n=1
+			;;
+
+		*40|*80|*160|*320)
 			enable_n=1
+
+			case "${CONFIG["BAND"]}" in
+				6g|5g)
+					case "$(( ((${CONFIG["CHANNEL"]} / 4) + channel_offset) % 2 ))" in
+						0)
+							ht_caps+=( "[HT40-]" )
+							;;
+						1)
+							ht_caps+=( "[HT40+]" )
+							;;
+					esac
+					;;
+				2g)
+					if [ "${CONFIG["CHANNEL"]}" -lt 7 ]; then
+						ht_caps+=( "[HT40+]" )
+					else
+						ht_caps+=( "[HT40-]" )
+					fi
+					;;
+			esac
 			;;
 	esac