aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2021-05-25 10:57:01 +0200
committerFelix Fietkau <nbd@nbd.name>2021-11-23 18:30:04 +0100
commit42d542e04f94497baa21e2162e8a961e376599d4 (patch)
treece247ec693126d0d228fe31fe30210a57952d882 /package/kernel/mac80211
parentb535ec25ebf9816270a8c26ef354910535a00bb4 (diff)
downloadupstream-42d542e04f94497baa21e2162e8a961e376599d4.tar.gz
upstream-42d542e04f94497baa21e2162e8a961e376599d4.tar.bz2
upstream-42d542e04f94497baa21e2162e8a961e376599d4.zip
mac80211: fix center freq selection for 6 GHz
Signed-off-by: Felix Fietkau <nbd@nbd.name> (cherry-picked from commit 8d79915327b7b9ed221f513589281328e4fdc6ef)
Diffstat (limited to 'package/kernel/mac80211')
-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 f8e7a2a37f..2d99414702 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