Browse Source

mac80211: fix txpower when using DFS channels

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 <[email protected]
Signed-off-by: David Bauer <[email protected]>
Tested-by: Martin Weinelt <[email protected]>
David Bauer 6 years ago
parent
commit
6ec288a178
1 changed files with 7 additions and 2 deletions
  1. 7 2
      package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh

+ 7 - 2
package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh

@@ -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%%.*}"