mac80211: fix txpower when using DFS channels
authorDavid Bauer <mail@david-bauer.net>
Sat, 14 Dec 2019 22:38:02 +0000 (23:38 +0100)
committerDavid Bauer <mail@david-bauer.net>
Sun, 15 Dec 2019 23:50:10 +0000 (00:50 +0100)
With this patch, txpower for the PHY is applied when configuring the PHY
instead of the VIF. Otherwise, the configured txpower is not applied for
the first initialized VIF when using DFS channels, as it is currently
applied too early when the CAC hasn't finished.

Reported-by: Martin Weinelt <martin@darmstadt.freifunk.net
Signed-off-by: David Bauer <mail@david-bauer.net>
Tested-by: Martin Weinelt <martin@darmstadt.freifunk.net>
package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh

index 18033e9d567a4c036fabc3b5762ee12dffa63edb..f1882ec509d34a6d6758532a46535c71044b97b7 100644 (file)
@@ -743,7 +743,7 @@ mac80211_setup_vif() {
 
        json_select config
        json_get_vars mode
-       json_get_var vif_txpower txpower
+       json_get_var vif_txpower
        json_get_var vif_enable enable 1
 
        [ "$vif_enable" = 1 ] || action=down
@@ -753,7 +753,6 @@ mac80211_setup_vif() {
                json_select ..
                return
        }
-       set_default vif_txpower "$txpower"
        [ -z "$vif_txpower" ] || iw dev "$ifname" set txpower fixed "${vif_txpower%%.*}00"
 
        case "$mode" in
@@ -908,6 +907,12 @@ drv_mac80211_setup() {
        iw phy "$phy" set antenna_gain $antenna_gain
        iw phy "$phy" set distance "$distance"
 
+       if [ -n "$txpower" ]; then
+               iw phy "$phy" set txpower fixed "${txpower%%.*}00"
+       else
+               iw phy "$phy" set txpower auto
+       fi
+
        [ -n "$frag" ] && iw phy "$phy" set frag "${frag%%.*}"
        [ -n "$rts" ] && iw phy "$phy" set rts "${rts%%.*}"