madwifi: fix another instance of excessive stack usage in wlanconfig
[openwrt/svn-archive/archive.git] / package / madwifi / patches / 414-txpower.patch
index 3e7e315d11b4569d6af684b8e84b74a94dc0f701..662afe7d93c971850c5a975e198ce82927309a3d 100644 (file)
@@ -63,7 +63,7 @@
  
 +      power = ic->ic_max_txpower;
 +      if (ic->ic_bsschan && (ic->ic_bsschan != IEEE80211_CHAN_ANYC))
-+              power = min(power, ic->ic_bsschan->ic_maxpower);
++              power = min(power, (u_int16_t) ic->ic_bsschan->ic_maxpower);
 +
        /* txpower (128 values, but will print out only IW_MAX_TXPOWER) */
 -      range->num_txpower = (ic->ic_txpowlimit >= 8) ? IW_MAX_TXPOWER : ic->ic_txpowlimit;
                        - (IW_MAX_TXPOWER - i - 1) * step;
  
        range->txpower_capa = IW_TXPOW_DBM;
-@@ -1382,10 +1388,8 @@ ieee80211_ioctl_siwtxpow(struct net_devi
-       disabled = (fixed && vap->iv_bss->ni_txpower == 0);
+@@ -1379,13 +1385,11 @@ ieee80211_ioctl_siwtxpow(struct net_devi
+       int fixed, disabled;
+       fixed = (ic->ic_flags & IEEE80211_F_TXPOW_FIXED);
+-      disabled = (fixed && vap->iv_bss->ni_txpower == 0);
++      disabled = (fixed && ic->ic_txpowlimit == 0);
        if (rrq->disabled) {
                if (!disabled) {
 -                      if ((ic->ic_caps & IEEE80211_C_TXPMGT) == 0)
 +      struct ieee80211_channel *c;
 +      u_int16_t txp = ic->ic_max_txpower;
 +
-+      if (ic->ic_bsschan && (ic->ic_bsschan != IEEE80211_CHAN_ANYC))
-+              txp = min(txp, ic->ic_bsschan->ic_maxpower);
++      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) {
 +              txp = min(txp, ic->ic_cur_txpower);
 +      }
  
  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
+@@ -8390,7 +8389,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
+@@ -10383,59 +10382,16 @@ ath_get_clamped_maxtxpower(struct ath_so
  
  /* XXX: this function needs some locking to avoid being called 
   * twice/interrupted */