diff --git a/package/madwifi/patches/414-txpower.patch b/package/madwifi/patches/414-txpower.patch
index 753cd010fd67a40728f77109b008509692c90621..6b33b8b1c0ff3db5338188f1c7ebb9e796307f5f 100644
--- a/package/madwifi/patches/414-txpower.patch
+++ b/package/madwifi/patches/414-txpower.patch
@@ -38,7 +38,7 @@
  			IEEE80211_KEYIX_NONE);
 --- a/net80211/ieee80211_var.h
 +++ b/net80211/ieee80211_var.h
-@@ -343,8 +343,9 @@ struct ieee80211com {
+@@ -343,8 +343,8 @@ struct ieee80211com {
  	u_int16_t ic_holdover;			/* PM hold over duration */
  	u_int16_t ic_bmissthreshold;		/* beacon miss threshold (# beacons) */
  	unsigned long ic_bmiss_guard;		/* when to cease ignoring bmiss (jiffies) */
@@ -46,13 +46,34 @@
 -	u_int16_t ic_newtxpowlimit; 		/* tx power limit to change to (in 0.5 dBm) */
 +	u_int16_t ic_txpowlimit; 		/* configured global tx power limit (in 0.5 dBm) */
 +	u_int16_t ic_max_txpower;			/* global hardware tx power limit */
-+	u_int16_t ic_cur_txpower;			/* current tx power */
  	u_int16_t ic_uapsdmaxtriggers; 		/* max triggers that could arrive */
  	u_int8_t ic_coverageclass; 		/* coverage class */
  	u_int8_t ic_protmode_rssi;			/* rssi threshold for protection mode */
 --- a/net80211/ieee80211_wireless.c
 +++ b/net80211/ieee80211_wireless.c
-@@ -920,17 +920,23 @@ ieee80211_ioctl_giwrange(struct net_devi
+@@ -908,6 +908,21 @@ ieee80211_ioctl_giwessid(struct net_devi
+ 	return 0;
+ }
+ 
++static u16
++ieee80211_get_maxtxpow(struct ieee80211com *ic)
++{
++	u_int16_t txp = IEEE80211_TXPOWER_MAX;
++
++	if (ic->ic_bsschan && (ic->ic_bsschan != IEEE80211_CHAN_ANYC))
++		txp = min(txp, (u16) ic->ic_bsschan->ic_maxpower);
++
++	if (ic->ic_max_txpower > 0)
++		txp = min(txp, ic->ic_max_txpower);
++
++	return txp;
++}
++
++
+ static int
+ ieee80211_ioctl_giwrange(struct net_device *dev, struct iw_request_info *info,
+ 	struct iw_point *data, char *extra)
+@@ -920,17 +935,21 @@ ieee80211_ioctl_giwrange(struct net_devi
  	u_int8_t reported[IEEE80211_CHAN_BYTES];	/* XXX stack usage? */
  	int i, r;
  	int step = 0;
@@ -61,9 +82,7 @@
  	data->length = sizeof(struct iw_range);
  	memset(range, 0, sizeof(struct iw_range));
  
-+	power = ic->ic_max_txpower;
-+	if (ic->ic_bsschan && (ic->ic_bsschan != IEEE80211_CHAN_ANYC))
-+		power = min(power, (u_int16_t) ic->ic_bsschan->ic_maxpower);
++	power = ieee80211_get_maxtxpow(ic);
 +
  	/* txpower (128 values, but will print out only IW_MAX_TXPOWER) */
 -	range->num_txpower = (ic->ic_txpowlimit >= 8) ? IW_MAX_TXPOWER : ic->ic_txpowlimit;
@@ -79,7 +98,7 @@
  			- (IW_MAX_TXPOWER - i - 1) * step;
  
  	range->txpower_capa = IW_TXPOW_DBM;
-@@ -1379,13 +1385,11 @@ ieee80211_ioctl_siwtxpow(struct net_devi
+@@ -1379,13 +1398,11 @@ ieee80211_ioctl_siwtxpow(struct net_devi
  	int fixed, disabled;
  
  	fixed = (ic->ic_flags & IEEE80211_F_TXPOW_FIXED);
@@ -95,7 +114,7 @@
  			goto done;
  		}
  		return 0;
-@@ -1396,30 +1400,12 @@ ieee80211_ioctl_siwtxpow(struct net_devi
+@@ -1396,30 +1413,12 @@ ieee80211_ioctl_siwtxpow(struct net_devi
  			return -EOPNOTSUPP;
  		if (rrq->flags != IW_TXPOW_DBM)
  			return -EINVAL;
@@ -129,7 +148,7 @@
  		ic->ic_flags &= ~IEEE80211_F_TXPOW_FIXED;
  	}
  done:
-@@ -1588,9 +1574,23 @@ ieee80211_ioctl_giwtxpow(struct net_devi
+@@ -1588,9 +1587,18 @@ ieee80211_ioctl_giwtxpow(struct net_devi
  {
  	struct ieee80211vap *vap = dev->priv;
  	struct ieee80211com *ic = vap->iv_ic;
@@ -138,14 +157,9 @@
 -	rrq->fixed = (ic->ic_flags & IEEE80211_F_TXPOW_FIXED) != 0;
 +	unsigned int power = ic->ic_txpowlimit;
 +	struct ieee80211_channel *c;
-+	u_int16_t txp = ic->ic_max_txpower;
++	u_int16_t txp;
 +
-+	if (ic->ic_bsschan && (ic->ic_bsschan != IEEE80211_CHAN_ANYC)) {
-+		txp = min(txp, (u16) ic->ic_bsschan->ic_maxpower);
-+	}
-+	if (ic->ic_cur_txpower > 0) {
-+		txp = min(txp, ic->ic_cur_txpower);
-+	}
++	txp = ieee80211_get_maxtxpow(ic);
 +	if (ic->ic_flags & IEEE80211_F_TXPOW_FIXED) {
 +		txp = min(txp, ic->ic_txpowlimit);
 +		rrq->fixed = 1;
@@ -242,7 +256,7 @@
 -	if (new_clamped_maxtxpower != prev_clamped_maxtxpower)
 -		ath_hal_settxpowlimit(ah, new_clamped_maxtxpower);
 +	ath_set_clamped_maxtxpower(sc, ic->ic_txpowlimit);
-+	ic->ic_cur_txpower = ath_get_clamped_maxtxpower(sc);
++	ic->ic_max_txpower = ath_get_clamped_maxtxpower(sc);
  }
  
  #ifdef ATH_SUPERG_XR
diff --git a/package/madwifi/patches/415-chan_switch.patch b/package/madwifi/patches/415-chan_switch.patch
index 6883136430a5ed8ada15bc8104b05cf7f3c914b1..6dc5da8383fc3c664b5f119e612f6e5ce7ed705c 100644
--- a/package/madwifi/patches/415-chan_switch.patch
+++ b/package/madwifi/patches/415-chan_switch.patch
@@ -171,7 +171,7 @@
  
  		/* Don't allow to change to channel with radar found */
  		if (c->ic_flags & IEEE80211_CHAN_RADAR)
-@@ -4626,7 +4598,13 @@ static void
+@@ -4634,7 +4606,13 @@ static void
  pre_announced_chanswitch(struct net_device *dev, u_int32_t channel, u_int32_t tbtt) {
  	struct ieee80211vap *vap = dev->priv;
  	struct ieee80211com *ic = vap->iv_ic;
diff --git a/package/madwifi/patches/417-beacon_txpower.patch b/package/madwifi/patches/417-beacon_txpower.patch
index 4d713901e0a4441d2bbe449b3efa1e47de9673ad..8a59c1211d66dd3ae6a92003c2cfb8f3d42fa025 100644
--- a/package/madwifi/patches/417-beacon_txpower.patch
+++ b/package/madwifi/patches/417-beacon_txpower.patch
@@ -48,7 +48,7 @@
  	struct ieee80211_node *iv_bss;			/* information for this node */
 --- a/net80211/ieee80211_wireless.c
 +++ b/net80211/ieee80211_wireless.c
-@@ -2863,6 +2863,9 @@ ieee80211_ioctl_setparam(struct net_devi
+@@ -2871,6 +2871,9 @@ ieee80211_ioctl_setparam(struct net_devi
  	case IEEE80211_PARAM_PROBEREQ:
  		vap->iv_no_probereq = !value;
  		break;
@@ -58,7 +58,7 @@
  #ifdef ATH_REVERSE_ENGINEERING
  	case IEEE80211_PARAM_DUMPREGS:
  		ieee80211_dump_registers(dev, info, w, extra);
-@@ -3228,6 +3231,9 @@ ieee80211_ioctl_getparam(struct net_devi
+@@ -3236,6 +3239,9 @@ ieee80211_ioctl_getparam(struct net_devi
  	case IEEE80211_PARAM_PROBEREQ:
  		param[0] = !vap->iv_no_probereq;
  		break;
@@ -68,7 +68,7 @@
  	default:
  		return -EOPNOTSUPP;
  	}
-@@ -5802,6 +5808,10 @@ static const struct iw_priv_args ieee802
+@@ -5810,6 +5816,10 @@ static const struct iw_priv_args ieee802
  	 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "probereq"},
  	{ IEEE80211_PARAM_PROBEREQ,
  	 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_probereq"},
diff --git a/package/madwifi/patches/421-channel_handling.patch b/package/madwifi/patches/421-channel_handling.patch
index c60cc9c3cdfb89d3588cd599a2188f28d72d6e27..e5302c1389d763447dee05aec4f1a6dd46eea21b 100644
--- a/package/madwifi/patches/421-channel_handling.patch
+++ b/package/madwifi/patches/421-channel_handling.patch
@@ -999,7 +999,7 @@
  	u_int16_t ic_modecaps;			/* set of mode capabilities */
  	u_int16_t ic_curmode;			/* current mode */
  	u_int16_t ic_lintval;			/* beacon interval */
-@@ -715,6 +713,7 @@ MALLOC_DECLARE(M_80211_VAP);
+@@ -714,6 +712,7 @@ MALLOC_DECLARE(M_80211_VAP);
  
  int ieee80211_ifattach(struct ieee80211com *);
  void ieee80211_ifdetach(struct ieee80211com *);
@@ -1007,7 +1007,7 @@
  int ieee80211_vap_setup(struct ieee80211com *, struct net_device *,
  	const char *, int, int, struct ieee80211vap *);
  int ieee80211_vap_attach(struct ieee80211vap *, ifm_change_cb_t, ifm_stat_cb_t);
-@@ -794,6 +793,23 @@ ieee80211_anyhdrspace(struct ieee80211co
+@@ -793,6 +792,23 @@ ieee80211_anyhdrspace(struct ieee80211co
  	return size;
  }
  
@@ -1183,7 +1183,7 @@
  	if ((ic->ic_flags & IEEE80211_F_USEPROT) &&
 --- a/net80211/ieee80211_wireless.c
 +++ b/net80211/ieee80211_wireless.c
-@@ -2134,7 +2134,7 @@ ieee80211_ioctl_setmode(struct net_devic
+@@ -2142,7 +2142,7 @@ ieee80211_ioctl_setmode(struct net_devic
  
  		vap->iv_des_mode = mode;
  		if (IS_UP_AUTO(vap))
@@ -1192,7 +1192,7 @@
  
  		retv = 0;
  	}
-@@ -4082,46 +4082,60 @@ ieee80211_ioctl_getchanlist(struct net_d
+@@ -4090,46 +4090,60 @@ ieee80211_ioctl_getchanlist(struct net_d
  	return 0;
  }
  
diff --git a/package/madwifi/patches/424-timing.patch b/package/madwifi/patches/424-timing.patch
index ad2e8ac72f826847f9144a171a793f1af6a083e5..4dfa3c97a620547040d36992101df884f06bf7c1 100644
--- a/package/madwifi/patches/424-timing.patch
+++ b/package/madwifi/patches/424-timing.patch
@@ -541,7 +541,7 @@
  ath_rate_node_init(struct ath_softc *sc, struct ath_node *an)
 --- a/net80211/ieee80211_wireless.c
 +++ b/net80211/ieee80211_wireless.c
-@@ -2737,6 +2737,7 @@ ieee80211_ioctl_setparam(struct net_devi
+@@ -2745,6 +2745,7 @@ ieee80211_ioctl_setparam(struct net_devi
  	case IEEE80211_PARAM_COVERAGE_CLASS:
  		if (value <= IEEE80211_COVERAGE_CLASS_MAX) {
  			ic->ic_coverageclass = value;
diff --git a/package/madwifi/patches/430-use_netdev_priv.patch b/package/madwifi/patches/430-use_netdev_priv.patch
index 91bdd297c4ddc4a868eeb39d11571bbdd520c46e..ad2b6d494d0c0413e5bae48713379b335fc5a9bb 100644
--- a/package/madwifi/patches/430-use_netdev_priv.patch
+++ b/package/madwifi/patches/430-use_netdev_priv.patch
@@ -1327,7 +1327,7 @@
  
  	if (vap->iv_opmode == IEEE80211_M_WDS)
  		return -EOPNOTSUPP;
-@@ -884,7 +884,7 @@ static int
+@@ -899,7 +899,7 @@ static int
  ieee80211_ioctl_giwrange(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1336,7 +1336,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211_node *ni = vap->iv_bss;
  	struct iw_range *range = (struct iw_range *) extra;
-@@ -1034,7 +1034,7 @@ ieee80211_ioctl_setspy(struct net_device
+@@ -1047,7 +1047,7 @@ ieee80211_ioctl_setspy(struct net_device
  	struct iw_point *data, char *extra)
  {
  	/* save the list of node addresses */
@@ -1345,7 +1345,7 @@
  	struct sockaddr address[IW_MAX_SPY];
  	unsigned int number = data->length;
  	int i;
-@@ -1072,7 +1072,7 @@ ieee80211_ioctl_getspy(struct net_device
+@@ -1085,7 +1085,7 @@ ieee80211_ioctl_getspy(struct net_device
  	 * locate nodes by mac (ieee80211_find_node()),
  	 * copy out rssi, set updated flag appropriately
  	 */
@@ -1354,7 +1354,7 @@
  	struct ieee80211_node_table *nt = &vap->iv_ic->ic_sta;
  	struct ieee80211_node *ni;
  	struct ieee80211com *ic = vap->iv_ic;
-@@ -1120,7 +1120,7 @@ static int
+@@ -1133,7 +1133,7 @@ static int
  ieee80211_ioctl_setthrspy(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1363,7 +1363,7 @@
  	struct iw_thrspy threshold;
  
  	if (data->length != 1)
-@@ -1157,7 +1157,7 @@ static int
+@@ -1170,7 +1170,7 @@ static int
  ieee80211_ioctl_getthrspy(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1372,7 +1372,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct iw_thrspy *threshold;
  
-@@ -1178,7 +1178,7 @@ static int
+@@ -1191,7 +1191,7 @@ static int
  ieee80211_ioctl_siwmode(struct net_device *dev, struct iw_request_info *info,
  	__u32 *mode, char *extra)
  {
@@ -1381,7 +1381,7 @@
  	struct ifmediareq imr;
  	int valid = 0;
  
-@@ -1203,7 +1203,7 @@ static int
+@@ -1216,7 +1216,7 @@ static int
  ieee80211_ioctl_giwmode(struct net_device *dev,	struct iw_request_info *info,
  	__u32 *mode, char *extra)
  {
@@ -1390,7 +1390,7 @@
  	struct ifmediareq imr;
  
  	memset(&imr, 0, sizeof(imr));
-@@ -1226,7 +1226,7 @@ static int
+@@ -1239,7 +1239,7 @@ static int
  ieee80211_ioctl_siwpower(struct net_device *dev, struct iw_request_info *info,
  	struct iw_param *wrq, char *extra)
  {
@@ -1399,7 +1399,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  
  	/* XXX: These values, flags, and caps do not seem to be used elsewhere 
-@@ -1265,7 +1265,7 @@ static int
+@@ -1278,7 +1278,7 @@ static int
  ieee80211_ioctl_giwpower(struct net_device *dev, struct iw_request_info *info,
  	struct iw_param *rrq, char *extra)
  {
@@ -1408,7 +1408,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  
  	rrq->disabled = (ic->ic_flags & IEEE80211_F_PMGTON) == 0;
-@@ -1289,7 +1289,7 @@ static int
+@@ -1302,7 +1302,7 @@ static int
  ieee80211_ioctl_siwretry(struct net_device *dev, struct iw_request_info *info,
  	struct iw_param *rrq, char *extra)
  {
@@ -1417,7 +1417,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  
  	if (rrq->disabled) {
-@@ -1321,7 +1321,7 @@ static int
+@@ -1334,7 +1334,7 @@ static int
  ieee80211_ioctl_giwretry(struct net_device *dev, struct iw_request_info *info,
  	struct iw_param *rrq, char *extra)
  {
@@ -1426,7 +1426,7 @@
  
  	rrq->disabled = (vap->iv_flags & IEEE80211_F_SWRETRY) == 0;
  	if (!rrq->disabled) {
-@@ -1352,7 +1352,7 @@ static int
+@@ -1365,7 +1365,7 @@ static int
  ieee80211_ioctl_siwtxpow(struct net_device *dev, struct iw_request_info *info,
  	struct iw_param *rrq, char *extra)
  {
@@ -1435,7 +1435,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	int fixed, disabled;
  
-@@ -1389,7 +1389,7 @@ ieee80211_get_txcont(struct net_device *
+@@ -1402,7 +1402,7 @@ ieee80211_get_txcont(struct net_device *
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1444,7 +1444,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	params[0] = ic->ic_get_txcont(ic);
  	return 0;
-@@ -1400,7 +1400,7 @@ ieee80211_get_dfs_cac_time(struct net_de
+@@ -1413,7 +1413,7 @@ ieee80211_get_dfs_cac_time(struct net_de
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1453,7 +1453,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	params[0] = ic->ic_get_dfs_cac_time(ic);
  	return 0;
-@@ -1411,7 +1411,7 @@ ieee80211_get_dfs_excl_period(struct net
+@@ -1424,7 +1424,7 @@ ieee80211_get_dfs_excl_period(struct net
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1462,7 +1462,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	params[0] = ic->ic_get_dfs_excl_period(ic);
  	return 0;
-@@ -1421,7 +1421,7 @@ ieee80211_set_dfs_cac_time(struct net_de
+@@ -1434,7 +1434,7 @@ ieee80211_set_dfs_cac_time(struct net_de
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1471,7 +1471,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	ic->ic_set_dfs_cac_time(ic, params[1]);
  	return 0;
-@@ -1431,7 +1431,7 @@ ieee80211_set_dfs_excl_period  (struct n
+@@ -1444,7 +1444,7 @@ ieee80211_set_dfs_excl_period  (struct n
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1480,7 +1480,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	ic->ic_set_dfs_excl_period(ic, params[1]);
  	return 0;
-@@ -1442,7 +1442,7 @@ ieee80211_get_dfs_testmode(struct net_de
+@@ -1455,7 +1455,7 @@ ieee80211_get_dfs_testmode(struct net_de
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1489,7 +1489,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	params[0] = ic->ic_get_dfs_testmode(ic);
  	return 0;
-@@ -1453,7 +1453,7 @@ ieee80211_get_txcont_rate(struct net_dev
+@@ -1466,7 +1466,7 @@ ieee80211_get_txcont_rate(struct net_dev
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1498,7 +1498,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	params[0] = ic->ic_get_txcont_rate(ic);
  	return 0;
-@@ -1464,7 +1464,7 @@ ieee80211_set_txcont(struct net_device *
+@@ -1477,7 +1477,7 @@ ieee80211_set_txcont(struct net_device *
  		void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1507,7 +1507,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	ic->ic_set_txcont(ic, params[1]);
  	return 0;
-@@ -1475,7 +1475,7 @@ ieee80211_set_dfs_testmode(struct net_de
+@@ -1488,7 +1488,7 @@ ieee80211_set_dfs_testmode(struct net_de
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1516,7 +1516,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	ic->ic_set_dfs_testmode(ic, params[1]);
  	return 0;
-@@ -1486,7 +1486,7 @@ ieee80211_set_txcont_rate(struct net_dev
+@@ -1499,7 +1499,7 @@ ieee80211_set_txcont_rate(struct net_dev
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1525,7 +1525,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	ic->ic_set_txcont_rate(ic, params[1]);
  	return 0;
-@@ -1497,7 +1497,7 @@ ieee80211_set_txcont_power(struct net_de
+@@ -1510,7 +1510,7 @@ ieee80211_set_txcont_power(struct net_de
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1534,7 +1534,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	ic->ic_set_txcont_power(ic, params[1]);
  	return 0;
-@@ -1508,7 +1508,7 @@ ieee80211_get_txcont_power(struct net_de
+@@ -1521,7 +1521,7 @@ ieee80211_get_txcont_power(struct net_de
  		struct iw_request_info *info, void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1543,7 +1543,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	params[0] = ic->ic_get_txcont_power(ic);
  	return 0;
-@@ -1520,7 +1520,7 @@ ieee80211_ioctl_hal_map(struct net_devic
+@@ -1533,7 +1533,7 @@ ieee80211_ioctl_hal_map(struct net_devic
         void *w, char *extra)
  {
         int *params = (int*) extra;
@@ -1552,7 +1552,7 @@
         struct ieee80211com *ic = vap->iv_ic;
         params[0] = ic->ic_dump_hal_map(ic);
         return 0;
-@@ -1532,7 +1532,7 @@ ieee80211_ioctl_radar(struct net_device 
+@@ -1545,7 +1545,7 @@ ieee80211_ioctl_radar(struct net_device 
  	void *w, char *extra)
  {
  	int *params = (int*) extra;
@@ -1561,7 +1561,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	if (!(ic->ic_flags & IEEE80211_F_DOTH))
  		return 0;
-@@ -1544,7 +1544,7 @@ static int
+@@ -1557,7 +1557,7 @@ static int
  ieee80211_ioctl_giwtxpow(struct net_device *dev, struct iw_request_info *info,
  	struct iw_param *rrq, char *extra)
  {
@@ -1570,7 +1570,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	unsigned int power = ic->ic_txpowlimit;
  	struct ieee80211_channel *c;
-@@ -1573,7 +1573,7 @@ static int
+@@ -1581,7 +1581,7 @@ static int
  ieee80211_dump_registers(struct net_device *dev, struct iw_request_info *info, void *w, char *extra)
  {
  	unsigned int *params = (unsigned int*) extra;
@@ -1579,7 +1579,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	switch (params[1]) {
  	case 2:
-@@ -1596,7 +1596,7 @@ static int
+@@ -1604,7 +1604,7 @@ static int
  ieee80211_ioctl_writereg(struct net_device *dev, struct iw_request_info *info, void *w, char *extra)
  {
  	unsigned int *params = (unsigned int*) extra;
@@ -1588,7 +1588,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	return ic->ic_write_register(ic, params[0], params[1]);
  }
-@@ -1607,7 +1607,7 @@ static int
+@@ -1615,7 +1615,7 @@ static int
  ieee80211_ioctl_readreg(struct net_device *dev, struct iw_request_info *info, void *w, char *extra)
  {
  	unsigned int *params = (unsigned int*) extra;
@@ -1597,7 +1597,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	return ic->ic_read_register(ic, params[0], &params[0]);
  }
-@@ -1643,7 +1643,7 @@ static int
+@@ -1651,7 +1651,7 @@ static int
  ieee80211_ioctl_iwaplist(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1606,7 +1606,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct waplistreq req;		/* XXX off stack */
  
-@@ -1665,7 +1665,7 @@ static int
+@@ -1673,7 +1673,7 @@ static int
  ieee80211_ioctl_siwscan(struct net_device *dev,	struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1615,7 +1615,7 @@
  
  	/*
  	 * XXX don't permit a scan to be started unless we
-@@ -1989,7 +1989,7 @@ static int
+@@ -1997,7 +1997,7 @@ static int
  ieee80211_ioctl_giwscan(struct net_device *dev,	struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1624,7 +1624,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct iwscanreq req;
  	int res = 0;
-@@ -2090,7 +2090,7 @@ static int
+@@ -2098,7 +2098,7 @@ static int
  ieee80211_ioctl_setmode(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *wri, char *extra)
  {
@@ -1633,7 +1633,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ifreq ifr;
  	char s[6];		/* big enough for ``11adt'' */
-@@ -2214,10 +2214,10 @@ ieee80211_setathcap(struct ieee80211vap 
+@@ -2222,10 +2222,10 @@ ieee80211_setathcap(struct ieee80211vap 
  static int
  ieee80211_set_turbo(struct net_device *dev, int flag)
  {
@@ -1646,7 +1646,7 @@
  	int nvap = 0;
  
  	TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next)
-@@ -2238,7 +2238,7 @@ static int
+@@ -2246,7 +2246,7 @@ static int
  ieee80211_ioctl_setparam(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1655,7 +1655,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211_rsnparms *rsn = &vap->iv_bss->ni_rsn;
  	unsigned int *i = (unsigned int *) extra;
-@@ -2918,7 +2918,7 @@ static int
+@@ -2926,7 +2926,7 @@ static int
  ieee80211_ioctl_getmode(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *wri, char *extra)
  {
@@ -1664,7 +1664,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ifmediareq imr;
  
-@@ -2956,7 +2956,7 @@ static int
+@@ -2964,7 +2964,7 @@ static int
  ieee80211_ioctl_getparam(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1673,7 +1673,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211_rsnparms *rsn = &vap->iv_bss->ni_rsn;
  	unsigned int *param = (unsigned int *) extra;
-@@ -3301,7 +3301,7 @@ static int
+@@ -3309,7 +3309,7 @@ static int
  ieee80211_ioctl_setoptie(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *wri, char *extra)
  {
@@ -1682,7 +1682,7 @@
  	void *ie;
  
  	/*
-@@ -3335,7 +3335,7 @@ static int
+@@ -3343,7 +3343,7 @@ static int
  ieee80211_ioctl_getoptie(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *wri, char *extra)
  {
@@ -1691,7 +1691,7 @@
  
  	if (vap->iv_opt_ie == NULL) {
  		wri->length = 0;
-@@ -3399,7 +3399,7 @@ ieee80211_ioctl_setappiebuf(struct net_d
+@@ -3407,7 +3407,7 @@ ieee80211_ioctl_setappiebuf(struct net_d
  	struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1700,7 +1700,7 @@
  	struct ieee80211req_getset_appiebuf *iebuf =
  		(struct ieee80211req_getset_appiebuf *)extra;
  	enum ieee80211_opmode chk_opmode;
-@@ -3441,7 +3441,7 @@ static int
+@@ -3449,7 +3449,7 @@ static int
  ieee80211_ioctl_getappiebuf(struct net_device *dev, struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1709,7 +1709,7 @@
  	struct ieee80211req_getset_appiebuf *iebuf =
  		(struct ieee80211req_getset_appiebuf *)extra;
  	int max_iebuf_len;
-@@ -3482,7 +3482,7 @@ static int
+@@ -3490,7 +3490,7 @@ static int
  ieee80211_ioctl_setfilter(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1718,7 +1718,7 @@
  	struct ieee80211req_set_filter *app_filter = (struct ieee80211req_set_filter *)extra;
  
  	if ((extra == NULL) || (app_filter->app_filterype & ~IEEE80211_FILTER_TYPE_ALL))
-@@ -3497,7 +3497,7 @@ static int
+@@ -3505,7 +3505,7 @@ static int
  ieee80211_ioctl_setkey(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1727,7 +1727,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211req_key *ik = (struct ieee80211req_key *)extra;
  	struct ieee80211_node *ni;
-@@ -3580,7 +3580,7 @@ ieee80211_ioctl_setkey(struct net_device
+@@ -3588,7 +3588,7 @@ ieee80211_ioctl_setkey(struct net_device
  static int
  ieee80211_ioctl_getkey(struct net_device *dev, struct iwreq *iwr)
  {
@@ -1736,7 +1736,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211_node *ni;
  	struct ieee80211req_key ik;
-@@ -3641,7 +3641,7 @@ static int
+@@ -3649,7 +3649,7 @@ static int
  ieee80211_ioctl_delkey(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1745,7 +1745,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211req_del_key *dk = (struct ieee80211req_del_key *)extra;
  	ieee80211_keyix_t kix;
-@@ -3715,7 +3715,7 @@ static int
+@@ -3723,7 +3723,7 @@ static int
  ieee80211_ioctl_setmlme(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1754,7 +1754,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211req_mlme *mlme = (struct ieee80211req_mlme *)extra;
  	struct ieee80211_node *ni;
-@@ -3818,7 +3818,7 @@ static int
+@@ -3826,7 +3826,7 @@ static int
  ieee80211_ioctl_wdsaddmac(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1763,7 +1763,7 @@
  	struct sockaddr *sa = (struct sockaddr *)extra;
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211vap *avp;
-@@ -3847,7 +3847,7 @@ static int
+@@ -3855,7 +3855,7 @@ static int
  ieee80211_ioctl_wdssetmac(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1772,7 +1772,7 @@
  	struct sockaddr *sa = (struct sockaddr *)extra;
  
  	if (vap->iv_opmode != IEEE80211_M_WDS)
-@@ -3914,7 +3914,7 @@ ieee80211_ioctl_setscanlist(struct net_d
+@@ -3922,7 +3922,7 @@ ieee80211_ioctl_setscanlist(struct net_d
  	struct iw_request_info *info,
  	struct iw_point *data, char *extra)
  {
@@ -1781,7 +1781,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	char *s, *next;
  	int val = 1;
-@@ -3989,7 +3989,7 @@ static int
+@@ -3997,7 +3997,7 @@ static int
  ieee80211_ioctl_addmac(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1790,7 +1790,7 @@
  	struct sockaddr *sa = (struct sockaddr *)extra;
  	const struct ieee80211_aclator *acl = vap->iv_acl;
  
-@@ -4007,7 +4007,7 @@ static int
+@@ -4015,7 +4015,7 @@ static int
  ieee80211_ioctl_delmac(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1799,7 +1799,7 @@
  	struct sockaddr *sa = (struct sockaddr *)extra;
  	const struct ieee80211_aclator *acl = vap->iv_acl;
  
-@@ -4025,7 +4025,7 @@ static int
+@@ -4033,7 +4033,7 @@ static int
  ieee80211_ioctl_setchanlist(struct net_device *dev,
  	struct iw_request_info *info, void *w, char *extra)
  {
@@ -1808,7 +1808,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211req_chanlist *list =
  		(struct ieee80211req_chanlist *)extra;
-@@ -4076,7 +4076,7 @@ static int
+@@ -4084,7 +4084,7 @@ static int
  ieee80211_ioctl_getchanlist(struct net_device *dev,
  	struct iw_request_info *info, void *w, char *extra)
  {
@@ -1817,7 +1817,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  
  	memcpy(extra, ic->ic_chan_active, sizeof(ic->ic_chan_active));
-@@ -4097,7 +4097,7 @@ static int
+@@ -4105,7 +4105,7 @@ static int
  ieee80211_ioctl_getchaninfo(struct net_device *dev,
  			    struct iw_request_info *info, void *w, char *extra)
  {
@@ -1826,7 +1826,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211req_chaninfo *chans =
  	    (struct ieee80211req_chaninfo *)extra;
-@@ -4144,7 +4144,7 @@ static int
+@@ -4152,7 +4152,7 @@ static int
  ieee80211_ioctl_setwmmparams(struct net_device *dev,
  	struct iw_request_info *info, void *w, char *extra)
  {
@@ -1835,7 +1835,7 @@
  	unsigned int *param = (unsigned int *) extra;
  	unsigned int ac = (param[1] < WME_NUM_AC) ? param[1] : WME_AC_BE;
  	unsigned int bss = param[2];
-@@ -4232,7 +4232,7 @@ static int
+@@ -4240,7 +4240,7 @@ static int
  ieee80211_ioctl_getwmmparams(struct net_device *dev,
  	struct iw_request_info *info, void *w, char *extra)
  {
@@ -1844,7 +1844,7 @@
  	unsigned int *param = (unsigned int *) extra;
  	unsigned int ac = (param[1] < WME_NUM_AC) ? param[1] : WME_AC_BE;
  	struct ieee80211_wme_state *wme = &vap->iv_ic->ic_wme;
-@@ -4267,7 +4267,7 @@ ieee80211_ioctl_getwmmparams(struct net_
+@@ -4275,7 +4275,7 @@ ieee80211_ioctl_getwmmparams(struct net_
  static int
  ieee80211_ioctl_getwpaie(struct net_device *dev, struct iwreq *iwr)
  {
@@ -1853,7 +1853,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211_node *ni;
  	struct ieee80211req_wpaie wpaie;
-@@ -4301,7 +4301,7 @@ ieee80211_ioctl_getwpaie(struct net_devi
+@@ -4309,7 +4309,7 @@ ieee80211_ioctl_getwpaie(struct net_devi
  static int
  ieee80211_ioctl_getstastats(struct net_device *dev, struct iwreq *iwr)
  {
@@ -1862,7 +1862,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211_node *ni;
  	u_int8_t macaddr[IEEE80211_ADDR_LEN];
-@@ -4420,7 +4420,7 @@ get_scan_result(void *arg, const struct 
+@@ -4428,7 +4428,7 @@ get_scan_result(void *arg, const struct 
  static int
  ieee80211_ioctl_getscanresults(struct net_device *dev, struct iwreq *iwr)
  {
@@ -1871,7 +1871,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct scanreq req;
  	int error;
-@@ -4583,7 +4583,7 @@ get_sta_info(void *arg, struct ieee80211
+@@ -4591,7 +4591,7 @@ get_sta_info(void *arg, struct ieee80211
  static int
  ieee80211_ioctl_getstainfo(struct net_device *dev, struct iwreq *iwr)
  {
@@ -1880,7 +1880,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct stainforeq req;
  	int error;
-@@ -4617,7 +4617,7 @@ ieee80211_ioctl_getstainfo(struct net_de
+@@ -4625,7 +4625,7 @@ ieee80211_ioctl_getstainfo(struct net_de
  
  static void
  pre_announced_chanswitch(struct net_device *dev, u_int32_t channel, u_int32_t tbtt) {
@@ -1889,7 +1889,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	struct ieee80211vap *avp;
  
-@@ -4635,7 +4635,7 @@ static int
+@@ -4643,7 +4643,7 @@ static int
  ieee80211_ioctl_chanswitch(struct net_device *dev, struct iw_request_info *info,
  	void *w, char *extra)
  {
@@ -1898,7 +1898,7 @@
  	struct ieee80211com *ic = vap->iv_ic;
  	unsigned int *param = (unsigned int *) extra;
  
-@@ -4680,7 +4680,7 @@ static int
+@@ -4688,7 +4688,7 @@ static int
  ieee80211_ioctl_giwgenie(struct net_device *dev,
  	struct iw_request_info *info, struct iw_point *out, char *buf)
  {
@@ -1907,7 +1907,7 @@
  
  	if (out->length < vap->iv_opt_ie_len)
  		return -E2BIG;
-@@ -5213,7 +5213,7 @@ static int
+@@ -5221,7 +5221,7 @@ static int
  ieee80211_ioctl_giwencodeext(struct net_device *dev,
  	struct iw_request_info *info, struct iw_point *erq, char *extra)
  {
@@ -1916,7 +1916,7 @@
  	struct iw_encode_ext *ext;
  	struct ieee80211_key *wk;
  	ieee80211_keyix_t kix;
-@@ -5273,7 +5273,7 @@ static int
+@@ -5281,7 +5281,7 @@ static int
  ieee80211_ioctl_siwencodeext(struct net_device *dev,
  	struct iw_request_info *info, struct iw_point *erq, char *extra)
  {
@@ -1925,7 +1925,7 @@
  	struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
  	struct ieee80211req_key kr;
  	ieee80211_keyix_t kix;
-@@ -5949,7 +5949,7 @@ static struct iw_handler_def ieee80211_i
+@@ -5957,7 +5957,7 @@ static struct iw_handler_def ieee80211_i
  static int
  ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
  {
diff --git a/package/madwifi/patches/432-netdev_ops.patch b/package/madwifi/patches/432-netdev_ops.patch
index cc8e9c66646065323aea2f44b31067896a1d50fe..372000fc8e4c64e9731b0a0448e21f6fb68b2c0d 100644
--- a/package/madwifi/patches/432-netdev_ops.patch
+++ b/package/madwifi/patches/432-netdev_ops.patch
@@ -141,7 +141,7 @@ http://madwifi-project.org/changeset/4005
  	case NETDEV_CHANGENAME:
 --- a/net80211/ieee80211_var.h
 +++ b/net80211/ieee80211_var.h
-@@ -740,6 +740,7 @@ void ieee80211_build_sc_ie(struct ieee80
+@@ -739,6 +739,7 @@ void ieee80211_build_sc_ie(struct ieee80
  void ieee80211_dfs_action(struct ieee80211com *);
  void ieee80211_expire_channel_excl_restrictions(struct ieee80211com *);
  void ieee80211_setpuregbasicrates(struct ieee80211_rateset *rs);
@@ -151,7 +151,7 @@ http://madwifi-project.org/changeset/4005
   * Iterate through ic_channels to enumerate all distinct ic_ieee channel numbers.
 --- a/net80211/ieee80211_wireless.c
 +++ b/net80211/ieee80211_wireless.c
-@@ -5946,7 +5946,7 @@ static struct iw_handler_def ieee80211_i
+@@ -5954,7 +5954,7 @@ static struct iw_handler_def ieee80211_i
  /*
   * Handle private ioctl requests.
   */
@@ -160,7 +160,7 @@ http://madwifi-project.org/changeset/4005
  ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
  {
  	struct ieee80211vap *vap = netdev_priv(dev);
-@@ -6036,7 +6036,6 @@ ieee80211_ioctl_vattach(struct ieee80211
+@@ -6044,7 +6044,6 @@ ieee80211_ioctl_vattach(struct ieee80211
  {
  	struct net_device *dev = vap->iv_dev;
  
diff --git a/package/madwifi/patches/446-single_module.patch b/package/madwifi/patches/446-single_module.patch
index 8708d3a74f11581dade6770afb775392f6b87d3c..ed02ae8f5eb8ed2d7d3368ec007f1e4b213af5cf 100644
--- a/package/madwifi/patches/446-single_module.patch
+++ b/package/madwifi/patches/446-single_module.patch
@@ -541,7 +541,7 @@
  
  /* NB: 
   * - Atheros chips use 6 bits when power is specified in whole dBm units, with 
-@@ -741,6 +742,8 @@ void ieee80211_dfs_action(struct ieee802
+@@ -740,6 +741,8 @@ void ieee80211_dfs_action(struct ieee802
  void ieee80211_expire_channel_excl_restrictions(struct ieee80211com *);
  void ieee80211_setpuregbasicrates(struct ieee80211_rateset *rs);
  int ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);