[1/5] hostapd: Bring back support for 802.11g/a

Message ID 20260119162140.3373757-1-michael.tremer@ipfire.org
State New
Headers
Series [1/5] hostapd: Bring back support for 802.11g/a |

Commit Message

Michael Tremer 19 Jan 2026, 4:21 p.m. UTC
I just have a little bit of easily accessible testing hardware in form
of USB devices which are very suitable for testing, but the one that I
found in my drawer doesn't support 802.11n.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 doc/language_issues.de           |  2 ++
 doc/language_issues.en           |  2 ++
 doc/language_issues.es           |  2 ++
 doc/language_issues.fr           |  2 ++
 doc/language_issues.it           |  2 ++
 doc/language_issues.nl           |  2 ++
 doc/language_issues.pl           |  2 ++
 doc/language_issues.ru           |  2 ++
 doc/language_issues.tr           |  2 ++
 doc/language_issues.tw           |  2 ++
 doc/language_issues.zh           |  2 ++
 doc/language_missings            | 20 ++++++++++++++++++++
 html/cgi-bin/wlanap.cgi          |  8 +++++++-
 langs/en/cgi-bin/en.pl           |  2 ++
 src/initscripts/packages/hostapd | 15 +++++++++++++--
 15 files changed, 64 insertions(+), 3 deletions(-)
  

Patch

diff --git a/doc/language_issues.de b/doc/language_issues.de
index 008b9520f..1795ec5af 100644
--- a/doc/language_issues.de
+++ b/doc/language_issues.de
@@ -1210,6 +1210,8 @@  WARNING: untranslated string: wio_webinterface_link = unknown string
 WARNING: untranslated string: wireguard = WireGuard
 WARNING: untranslated string: wlan client encryption wpa3 = WPA3
 WARNING: untranslated string: wlan client management frame protection = Management Frame Protection
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11w disabled = Disabled
 WARNING: untranslated string: wlanap 802.11w enforced = Enforced
 WARNING: untranslated string: wlanap 802.11w optional = Optional
diff --git a/doc/language_issues.en b/doc/language_issues.en
index 6ea0f1963..30e2fbcce 100644
--- a/doc/language_issues.en
+++ b/doc/language_issues.en
@@ -2408,6 +2408,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.es b/doc/language_issues.es
index 48dfffa7e..980d27874 100644
--- a/doc/language_issues.es
+++ b/doc/language_issues.es
@@ -1250,6 +1250,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.fr b/doc/language_issues.fr
index 65b3838d0..a7c31beaf 100644
--- a/doc/language_issues.fr
+++ b/doc/language_issues.fr
@@ -1301,6 +1301,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.it b/doc/language_issues.it
index 5214abda2..10e77143f 100644
--- a/doc/language_issues.it
+++ b/doc/language_issues.it
@@ -1652,6 +1652,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.nl b/doc/language_issues.nl
index d3f814785..5d56a5ca2 100644
--- a/doc/language_issues.nl
+++ b/doc/language_issues.nl
@@ -1672,6 +1672,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.pl b/doc/language_issues.pl
index 24b5429ef..7a1128c20 100644
--- a/doc/language_issues.pl
+++ b/doc/language_issues.pl
@@ -1920,6 +1920,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.ru b/doc/language_issues.ru
index 0682bfd6f..b6320fd30 100644
--- a/doc/language_issues.ru
+++ b/doc/language_issues.ru
@@ -1919,6 +1919,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
index 2ef6920ac..2ad1bf054 100644
--- a/doc/language_issues.tr
+++ b/doc/language_issues.tr
@@ -1522,6 +1522,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.tw b/doc/language_issues.tw
index 73e116b7c..c676ffa52 100644
--- a/doc/language_issues.tw
+++ b/doc/language_issues.tw
@@ -1268,6 +1268,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_issues.zh b/doc/language_issues.zh
index 73e116b7c..c676ffa52 100644
--- a/doc/language_issues.zh
+++ b/doc/language_issues.zh
@@ -1268,6 +1268,8 @@  WARNING: untranslated string: wlanap 802.11ac 160mhz = IEEE 802.11ac @ 160 MHz
 WARNING: untranslated string: wlanap 802.11ac 20mhz = IEEE 802.11ac @ 20 MHz
 WARNING: untranslated string: wlanap 802.11ac 40mhz = IEEE 802.11ac @ 40 MHz
 WARNING: untranslated string: wlanap 802.11ac 80mhz = IEEE 802.11ac @ 80 MHz
