aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2021-05-25 10:57:01 +0200
committerFelix Fietkau <nbd@nbd.name>2021-05-26 11:48:14 +0200
commit8d79915327b7b9ed221f513589281328e4fdc6ef (patch)
treec0cf6d3ba539fb1ae8e5c155e0377bed168e5150
parentd87b58bb09100beaa4825d6c8e50c894783ca2d5 (diff)
downloadupstream-8d79915327b7b9ed221f513589281328e4fdc6ef.tar.gz
upstream-8d79915327b7b9ed221f513589281328e4fdc6ef.tar.bz2
upstream-8d79915327b7b9ed221f513589281328e4fdc6ef.zip
mac80211: fix center freq selection for 6 GHz
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh26
1 files changed, 20 insertions, 6 deletions
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index 8771f12d2f..4c3ea50831 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -194,12 +194,14 @@ mac80211_hostapd_setup_base() {
enable_ac=0
vht_oper_chwidth=0
vht_center_seg0=
+ chan_ofs=0
+ [ "$band" = "6g" ] && chan_ofs=1
idx="$channel"
case "$htmode" in
VHT20|HE20) enable_ac=1;;
VHT40|HE40)
- case "$(( ($channel / 4) % 2 ))" in
+ case "$(( (($channel / 4) + $chan_ofs) % 2 ))" in
1) idx=$(($channel + 2));;
0) idx=$(($channel - 2));;
esac
@@ -207,7 +209,7 @@ mac80211_hostapd_setup_base() {
vht_center_seg0=$idx
;;
VHT80|HE80)
- case "$(( ($channel / 4) % 4 ))" in
+ case "$(( (($channel / 4) + $chan_ofs) % 4 ))" in
1) idx=$(($channel + 6));;
2) idx=$(($channel + 2));;
3) idx=$(($channel - 2));;
@@ -218,10 +220,22 @@ mac80211_hostapd_setup_base() {
vht_center_seg0=$idx
;;
VHT160|HE160)
- case "$channel" in
- 36|40|44|48|52|56|60|64) idx=50;;
- 100|104|108|112|116|120|124|128) idx=114;;
- esac
+ if [ "$band" = "6g" ]; then
+ case "$channel" in
+ 1|5|9|13|17|21|25|29) idx=15;;
+ 33|37|41|45|49|53|57|61) idx=47;;
+ 65|69|73|77|81|85|89|93) idx=79;;
+ 97|101|105|109|113|117|121|125) idx=111;;
+ 129|133|137|141|145|149|153|157) idx=143;;
+ 161|165|169|173|177|181|185|189) idx=175;;
+ 193|197|201|205|209|213|217|221) idx=207;;
+ esac
+ else
+ case "$channel" in
+ 36|40|44|48|52|56|60|64) idx=50;;
+ 100|104|108|112|116|120|124|128) idx=114;;
+ esac
+ fi
enable_ac=1
vht_oper_chwidth=2
vht_center_seg0=$idx