[openwrt/openwrt] mac80211: rework default config script
LEDE Commits
lede-commits at lists.infradead.org
Tue Nov 23 09:44:04 PST 2021
nbd pushed a commit to openwrt/openwrt.git, branch openwrt-21.02:
https://git.openwrt.org/7a2405efc672011d39da16cfcb8402a283f8f53e
commit 7a2405efc672011d39da16cfcb8402a283f8f53e
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Mon May 24 14:56:02 2021 +0200
mac80211: rework default config script
Emit the new band option instead of hwmode
Support 6 GHz band and HE options
Signed-off-by: Felix Fietkau <nbd at nbd.name>
(cherry-picked from commit 8504212f65865449dd6b9ed9daa0ba9781f8f287)
---
package/kernel/mac80211/files/lib/wifi/mac80211.sh | 105 +++++++++++++++++----
1 file changed, 85 insertions(+), 20 deletions(-)
diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
index 3e99f06693..0763da8fd8 100644
--- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
@@ -57,6 +57,85 @@ check_mac80211_device() {
[ "$phy" = "$dev" ] && found=1
}
+
+__get_band_defaults() {
+ local phy="$1"
+
+ ( iw phy "$phy" info; echo ) | awk '
+BEGIN {
+ bands = ""
+}
+
+($1 == "Band" || $1 == "") && band {
+ if (channel) {
+ mode="NOHT"
+ if (ht) mode="HT20"
+ if (vht) mode="VHT80"
+ if (he) mode="HE80"
+ if (he && band == "1:") mode="HE20"
+ sub("\\[", "", channel)
+ sub("\\]", "", channel)
+ bands = bands band channel ":" mode " "
+ }
+ band=""
+}
+
+$1 == "Band" {
+ band = $2
+ channel = ""
+ vht = ""
+ ht = ""
+ he = ""
+}
+
+$0 ~ "Capabilities:" {
+ ht=1
+}
+
+$0 ~ "VHT Capabilities:" {
+ vht=1
+}
+
+$0 ~ "HE Iftypes" {
+ he=1
+}
+
+$1 == "*" && $3 == "MHz" && $0 !~ /disabled/ && band && !channel {
+ channel = $4
+}
+
+END {
+ print bands
+}'
+}
+
+get_band_defaults() {
+ local phy="$1"
+
+ for c in $(__get_band_defaults "$phy"); do
+ local band="${c%%:*}"
+ c="${c#*:}"
+ local chan="${c%%:*}"
+ c="${c#*:}"
+ local mode="${c%%:*}"
+
+ case "$band" in
+ 1) band=2g;;
+ 2) band=5g;;
+ 3) band=60g;;
+ 4) band=6g;;
+ *) band="";;
+ esac
+
+ [ -n "$band" ] || continue
+ [ -n "$mode_band" -a "$band" = "6g" ] && return
+
+ mode_band="$band"
+ channel="$chan"
+ htmode="$mode"
+ done
+}
+
detect_mac80211() {
devidx=0
config_load wireless
@@ -75,26 +154,12 @@ detect_mac80211() {
config_foreach check_mac80211_device wifi-device
[ "$found" -gt 0 ] && continue
- mode_band="g"
- channel="11"
+ mode_band=""
+ channel=""
htmode=""
ht_capab=""
- iw phy "$dev" info | grep -q 'Capabilities:' && htmode=HT20
-
- iw phy "$dev" info | grep -q '\* 5... MHz \[' && {
- mode_band="a"
- channel=$(iw phy "$dev" info | grep '\* 5... MHz \[' | grep '(disabled)' -v -m 1 | sed 's/[^[]*\[\|\].*//g')
- iw phy "$dev" info | grep -q 'VHT Capabilities' && htmode="VHT80"
- }
-
- iw phy "$dev" info | grep -q '\* 5.... MHz \[' && {
- mode_band="ad"
- channel=$(iw phy "$dev" info | grep '\* 5.... MHz \[' | grep '(disabled)' -v -m 1 | sed 's/[^[]*\[\|\|\].*//g')
- iw phy "$dev" info | grep -q 'Capabilities:' && htmode="HT20"
- }
-
- [ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode"
+ get_band_defaults "$dev"
path="$(mac80211_phy_to_path "$dev")"
if [ -n "$path" ]; then
@@ -106,10 +171,10 @@ detect_mac80211() {
uci -q batch <<-EOF
set wireless.radio${devidx}=wifi-device
set wireless.radio${devidx}.type=mac80211
- set wireless.radio${devidx}.channel=${channel}
- set wireless.radio${devidx}.hwmode=11${mode_band}
${dev_id}
- ${ht_capab}
+ set wireless.radio${devidx}.channel=${channel}
+ set wireless.radio${devidx}.band=${mode_band}
+ set wireless.radio${devidx}.htmode=$htmode
set wireless.radio${devidx}.disabled=1
set wireless.default_radio${devidx}=wifi-iface
More information about the lede-commits
mailing list