KASSERT(c->ic_ieee < IEEE80211_CHAN_MAX,
("channel with bogus ieee number %u", c->ic_ieee));
setbit(ic->ic_chan_avail, c->ic_ieee);
-+ ic->ic_max_txpower = max(ic->ic_max_txpower, (u16) c->ic_maxpower * 2);
++ ic->ic_max_txpower = max(ic->ic_max_txpower, (u16) (c->ic_maxpower * 2));
if (c->ic_scanflags & IEEE80211_NOSCAN_DEFAULT)
c->ic_scanflags |= IEEE80211_NOSCAN_SET;
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) {
static void ath_poll_disable(struct net_device *dev);
static void ath_poll_enable(struct net_device *dev);
-@@ -3159,7 +3158,7 @@ ath_tx_startraw(struct net_device *dev,
+@@ -3168,7 +3167,7 @@ ath_tx_startraw(struct net_device *dev,
try0 = ph->try0;
rt = sc->sc_currates;
txrate = dot11_to_ratecode(sc, rt, ph->rate0);
hdrlen = ieee80211_anyhdrsize(wh);
pktlen = skb->len + IEEE80211_CRC_LEN;
-@@ -8381,7 +8380,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 */
-@@ -10364,59 +10363,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 */