ic->ic_flags &= ~IEEE80211_F_TXPOW_FIXED;
}
done:
-@@ -1588,9 +1574,22 @@ ieee80211_ioctl_giwtxpow(struct net_devi
+@@ -1588,9 +1574,23 @@ ieee80211_ioctl_giwtxpow(struct net_devi
{
struct ieee80211vap *vap = dev->priv;
struct ieee80211com *ic = vap->iv_ic;
+
+ if (ic->ic_bsschan && (ic->ic_bsschan != IEEE80211_CHAN_ANYC)) {
+ txp = min(txp, (u16) ic->ic_bsschan->ic_maxpower);
-+ } else if (ic->ic_cur_txpower > 0) {
++ }
++ if (ic->ic_cur_txpower > 0) {
+ txp = min(txp, ic->ic_cur_txpower);
+ }
+ if (ic->ic_flags & IEEE80211_F_TXPOW_FIXED) {
hdrlen = ieee80211_anyhdrsize(wh);
pktlen = skb->len + IEEE80211_CRC_LEN;
-@@ -8390,7 +8389,7 @@ ath_tx_start(struct net_device *dev, str
+@@ -8394,7 +8393,7 @@ ath_tx_start(struct net_device *dev, str
pktlen, /* packet length */
hdrlen, /* header length */
atype, /* Atheros packet type */
txrate, try0, /* series 0 rate/tries */
keyix, /* key cache index */
antenna, /* antenna mode */
-@@ -10383,59 +10382,16 @@ ath_get_clamped_maxtxpower(struct ath_so
+@@ -10387,59 +10386,16 @@ ath_get_clamped_maxtxpower(struct ath_so
/* XXX: this function needs some locking to avoid being called
* twice/interrupted */