From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.haj.ipfire.org (localhost [IPv6:::1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4dxF8244yPz3322 for ; Wed, 21 Jan 2026 19:46:58 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (secp384r1 raw public key) server-digest SHA384 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mail01.haj.ipfire.org", Issuer "R12" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4dxF7q294Qz2xLw for ; Wed, 21 Jan 2026 19:46:47 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4dxF7n5mzNz274 for ; Wed, 21 Jan 2026 19:46:45 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1769024806; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vy6IOC8M1GHbikfR2z0QXsh8oZOI3QKYJkconUtP3mk=; b=JFimiVbLBQBHVraSZR6paFAVIP7+XnZLSfwP+LXuAAywHHhf1rATsydbT2eRSwP/o7EYzG oOPoN1JAbPQlGWAw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1769024806; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vy6IOC8M1GHbikfR2z0QXsh8oZOI3QKYJkconUtP3mk=; b=TWvS2ssQLKyk8sZw1ixkDYKbV9PP+0fapf8P2FxG/I9Esgvrbx3eN5JzWiYwurWVXbGGKo 91ppuaI6MYpSHWk10celVOIk0Pf2Axwn6kOc/AoxoVYUnKD4rGkXUT6TTK+j2ZfF6LkAOp i8elCaPDb6VHv2/yMlJFcgpkHi7xL/byVYIaza8Jjkh1HS1OTBIOQuGoS0odgg0h6QnkB3 viPROLEZRNNgL57zZOlGKaVux5V3dCavEH3GlazD/0hsuhOeqwLEs6BSezdcvnuICdM3PD 6gW9OmSEdmmkVYEm1SRgCThdP0a9mpLvK/69IT4HyU9fzJtf0qZX/snwCPhZfA== Message-ID: <163650f3-3968-434e-8cef-fb2405e5a45f@ipfire.org> Date: Wed, 21 Jan 2026 20:46:40 +0100 Precedence: list List-Id: List-Subscribe: , List-Unsubscribe: , List-Post: List-Help: Sender: Mail-Followup-To: MIME-Version: 1.0 Subject: Re: [PATCH 1/5] hostapd: Bring back support for 802.11g/a To: development@lists.ipfire.org References: <20260119162140.3373757-1-michael.tremer@ipfire.org> Content-Language: en-GB From: Bernhard Bitsch In-Reply-To: <20260119162140.3373757-1-michael.tremer@ipfire.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Reviewed-by: Bernhard Bitsch Am 19.01.2026 um 17:21 schrieb Michael Tremer: > 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 > --- > 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(-) > > 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'}
"; > } > > @@ -343,6 +343,12 @@ print < $Lang::tr{'wlanap 802.11agn 20mhz'} > > > + > + > + > + > > > > 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