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@nbd.name>
(cherry-picked from commit 8504212f65)
			
			
This commit is contained in:
		| @@ -57,6 +57,85 @@ check_mac80211_device() { | |||||||
| 	[ "$phy" = "$dev" ] && found=1 | 	[ "$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() { | detect_mac80211() { | ||||||
| 	devidx=0 | 	devidx=0 | ||||||
| 	config_load wireless | 	config_load wireless | ||||||
| @@ -75,26 +154,12 @@ detect_mac80211() { | |||||||
| 		config_foreach check_mac80211_device wifi-device | 		config_foreach check_mac80211_device wifi-device | ||||||
| 		[ "$found" -gt 0 ] && continue | 		[ "$found" -gt 0 ] && continue | ||||||
|  |  | ||||||
| 		mode_band="g" | 		mode_band="" | ||||||
| 		channel="11" | 		channel="" | ||||||
| 		htmode="" | 		htmode="" | ||||||
| 		ht_capab="" | 		ht_capab="" | ||||||
|  |  | ||||||
| 		iw phy "$dev" info | grep -q 'Capabilities:' && htmode=HT20 | 		get_band_defaults "$dev" | ||||||
|  |  | ||||||
| 		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" |  | ||||||
|  |  | ||||||
| 		path="$(mac80211_phy_to_path "$dev")" | 		path="$(mac80211_phy_to_path "$dev")" | ||||||
| 		if [ -n "$path" ]; then | 		if [ -n "$path" ]; then | ||||||
| @@ -106,10 +171,10 @@ detect_mac80211() { | |||||||
| 		uci -q batch <<-EOF | 		uci -q batch <<-EOF | ||||||
| 			set wireless.radio${devidx}=wifi-device | 			set wireless.radio${devidx}=wifi-device | ||||||
| 			set wireless.radio${devidx}.type=mac80211 | 			set wireless.radio${devidx}.type=mac80211 | ||||||
| 			set wireless.radio${devidx}.channel=${channel} |  | ||||||
| 			set wireless.radio${devidx}.hwmode=11${mode_band} |  | ||||||
| 			${dev_id} | 			${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.radio${devidx}.disabled=1 | ||||||
|  |  | ||||||
| 			set wireless.default_radio${devidx}=wifi-iface | 			set wireless.default_radio${devidx}=wifi-iface | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau