For some channels, like FCC 165, the determination of the control
channel is being done disregarding mac80211 config, which is
HT40- (actually the channel is 20Mhz, we use here hostapd
fallback to 20MHz). Hence, this patch let the previous logic decide
for the cases where HT40+- are allowed and update ht40_capab,
if only one of these configs is allowed (+ or -).

Signed-off-by: Eduardo Abinader <eduardoabina...@gmail.com>
---
 .../mac80211/files/lib/netifd/wireless/mac80211.sh   | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh 
b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index 9ebd76be49..8b55331dbf 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -84,6 +84,23 @@ mac80211_add_capabilities() {
        export -n -- "$__var=$__out"
 }
 
+mac80211_get_ht40_capab() {
+       phy=$1
+       channel=$2
+
+       freq=$(get_freq $phy $channel)
+       [ -z "$freq" ] && return
+
+       value=$(iw phy $phy channels|grep -vi disabled)
+
+       [ -z "$(echo "$value"|grep "$freq")" ] && return
+       value=$(echo $value|sed 's/'$freq'[^{*}]*widths:/{}/'|sed 's/.*{} 
//'|sed 's/ \*.*//')
+
+       [ $(echo $value|grep -o HT40|wc -l) -gt 1 ] && return
+
+       echo "$value"|sed 's/.*HT40//'|sed 's/ .*//'
+}
+
 mac80211_hostapd_setup_base() {
        local phy="$1"
 
@@ -121,6 +138,9 @@ mac80211_hostapd_setup_base() {
                                        esac
                                ;;
                        esac
+                       adjust_ht40=$(mac80211_get_ht40_capab $phy $channel)
+                       [ -n "$adjust_ht40" ] && ht_capab="[HT40$adjust_ht40]"
+
                        [ "$auto_channel" -gt 0 ] && ht_capab="[HT40+]"
                ;;
                *) ieee80211n= ;;
-- 
2.11.0


_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to