+WARNING: untranslated string: wlanap 802.11ag = IEEE 802.11a/g
+WARNING: untranslated string: wlanap 802.11ag 20mhz = IEEE802.11a/g @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn = IEEE 802.11an/gn
 WARNING: untranslated string: wlanap 802.11agn 20mhz = IEEE 802.11an/gn @ 20 MHz
 WARNING: untranslated string: wlanap 802.11agn 40mhz = IEEE 802.11an/gn @ 40 MHz
diff --git a/doc/language_missings b/doc/language_missings
index 1d435f16f..268add65b 100644
--- a/doc/language_missings
+++ b/doc/language_missings
@@ -141,6 +141,8 @@ 
 < wg pre-shared key (optional)
 < winbind daemon
 < wireguard
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11w disabled
 < wlanap 802.11w enforced
 < wlanap 802.11w optional
@@ -217,6 +219,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -398,6 +402,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -1040,6 +1046,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -1754,6 +1762,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -2882,6 +2892,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -4048,6 +4060,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -4591,6 +4605,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -4727,6 +4743,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
@@ -4828,6 +4846,8 @@ 
 < wlanap 802.11ac 20mhz
 < wlanap 802.11ac 40mhz
 < wlanap 802.11ac 80mhz
+< wlanap 802.11ag
+< wlanap 802.11ag 20mhz
 < wlanap 802.11agn
 < wlanap 802.11agn 20mhz
 < wlanap 802.11agn 40mhz
diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi
index 0d1c5a90b..0c5dad558 100644
--- a/html/cgi-bin/wlanap.cgi
+++ b/html/cgi-bin/wlanap.cgi
@@ -102,7 +102,7 @@  if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") {
 	}
 
 	# Validate MODE
-	unless ($cgiparams{'MODE'} =~ m/^(HT|HE|VHT|EHT)(20|40|80|160|320)$/) {
+	unless ($cgiparams{'MODE'} =~ m/^(|HT|HE|VHT|EHT)(20|40|80|160|320)$/) {
 		$errormessage .= "$Lang::tr{'wlanap invalid mode'}<br />";
 	}
 
@@ -343,6 +343,12 @@  print <<END;
 								$Lang::tr{'wlanap 802.11agn 20mhz'}
 							</option>
 						</optgroup>
+
+						<optgroup label="$Lang::tr{'wlanap 802.11ag'}">
+							<option value="20" $selected{'MODE'}{'20'}>
+								$Lang::tr{'wlanap 802.11ag 20mhz'}
+							</option>
+						</optgroup>
 					</select>
 				</td>
 			</tr>
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 79a512498..dda3e8d5b 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -3202,6 +3202,8 @@ 
 'wlanap 802.11ac 20mhz' => 'IEEE 802.11ac @ 20 MHz',
 'wlanap 802.11ac 40mhz' => 'IEEE 802.11ac @ 40 MHz',
 'wlanap 802.11ac 80mhz' => 'IEEE 802.11ac @ 80 MHz',
+'wlanap 802.11ag' => 'IEEE 802.11a/g',
+'wlanap 802.11ag 20mhz' => 'IEEE802.11a/g @ 20 MHz',
 'wlanap 802.11agn' => 'IEEE 802.11an/gn',
 'wlanap 802.11agn 20mhz' => 'IEEE 802.11an/gn @ 20 MHz',
 'wlanap 802.11agn 40mhz' => 'IEEE 802.11an/gn @ 40 MHz',
diff --git a/src/initscripts/packages/hostapd b/src/initscripts/packages/hostapd
index 5384badab..9bb6a2120 100644
--- a/src/initscripts/packages/hostapd
+++ b/src/initscripts/packages/hostapd
@@ -360,6 +360,15 @@  write_config() {
 	# Always enable WMM
 	echo "wmm_enabled=1"
 
+	# 802.11n
+	local enable_n=0
+
+	case "${MODE}" in
+		HT*|VHT*|HE*|EHT*)
+			enable_n=1
+			;;
+	esac
+
 	# 802.11ac
 	local enable_ac=0
 	local vht_oper_chwidth=0
@@ -507,8 +516,10 @@  write_config() {
 		fi
 	fi
 
-	# Always enable 802.11n
-	echo "ieee80211n=1"
+	# Enable 802.11n?
+	if [ "${enable_n}" -eq 1 ]; then
+		echo "ieee80211n=1"
+	fi
 
 	# Set HT capabilities
 	if [ ${#ht_caps[@]} -gt 0 ]; then