diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-05-25 10:57:01 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-11-23 18:30:04 +0100 |
commit | 42d542e04f94497baa21e2162e8a961e376599d4 (patch) | |
tree | ce247ec693126d0d228fe31fe30210a57952d882 /package/kernel/mac80211 | |
parent | b535ec25ebf9816270a8c26ef354910535a00bb4 (diff) | |
download | upstream-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.sh | 26 |
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 |