diff options
Diffstat (limited to 'package')
63 files changed, 187 insertions, 185 deletions
diff --git a/package/madwifi/patches/123-ccmp_checks.patch b/package/madwifi/patches/123-ccmp_checks.patch index d9a0ad4e2..6178a3f78 100644 --- a/package/madwifi/patches/123-ccmp_checks.patch +++ b/package/madwifi/patches/123-ccmp_checks.patch @@ -59,7 +59,7 @@   }   /* -@@ -475,6 +483,9 @@ ccmp_encrypt(struct ieee80211_key *key,  +@@ -475,6 +483,9 @@ ccmp_encrypt(struct ieee80211_key *key,   	uint8_t *mic, *pos;   	u_int space; @@ -69,7 +69,7 @@   	ctx->cc_vap->iv_stats.is_crypto_ccmp++;   	skb = skb0; -@@ -589,6 +600,9 @@ ccmp_decrypt(struct ieee80211_key *key,  +@@ -589,6 +600,9 @@ ccmp_decrypt(struct ieee80211_key *key,   	uint8_t *pos, *mic;   	u_int space; diff --git a/package/madwifi/patches/200-no_debug.patch b/package/madwifi/patches/200-no_debug.patch index d5f285c24..3f46ec88b 100644 --- a/package/madwifi/patches/200-no_debug.patch +++ b/package/madwifi/patches/200-no_debug.patch @@ -43,7 +43,7 @@   	ic->ic_set_dfs_testmode     = ath_set_dfs_testmode;   	ic->ic_get_dfs_testmode     = ath_get_dfs_testmode; -@@ -1297,12 +1301,14 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1297,12 +1301,14 @@ ath_vap_create(struct ieee80211com *ic,   		/* If no default VAP debug flags are passed, allow a few to   		 * transfer down from the driver to new VAPs so we can have load   		 * time debugging for VAPs too. */ diff --git a/package/madwifi/patches/202-debug_variables.patch b/package/madwifi/patches/202-debug_variables.patch index 041344ff0..33e6efad1 100644 --- a/package/madwifi/patches/202-debug_variables.patch +++ b/package/madwifi/patches/202-debug_variables.patch @@ -10,7 +10,7 @@   #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,52))   MODULE_PARM(ath_debug, "i");   #else -@@ -465,8 +465,8 @@ static void ath_printrxbuf(const struct  +@@ -465,8 +465,8 @@ static void ath_printrxbuf(const struct   static void ath_printtxbuf(const struct ath_buf *, int);   #endif /* defined(AR_DEBUG) */ @@ -118,7 +118,7 @@   	struct ieee80211com *ic = &sc->sc_ic;   	int required = 0; -@@ -366,6 +370,7 @@ static struct ath_rp *pulse_prev(struct  +@@ -366,6 +370,7 @@ static struct ath_rp *pulse_prev(struct   #define MR_FAIL_MIN_PERIOD	4   #define MR_FAIL_MAX_PERIOD	5 @@ -174,7 +174,7 @@   	DPRINTF(sc, ATH_DEBUG_DOTHPULSES, "%s: ath_rp_record: "  --- a/ath_rate/minstrel/minstrel.c  +++ b/ath_rate/minstrel/minstrel.c -@@ -931,7 +931,9 @@ ath_proc_read_nodes(struct ieee80211vap  +@@ -931,7 +931,9 @@ ath_proc_read_nodes(struct ieee80211vap   			    (struct ieee80211_node_table *) &vap->iv_ic->ic_sta;   		unsigned int x = 0;   		unsigned int this_tp, this_prob, this_eprob; diff --git a/package/madwifi/patches/300-napi_polling.patch b/package/madwifi/patches/300-napi_polling.patch index bc62d7b4a..bde768494 100644 --- a/package/madwifi/patches/300-napi_polling.patch +++ b/package/madwifi/patches/300-napi_polling.patch @@ -183,7 +183,7 @@   }   /* -@@ -6360,15 +6426,25 @@ ath_setdefantenna(struct ath_softc *sc,  +@@ -6360,15 +6426,25 @@ ath_setdefantenna(struct ath_softc *sc,   	sc->sc_rxotherant = 0;   } @@ -448,7 +448,7 @@   				 * device was too busy */   				if (ni_tmp != NULL) {   					/* node reference was leaked */ -@@ -2322,8 +2322,8 @@ forward_mgmt_to_app(struct ieee80211vap  +@@ -2322,8 +2322,8 @@ forward_mgmt_to_app(struct ieee80211vap   		skb1->protocol = __constant_htons(0x0019);  /* ETH_P_80211_RAW */   		ni_tmp = SKB_CB(skb1)->ni; diff --git a/package/madwifi/patches/305-pureg_fix.patch b/package/madwifi/patches/305-pureg_fix.patch index 231ab081a..8adb8a716 100644 --- a/package/madwifi/patches/305-pureg_fix.patch +++ b/package/madwifi/patches/305-pureg_fix.patch @@ -49,7 +49,7 @@   			break;   		case IEEE80211_M_WDS:   			if (skb->len < sizeof(struct ieee80211_frame_addr4)) { -@@ -3066,7 +3063,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3066,7 +3063,7 @@ ieee80211_recv_mgmt(struct ieee80211vap   	u_int8_t *frm, *efrm;   	u_int8_t *ssid, *rates, *xrates, *suppchan, *wpa, *rsn, *wme, *ath;   	u_int8_t rate; @@ -58,7 +58,7 @@   	u_int8_t qosinfo;   	if (ni_or_null == NULL) -@@ -3096,11 +3093,15 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3096,11 +3093,15 @@ ieee80211_recv_mgmt(struct ieee80211vap   		 *    o station mode when associated (to collect state   		 *      updates such as 802.11g slot time), or   		 *    o adhoc mode (to discover neighbors) @@ -75,7 +75,7 @@   			vap->iv_stats.is_rx_mgtdiscard++;   			return;   		} -@@ -3184,6 +3185,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3184,6 +3185,7 @@ ieee80211_recv_mgmt(struct ieee80211vap   					break;   				}   				scan.erp = frm[2]; @@ -83,7 +83,7 @@   				break;   			case IEEE80211_ELEMID_RSN:   				scan.rsn = frm; -@@ -3421,6 +3423,20 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3421,6 +3423,20 @@ ieee80211_recv_mgmt(struct ieee80211vap   				ieee80211_bg_scan(vap);   			return;   		} diff --git a/package/madwifi/patches/309-micfail_detect.patch b/package/madwifi/patches/309-micfail_detect.patch index d74a390d5..ca4103a20 100644 --- a/package/madwifi/patches/309-micfail_detect.patch +++ b/package/madwifi/patches/309-micfail_detect.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -6457,6 +6457,7 @@ ath_rx_poll(struct net_device *dev, int  +@@ -6457,6 +6457,7 @@ ath_rx_poll(struct net_device *dev, int   	int type;   	u_int phyerr;   	u_int processed = 0, early_stop = 0; @@ -205,7 +205,7 @@   			IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,   				ni->ni_macaddr, "data", "%s", "demic error");   			IEEE80211_NODE_STAT(ni, rx_demicfail); -@@ -4293,6 +4293,47 @@ ath_eth_type_trans(struct sk_buff *skb,  +@@ -4293,6 +4293,47 @@ ath_eth_type_trans(struct sk_buff *skb,   }   #endif diff --git a/package/madwifi/patches/311-bssid_alloc.patch b/package/madwifi/patches/311-bssid_alloc.patch index 8059b99e0..005a67738 100644 --- a/package/madwifi/patches/311-bssid_alloc.patch +++ b/package/madwifi/patches/311-bssid_alloc.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -1354,7 +1354,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1354,7 +1354,7 @@ ath_vap_create(struct ieee80211com *ic,   		TAILQ_FOREACH(v, &ic->ic_vaps, iv_next)   			id_mask |= (1 << ATH_GET_VAP_ID(v->iv_myaddr)); diff --git a/package/madwifi/patches/312-erpupdate.patch b/package/madwifi/patches/312-erpupdate.patch index 34fae68db..f878acd8f 100644 --- a/package/madwifi/patches/312-erpupdate.patch +++ b/package/madwifi/patches/312-erpupdate.patch @@ -15,7 +15,7 @@   	/* if it is a mode change beacon for dynamic turbo case */  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -3431,9 +3431,12 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3431,9 +3431,12 @@ ieee80211_recv_mgmt(struct ieee80211vap   			/* Assume no ERP IE == 11b AP */   			if ((!has_erp || (has_erp && (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) &&   				!(ic->ic_flags & IEEE80211_F_USEPROT)) { diff --git a/package/madwifi/patches/325-channel_spam.patch b/package/madwifi/patches/325-channel_spam.patch index a4b9463a2..e34b7a409 100644 --- a/package/madwifi/patches/325-channel_spam.patch +++ b/package/madwifi/patches/325-channel_spam.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -9792,7 +9792,9 @@ ath_getchannels(struct net_device *dev,  +@@ -9792,7 +9792,9 @@ ath_getchannels(struct net_device *dev,   	/*   	 * Convert HAL channels to ieee80211 ones.   	 */ @@ -10,7 +10,7 @@   	for (i = 0; i < nchan; i++) {   		HAL_CHANNEL *c = &chans[i];   		struct ieee80211_channel *ichan = &ic->ic_channels[i]; -@@ -9819,6 +9821,7 @@ ath_getchannels(struct net_device *dev,  +@@ -9819,6 +9821,7 @@ ath_getchannels(struct net_device *dev,   		ic->ic_chan_non_occupy[i].tv_sec  = 0;   		ic->ic_chan_non_occupy[i].tv_usec = 0; @@ -18,7 +18,7 @@   		IPRINTF(sc, "Channel %3d (%4d MHz) Max Tx Power %d dBm%s "   				"[%d hw %d reg] Flags%s%s%s%s%s%s%s%s%s%s%s%s%"   				"s%s%s%s%s%s%s%s%s%s%s%s\n", -@@ -9907,6 +9910,7 @@ ath_getchannels(struct net_device *dev,  +@@ -9907,6 +9910,7 @@ ath_getchannels(struct net_device *dev,   				(c->privFlags & 0x0080 ?    				 " PF & (1 << 7)" : "")   				); diff --git a/package/madwifi/patches/330-beaconcal.patch b/package/madwifi/patches/330-beaconcal.patch index 2b4895f35..a338dc743 100644 --- a/package/madwifi/patches/330-beaconcal.patch +++ b/package/madwifi/patches/330-beaconcal.patch @@ -79,7 +79,7 @@   		sc->sc_stats.ast_be_xmit++;		/* XXX per-VAP? */   	} -@@ -5403,6 +5431,7 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5403,6 +5431,7 @@ ath_beacon_config(struct ath_softc *sc,   		ath_hal_beacontimers(ah, &bs);   		sc->sc_imask |= HAL_INT_BMISS;   		ath_hal_intrset(ah, sc->sc_imask); @@ -87,7 +87,7 @@   	} else {   		ath_hal_intrset(ah, 0);   		if (reset_tsf) -@@ -5414,8 +5443,11 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5414,8 +5443,11 @@ ath_beacon_config(struct ath_softc *sc,   			 */   			intval |= HAL_BEACON_ENA;   			sc->sc_imask |= HAL_INT_SWBA; diff --git a/package/madwifi/patches/334-input.patch b/package/madwifi/patches/334-input.patch index 1e1b2760f..7c1336701 100644 --- a/package/madwifi/patches/334-input.patch +++ b/package/madwifi/patches/334-input.patch @@ -1,6 +1,6 @@  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -950,6 +950,9 @@ ieee80211_input_all(struct ieee80211com  +@@ -950,6 +950,9 @@ ieee80211_input_all(struct ieee80211com   	TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {   		struct sk_buff *skb1; diff --git a/package/madwifi/patches/340-maxrate.patch b/package/madwifi/patches/340-maxrate.patch index 4613ed3f5..ae93f02d2 100644 --- a/package/madwifi/patches/340-maxrate.patch +++ b/package/madwifi/patches/340-maxrate.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -1307,6 +1307,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1307,6 +1307,7 @@ ath_vap_create(struct ieee80211com *ic,   	vap->iv_key_set = ath_key_set;   	vap->iv_key_update_begin = ath_key_update_begin;   	vap->iv_key_update_end = ath_key_update_end; diff --git a/package/madwifi/patches/341-minrate.patch b/package/madwifi/patches/341-minrate.patch index 53567e2f5..cc04ae074 100644 --- a/package/madwifi/patches/341-minrate.patch +++ b/package/madwifi/patches/341-minrate.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -1308,6 +1308,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1308,6 +1308,7 @@ ath_vap_create(struct ieee80211com *ic,   	vap->iv_key_update_begin = ath_key_update_begin;   	vap->iv_key_update_end = ath_key_update_end;   	vap->iv_maxrateindex = 0; diff --git a/package/madwifi/patches/342-performance.patch b/package/madwifi/patches/342-performance.patch index 8015643dc..88cec182d 100644 --- a/package/madwifi/patches/342-performance.patch +++ b/package/madwifi/patches/342-performance.patch @@ -73,6 +73,7 @@  -		ieee80211_ref_node(SKB_CB(skb)->ni);  -		/* Unshare the node, decrementing users in the old skb */  -		skb = skb_unshare(skb, GFP_ATOMIC); +-	}  +	need_headroom -= skb_headroom(skb);  +	if (isff)  +		need_tailroom -= skb_tailroom(skb2); @@ -83,42 +84,32 @@  +		need_headroom = 0;  +	if (need_tailroom < 0)  +		need_tailroom = 0; -+ -+	if (skb_cloned(skb) || (need_headroom > 0) || -+		(!isff && (need_tailroom > 0))) { -+ -+		if (pskb_expand_head(skb, need_headroom, need_tailroom, GFP_ATOMIC)) { -+			IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, -+				"%s: cannot expand storage (tail)\n", __func__); -+			goto error; -+		} - 	} - #ifdef ATH_SUPERG_FF - 	if (isff) { +-#ifdef ATH_SUPERG_FF +-	if (isff) {  -		if (skb == NULL) {  -			IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT,  -				"%s: cannot unshare for encapsulation\n",  -				__func__);  -			vap->iv_stats.is_tx_nobuf++;  -			ieee80211_dev_kfree_skb(&skb2); -- ++	if (skb_cloned(skb) || (need_headroom > 0) || ++		(!isff && (need_tailroom > 0))) { +   -			return NULL; --		} -+		inter_headroom -= skb_headroom(skb2); -+		if (inter_headroom < 0) -+			inter_headroom = 0; -+		if ((skb_cloned(skb2) || -+			(inter_headroom > 0) || (need_tailroom > 0))) { ++		if (pskb_expand_head(skb, need_headroom, need_tailroom, GFP_ATOMIC)) { ++			IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, ++				"%s: cannot expand storage (tail)\n", __func__); ++			goto error; + 		} ++	}  -		/* first skb header */  -		if (skb_headroom(skb) < need_headroom) {  -			struct sk_buff *tmp = skb;  -			skb = skb_realloc_headroom(skb, need_headroom);  -			if (skb == NULL) { -+			if (pskb_expand_head(skb2, inter_headroom, -+				need_tailroom, GFP_ATOMIC)) { - 				IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, +-				IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT,  -					"%s: cannot expand storage (head1)\n",  -					__func__);  -				vap->iv_stats.is_tx_nobuf++; @@ -130,7 +121,14 @@  -			/* NB: cb[] area was copied, but not next ptr. must do that  -			 *     prior to return on success. */  -		} -- ++#ifdef ATH_SUPERG_FF ++	if (isff) { ++		inter_headroom -= skb_headroom(skb2); ++		if (inter_headroom < 0) ++			inter_headroom = 0; ++		if ((skb_cloned(skb2) || ++			(inter_headroom > 0) || (need_tailroom > 0))) { +   -		/* second skb with header and tail adjustments possible */  -		if (skb_tailroom(skb2) < need_tailroom) {  -			int n = 0; @@ -139,7 +137,9 @@  -			if (pskb_expand_head(skb2, n,  -			    need_tailroom - skb_tailroom(skb2), GFP_ATOMIC)) {  -				ieee80211_dev_kfree_skb(&skb2); --				IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, ++			if (pskb_expand_head(skb2, inter_headroom, ++				need_tailroom, GFP_ATOMIC)) { + 				IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT,  -					"%s: cannot expand storage (tail2)\n",  -					__func__);  -				vap->iv_stats.is_tx_nobuf++; @@ -163,10 +163,10 @@  -			} else  -				ieee80211_skb_copy_noderef(tmp, skb);  -			ieee80211_dev_kfree_skb(&tmp); - 		} +-		}  -		if (skb) {  -			skb->next = skb2; --		} + 		}  -		return skb;  +		skb->next = skb2;   	} diff --git a/package/madwifi/patches/345-minstrel_sampling.patch b/package/madwifi/patches/345-minstrel_sampling.patch index d89990c83..63fcb8a61 100644 --- a/package/madwifi/patches/345-minstrel_sampling.patch +++ b/package/madwifi/patches/345-minstrel_sampling.patch @@ -20,7 +20,7 @@   	 *      multiple segments.  --- a/ath_rate/minstrel/minstrel.c  +++ b/ath_rate/minstrel/minstrel.c -@@ -333,15 +333,19 @@ ath_rate_findrate(struct ath_softc *sc,  +@@ -333,15 +333,19 @@ ath_rate_findrate(struct ath_softc *sc,   		if (sn->static_rate_ndx >= 0) {   			    ndx = sn->static_rate_ndx;   		} else { diff --git a/package/madwifi/patches/346-protmode_trig.patch b/package/madwifi/patches/346-protmode_trig.patch index 830a6a852..5b5cec6e9 100644 --- a/package/madwifi/patches/346-protmode_trig.patch +++ b/package/madwifi/patches/346-protmode_trig.patch @@ -13,7 +13,7 @@   	TAILQ_INIT(&ic->ic_vaps);  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -3411,14 +3411,18 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3411,14 +3411,18 @@ ieee80211_recv_mgmt(struct ieee80211vap   			IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) {   			/* Assume no ERP IE == 11b AP */ diff --git a/package/madwifi/patches/352-ani_fix.patch b/package/madwifi/patches/352-ani_fix.patch index e8dce0cbe..938d11c62 100644 --- a/package/madwifi/patches/352-ani_fix.patch +++ b/package/madwifi/patches/352-ani_fix.patch @@ -23,7 +23,7 @@   	return 0;   bad3:   	ieee80211_ifdetach(ic); -@@ -2428,6 +2431,43 @@ ath_chan2flags(struct ieee80211_channel  +@@ -2428,6 +2431,43 @@ ath_chan2flags(struct ieee80211_channel   	return flags;   } diff --git a/package/madwifi/patches/357-bgscan_thresh.patch b/package/madwifi/patches/357-bgscan_thresh.patch index df0a6c29d..bf3483776 100644 --- a/package/madwifi/patches/357-bgscan_thresh.patch +++ b/package/madwifi/patches/357-bgscan_thresh.patch @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>   }   static __inline int -@@ -3258,6 +3260,25 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3258,6 +3260,25 @@ ieee80211_recv_mgmt(struct ieee80211vap   			/* record tsf of last beacon */   			memcpy(ni->ni_tstamp.data, scan.tstamp,   				sizeof(ni->ni_tstamp)); diff --git a/package/madwifi/patches/360-sta_nodes.patch b/package/madwifi/patches/360-sta_nodes.patch index 206000123..8d2dd9ddd 100644 --- a/package/madwifi/patches/360-sta_nodes.patch +++ b/package/madwifi/patches/360-sta_nodes.patch @@ -219,7 +219,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>   	return ret;  --- a/net80211/ieee80211_wireless.c  +++ b/net80211/ieee80211_wireless.c -@@ -514,8 +514,9 @@ ieee80211_ioctl_siwap(struct net_device  +@@ -514,8 +514,9 @@ ieee80211_ioctl_siwap(struct net_device   			vap->iv_flags |= IEEE80211_F_DESBSSID;   		IEEE80211_ADDR_COPY(vap->iv_des_bssid, &ap_addr->sa_data); diff --git a/package/madwifi/patches/361-bmiss_handling.patch b/package/madwifi/patches/361-bmiss_handling.patch index b33cc3f73..15d238f7b 100644 --- a/package/madwifi/patches/361-bmiss_handling.patch +++ b/package/madwifi/patches/361-bmiss_handling.patch @@ -7,7 +7,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -3400,12 +3400,17 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3400,12 +3400,17 @@ ieee80211_recv_mgmt(struct ieee80211vap   			}   			/* WDS/Repeater: re-schedule software beacon timer for  diff --git a/package/madwifi/patches/362-rssithr.patch b/package/madwifi/patches/362-rssithr.patch index 7e178e13a..5a86833bb 100644 --- a/package/madwifi/patches/362-rssithr.patch +++ b/package/madwifi/patches/362-rssithr.patch @@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>   	{ IEEE80211_PARAM_UAPSDINFO,  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -3261,6 +3261,19 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3261,6 +3261,19 @@ ieee80211_recv_mgmt(struct ieee80211vap   			memcpy(ni->ni_tstamp.data, scan.tstamp,   				sizeof(ni->ni_tstamp)); diff --git a/package/madwifi/patches/368-sta_ie_preserve.patch b/package/madwifi/patches/368-sta_ie_preserve.patch index 4beef6222..fbd779ea0 100644 --- a/package/madwifi/patches/368-sta_ie_preserve.patch +++ b/package/madwifi/patches/368-sta_ie_preserve.patch @@ -29,7 +29,7 @@   	if (se->se_fails && (jiffies - se->se_lastfail) > STA_FAILS_AGE*HZ) {  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -3106,6 +3106,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3106,6 +3106,7 @@ ieee80211_recv_mgmt(struct ieee80211vap   		 */   		IEEE80211_VERIFY_LENGTH(efrm - frm, 12);   		memset(&scan, 0, sizeof(scan)); diff --git a/package/madwifi/patches/370-wdsvap.patch b/package/madwifi/patches/370-wdsvap.patch index e507afb25..8a0e823ae 100644 --- a/package/madwifi/patches/370-wdsvap.patch +++ b/package/madwifi/patches/370-wdsvap.patch @@ -44,7 +44,7 @@   	if (ic->ic_dev->flags & IFF_RUNNING) {   		/* needs to disable hardware too */ -@@ -1271,8 +1269,12 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1271,8 +1269,12 @@ ath_vap_create(struct ieee80211com *ic,   		} else   			ic_opmode = opmode;   		break; @@ -58,7 +58,7 @@   		/* permit multiple APs and/or WDS links */   		/* XXX sta+ap for repeater/bridge application */   		if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA)) -@@ -1304,7 +1306,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1304,7 +1306,7 @@ ath_vap_create(struct ieee80211com *ic,   	}   	avp = dev->priv; @@ -124,7 +124,7 @@   {   #define	IEEE80211_C_OPMODE \   	(IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | IEEE80211_C_AHDEMO | \ -@@ -510,9 +525,18 @@ ieee80211_vap_setup(struct ieee80211com  +@@ -510,9 +525,18 @@ ieee80211_vap_setup(struct ieee80211com   	vap->iv_monitor_crc_errors = 0;   	vap->iv_monitor_phy_errors = 0; @@ -528,7 +528,7 @@   	switch (cmd) {   	case SIOCG80211STATS: -@@ -5921,8 +5922,20 @@ ieee80211_ioctl(struct net_device *dev,  +@@ -5921,8 +5922,20 @@ ieee80211_ioctl(struct net_device *dev,   	case SIOC80211IFDESTROY:   		if (!capable(CAP_NET_ADMIN))   			return -EPERM; @@ -784,7 +784,7 @@   					skb1 = skb;   					skb = NULL;   				} -@@ -3084,8 +3133,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3084,8 +3133,7 @@ ieee80211_recv_mgmt(struct ieee80211vap   		    (vap->iv_opmode == IEEE80211_M_STA && ni->ni_associd) ||   		    (vap->iv_opmode == IEEE80211_M_IBSS) ||   			((subtype == IEEE80211_FC0_SUBTYPE_BEACON) && @@ -794,7 +794,7 @@   			vap->iv_stats.is_rx_mgtdiscard++;   			return;   		} -@@ -3471,13 +3519,56 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3471,13 +3519,56 @@ ieee80211_recv_mgmt(struct ieee80211vap   		 */   		if (ic->ic_flags & IEEE80211_F_SCAN) {   			ieee80211_add_scan(vap, &scan, wh, subtype, rssi, rtsf); @@ -856,7 +856,7 @@   			} else {   				/*   				 * Copy data from beacon to neighbor table. -@@ -3490,6 +3581,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3490,6 +3581,7 @@ ieee80211_recv_mgmt(struct ieee80211vap   				IEEE80211_ADDR_COPY(ni->ni_bssid, wh->i_addr3);   				memcpy(ni->ni_tstamp.data, scan.tstamp,   					sizeof(ni->ni_tstamp)); @@ -1157,7 +1157,7 @@   	/* calculate priority so drivers can find the TX queue */   	if (ieee80211_classify(ni, skb)) {   		IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, -@@ -334,20 +335,33 @@ void ieee80211_parent_queue_xmit(struct  +@@ -334,20 +335,33 @@ void ieee80211_parent_queue_xmit(struct    * constructing a frame as it sets i_fc[1]; other bits can    * then be or'd in.    */ @@ -1176,12 +1176,12 @@  +	struct ieee80211_frame *wh;  +	int len = sizeof(struct ieee80211_frame);  +	int opmode = vap->iv_opmode; -  ++  +	if ((type & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_DATA) {  +		if ((opmode == IEEE80211_M_STA) &&  +			(vap->iv_flags_ext & IEEE80211_FEXT_WDS))  +			opmode = IEEE80211_M_WDS; -+ +   +		if (opmode == IEEE80211_M_WDS)  +			len = sizeof(struct ieee80211_frame_addr4);  +	} @@ -1482,7 +1482,7 @@   	}   }   EXPORT_SYMBOL(ieee80211_stop_running); -@@ -1342,9 +1398,9 @@ ieee80211_new_state(struct ieee80211vap  +@@ -1342,9 +1398,9 @@ ieee80211_new_state(struct ieee80211vap   	struct ieee80211com *ic = vap->iv_ic;   	int rc; diff --git a/package/madwifi/patches/372-queue_vif.patch b/package/madwifi/patches/372-queue_vif.patch index aa32b1b22..8b13abc33 100644 --- a/package/madwifi/patches/372-queue_vif.patch +++ b/package/madwifi/patches/372-queue_vif.patch @@ -24,7 +24,7 @@   				vap->iv_devstats.tx_dropped++;  --- a/net80211/ieee80211_output.c  +++ b/net80211/ieee80211_output.c -@@ -324,9 +324,10 @@ void ieee80211_parent_queue_xmit(struct  +@@ -324,9 +324,10 @@ void ieee80211_parent_queue_xmit(struct   	/* Dispatch the packet to the parent device */   	skb->dev = vap->iv_ic->ic_dev; diff --git a/package/madwifi/patches/374-nbtt_fix.patch b/package/madwifi/patches/374-nbtt_fix.patch index 0a2982799..38a1c59d5 100644 --- a/package/madwifi/patches/374-nbtt_fix.patch +++ b/package/madwifi/patches/374-nbtt_fix.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -5486,6 +5486,9 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5486,6 +5486,9 @@ ath_beacon_config(struct ath_softc *sc,   		ath_beacon_dturbo_config(vap, intval &   				~(HAL_BEACON_RESET_TSF | HAL_BEACON_ENA));   #endif diff --git a/package/madwifi/patches/375-atim_tsf_update.patch b/package/madwifi/patches/375-atim_tsf_update.patch index 9381f8a81..d1313aa56 100644 --- a/package/madwifi/patches/375-atim_tsf_update.patch +++ b/package/madwifi/patches/375-atim_tsf_update.patch @@ -81,7 +81,7 @@   /*    * Reset the hardware w/o losing operational state.  This is    * basically a more efficient way of doing ath_stop, ath_init, -@@ -5294,6 +5361,7 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5294,6 +5361,7 @@ ath_beacon_config(struct ath_softc *sc,   	u_int64_t tsf, hw_tsf;   	u_int32_t tsftu, hw_tsftu;   	u_int32_t intval, nexttbtt = 0; @@ -89,7 +89,7 @@   	int reset_tsf = 0;   	if (vap == NULL) -@@ -5301,6 +5369,9 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5301,6 +5369,9 @@ ath_beacon_config(struct ath_softc *sc,   	ni = vap->iv_bss; @@ -99,7 +99,7 @@   	hw_tsf = ath_hal_gettsf64(ah);   	tsf = le64_to_cpu(ni->ni_tstamp.tsf);   	hw_tsftu = hw_tsf >> 10; -@@ -5490,15 +5561,27 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5490,15 +5561,27 @@ ath_beacon_config(struct ath_softc *sc,   				<= ath_hal_sw_beacon_response_time)   			nexttbtt += intval;   		sc->sc_nexttbtt = nexttbtt; diff --git a/package/madwifi/patches/378-adhoc_crash_fix.patch b/package/madwifi/patches/378-adhoc_crash_fix.patch index 1d699a5ff..5b9168367 100644 --- a/package/madwifi/patches/378-adhoc_crash_fix.patch +++ b/package/madwifi/patches/378-adhoc_crash_fix.patch @@ -1,6 +1,6 @@  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -3529,6 +3529,11 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3529,6 +3529,11 @@ ieee80211_recv_mgmt(struct ieee80211vap   		if (ic->ic_flags & IEEE80211_F_SCAN) {   			ieee80211_add_scan(vap, &scan, wh, subtype, rssi, rtsf);   		} diff --git a/package/madwifi/patches/379-invalid_rate_fix.patch b/package/madwifi/patches/379-invalid_rate_fix.patch index 3ee2ed2c4..c96c04daf 100644 --- a/package/madwifi/patches/379-invalid_rate_fix.patch +++ b/package/madwifi/patches/379-invalid_rate_fix.patch @@ -173,7 +173,7 @@   		_MOD_INC_USE(THIS_MODULE, return NULL);   		osc = kmalloc(sizeof(struct minstrel_softc), GFP_ATOMIC); -@@ -963,7 +949,7 @@ ath_proc_read_nodes(struct ieee80211vap  +@@ -963,7 +949,7 @@ ath_proc_read_nodes(struct ieee80211vap   					p += sprintf(p, "out of room for node " MAC_FMT "\n\n", MAC_ADDR(ni->ni_macaddr));   					break;   				} diff --git a/package/madwifi/patches/380-noderef_hack.patch b/package/madwifi/patches/380-noderef_hack.patch index e9397724e..7c082d414 100644 --- a/package/madwifi/patches/380-noderef_hack.patch +++ b/package/madwifi/patches/380-noderef_hack.patch @@ -1,6 +1,6 @@  --- a/net80211/ieee80211_node.c  +++ b/net80211/ieee80211_node.c -@@ -427,8 +427,8 @@ ieee80211_reset_bss(struct ieee80211vap  +@@ -427,8 +427,8 @@ ieee80211_reset_bss(struct ieee80211vap   			  __func__, ni, MAC_ADDR(vap->iv_myaddr));   	KASSERT(ni != NULL, ("unable to setup inital BSS node")); diff --git a/package/madwifi/patches/381-ibss_modes.patch b/package/madwifi/patches/381-ibss_modes.patch index f904ed972..38969b053 100644 --- a/package/madwifi/patches/381-ibss_modes.patch +++ b/package/madwifi/patches/381-ibss_modes.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -1260,7 +1260,10 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1260,7 +1260,10 @@ ath_vap_create(struct ieee80211com *ic,   	case IEEE80211_M_IBSS:   		if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA))   			return NULL; @@ -12,7 +12,7 @@   		break;   	case IEEE80211_M_AHDEMO:   	case IEEE80211_M_MONITOR: -@@ -1455,7 +1458,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1455,7 +1458,7 @@ ath_vap_create(struct ieee80211com *ic,   	 * frames.  Other modes carry over directly to the HAL.   	 */   	if (ic->ic_opmode == IEEE80211_M_AHDEMO) diff --git a/package/madwifi/patches/383-ibss_hostap.patch b/package/madwifi/patches/383-ibss_hostap.patch index a91753cc1..d449c3037 100644 --- a/package/madwifi/patches/383-ibss_hostap.patch +++ b/package/madwifi/patches/383-ibss_hostap.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -1452,6 +1452,23 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1452,6 +1452,23 @@ ath_vap_create(struct ieee80211com *ic,   		sc->sc_nstavaps++;   	else if (opmode == IEEE80211_M_MONITOR)   		sc->sc_nmonvaps++; diff --git a/package/madwifi/patches/384-hwdetect.patch b/package/madwifi/patches/384-hwdetect.patch index b327e786c..3b67615b0 100644 --- a/package/madwifi/patches/384-hwdetect.patch +++ b/package/madwifi/patches/384-hwdetect.patch @@ -33,7 +33,7 @@   	/* Allocate space for dynamically determined maximum VAP count */   	sc->sc_bslot =    		kmalloc(ath_maxvaps * sizeof(struct ieee80211vap*), GFP_KERNEL); -@@ -1508,6 +1520,29 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1508,6 +1520,29 @@ ath_vap_create(struct ieee80211com *ic,   	return vap;   } @@ -226,7 +226,7 @@   #include <asm/io.h>   #include <asm/uaccess.h> -@@ -181,12 +182,32 @@ exit_ath_wmac(u_int16_t wlanNum, struct  +@@ -181,12 +182,32 @@ exit_ath_wmac(u_int16_t wlanNum, struct   	return 0;   } diff --git a/package/madwifi/patches/385-antenna_fix.patch b/package/madwifi/patches/385-antenna_fix.patch index e3899643b..16c7d95c7 100644 --- a/package/madwifi/patches/385-antenna_fix.patch +++ b/package/madwifi/patches/385-antenna_fix.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -6669,6 +6669,7 @@ ath_setdefantenna(struct ath_softc *sc,  +@@ -6669,6 +6669,7 @@ ath_setdefantenna(struct ath_softc *sc,   	struct ath_hal *ah = sc->sc_ah;   	/* XXX block beacon interrupts */ diff --git a/package/madwifi/patches/386-acl_crashfix.patch b/package/madwifi/patches/386-acl_crashfix.patch index f4ef4ca27..04a1ec911 100644 --- a/package/madwifi/patches/386-acl_crashfix.patch +++ b/package/madwifi/patches/386-acl_crashfix.patch @@ -37,7 +37,7 @@ Signed-off-by: Sebastian Gottschall <brainslayer@dd-wrt.com>   	return NULL;   } -@@ -176,11 +183,11 @@ acl_add(struct ieee80211vap *vap, const  +@@ -176,11 +183,11 @@ acl_add(struct ieee80211vap *vap, const   		return -ENOMEM;   	} @@ -51,7 +51,7 @@ Signed-off-by: Sebastian Gottschall <brainslayer@dd-wrt.com>   			FREE(new, M_80211_ACL);   			IEEE80211_DPRINTF(vap, IEEE80211_MSG_ACL,   				"ACL: add " MAC_FMT " failed, already present\n", -@@ -191,7 +198,7 @@ acl_add(struct ieee80211vap *vap, const  +@@ -191,7 +198,7 @@ acl_add(struct ieee80211vap *vap, const   	IEEE80211_ADDR_COPY(new->acl_macaddr, mac);   	TAILQ_INSERT_TAIL(&as->as_list, new, acl_list);   	LIST_INSERT_HEAD(&as->as_hash[hash], new, acl_hash); diff --git a/package/madwifi/patches/387-maxassoc.patch b/package/madwifi/patches/387-maxassoc.patch index df2b7fd1f..79e5b2f4f 100644 --- a/package/madwifi/patches/387-maxassoc.patch +++ b/package/madwifi/patches/387-maxassoc.patch @@ -56,14 +56,14 @@   	/*  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -4020,7 +4020,26 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -4020,7 +4020,26 @@ ieee80211_recv_mgmt(struct ieee80211vap   			vap->iv_stats.is_rx_assoc_norate++;   			return;   		}  +		if (vap->iv_max_nodes > 0) {  +			unsigned int active_nodes = 0;  +			struct ieee80211_node *tni; -+ +   +			IEEE80211_NODE_TABLE_LOCK_IRQ(&ic->ic_sta);  +			TAILQ_FOREACH(tni, &ic->ic_sta.nt_node, ni_list) {  +				if (tni->ni_vap != vap) @@ -73,7 +73,7 @@  +				active_nodes++;  +			}  +			IEEE80211_NODE_TABLE_UNLOCK_IRQ(&ic->ic_sta); -  ++  +			if (active_nodes >= vap->iv_max_nodes) {  +				/* too many nodes connected */  +				ieee80211_node_leave(ni); diff --git a/package/madwifi/patches/389-autochannel.patch b/package/madwifi/patches/389-autochannel.patch index 06c5c12a7..548f09e7d 100644 --- a/package/madwifi/patches/389-autochannel.patch +++ b/package/madwifi/patches/389-autochannel.patch @@ -16,7 +16,7 @@   	sc->sc_curchan.channel = ic->ic_curchan->ic_freq;   	sc->sc_curchan.channelFlags = ath_chan2flags(ic->ic_curchan);   	if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) { -@@ -2914,6 +2916,48 @@ ath_hw_check_atim(struct ath_softc *sc,  +@@ -2914,6 +2916,48 @@ ath_hw_check_atim(struct ath_softc *sc,   	return 0;   } @@ -118,7 +118,7 @@   #define	IEEE80211_CHAN_MAX	255  --- a/net80211/ieee80211_scan_ap.c  +++ b/net80211/ieee80211_scan_ap.c -@@ -417,6 +417,19 @@ pc_cmp_rssi(struct ap_state *as, struct  +@@ -417,6 +417,19 @@ pc_cmp_rssi(struct ap_state *as, struct   /* This function must be invoked with locks acquired */   static int @@ -196,7 +196,7 @@   	}   	if (best != NULL) { -@@ -599,6 +583,9 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -599,6 +583,9 @@ ap_end(struct ieee80211_scan_state *ss,   		("wrong opmode %u", vap->iv_opmode));   	ic = vap->iv_ic; diff --git a/package/madwifi/patches/390-frame_type.patch b/package/madwifi/patches/390-frame_type.patch index 0987f7c5d..6de01102c 100644 --- a/package/madwifi/patches/390-frame_type.patch +++ b/package/madwifi/patches/390-frame_type.patch @@ -1,6 +1,6 @@  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -4443,7 +4443,9 @@ ath_eth_type_trans(struct sk_buff *skb,  +@@ -4443,7 +4443,9 @@ ath_eth_type_trans(struct sk_buff *skb,   		if (memcmp(eth->h_dest, dev->dev_addr, ETH_ALEN))   			skb->pkt_type = PACKET_OTHERHOST; diff --git a/package/madwifi/patches/393-mbss_vap_auth.patch b/package/madwifi/patches/393-mbss_vap_auth.patch index 0e3ecaf69..a2637cccb 100644 --- a/package/madwifi/patches/393-mbss_vap_auth.patch +++ b/package/madwifi/patches/393-mbss_vap_auth.patch @@ -291,7 +291,7 @@   		if (TAILQ_NEXT(vap, iv_next) != NULL) {   			skb1 = skb_copy(skb, GFP_ATOMIC);   			if (skb1 == NULL) { -@@ -950,8 +957,12 @@ ieee80211_input_all(struct ieee80211com  +@@ -950,8 +957,12 @@ ieee80211_input_all(struct ieee80211com   			skb1 = skb;   			skb = NULL;   		} @@ -319,7 +319,7 @@   					!ni1->ni_subif &&   				    ni1 != vap->iv_bss) { -@@ -3520,6 +3529,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3520,6 +3529,7 @@ ieee80211_recv_mgmt(struct ieee80211vap   				 (vap->iv_opmode == IEEE80211_M_WDS)) &&   				(scan.capinfo & IEEE80211_CAPINFO_ESS))) {   			struct ieee80211vap *avp = NULL; @@ -327,7 +327,7 @@   			int found = 0;   			IEEE80211_LOCK_IRQ(vap->iv_ic); -@@ -3553,10 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3553,10 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap   					ni->ni_associd |= 0xc000;   					avp->iv_wdsnode = ieee80211_ref_node(ni);   					IEEE80211_UNLOCK_IRQ(ic); @@ -341,7 +341,7 @@   			} else {   				/*   				 * Copy data from beacon to neighbor table. -@@ -3595,6 +3607,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3595,6 +3607,8 @@ ieee80211_recv_mgmt(struct ieee80211vap   				ni->ni_rssi = rssi;   				ni->ni_rtsf = rtsf;   				ni->ni_last_rx = jiffies; @@ -363,7 +363,7 @@   	         (const struct ieee80211_frame_min *)skb->data);   	if (ni == NULL) {   		DPRINTF(sc, ATH_DEBUG_BEACON, "Dropping; node unknown.\n"); -@@ -6746,7 +6745,9 @@ ath_rx_poll(struct net_device *dev, int  +@@ -6746,7 +6745,9 @@ ath_rx_poll(struct net_device *dev, int   	struct ath_desc *ds;   	struct ath_rx_status *rs;   	struct sk_buff *skb = NULL; diff --git a/package/madwifi/patches/394-probereq.patch b/package/madwifi/patches/394-probereq.patch index c754bfa9f..706d5a5ac 100644 --- a/package/madwifi/patches/394-probereq.patch +++ b/package/madwifi/patches/394-probereq.patch @@ -1,6 +1,6 @@  --- a/net80211/ieee80211_input.c  +++ b/net80211/ieee80211_input.c -@@ -3621,6 +3621,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3621,6 +3621,8 @@ ieee80211_recv_mgmt(struct ieee80211vap   			vap->iv_stats.is_rx_mgtdiscard++;   			return;   		} diff --git a/package/madwifi/patches/396-napi_ff_fix.patch b/package/madwifi/patches/396-napi_ff_fix.patch index f84c4b4d7..ca35d4cca 100644 --- a/package/madwifi/patches/396-napi_ff_fix.patch +++ b/package/madwifi/patches/396-napi_ff_fix.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -6734,10 +6734,10 @@ ath_rx_poll(struct net_device *dev, int  +@@ -6734,10 +6734,10 @@ ath_rx_poll(struct net_device *dev, int   #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)   	struct ath_softc *sc = container_of(napi, struct ath_softc, sc_napi);   	struct net_device *dev = sc->sc_dev; diff --git a/package/madwifi/patches/400-new_hal.patch b/package/madwifi/patches/400-new_hal.patch index dca312597..3989b0fb4 100644 --- a/package/madwifi/patches/400-new_hal.patch +++ b/package/madwifi/patches/400-new_hal.patch @@ -15,7 +15,7 @@   	/*   	 * Check if the MAC has multi-rate retry support.   	 * We do this by trying to setup a fake extended -@@ -7568,7 +7576,7 @@ ath_txq_setup(struct ath_softc *sc, int  +@@ -7568,7 +7576,7 @@ ath_txq_setup(struct ath_softc *sc, int   	if (qtype == HAL_TX_QUEUE_UAPSD)   		qi.tqi_qflags = HAL_TXQ_TXDESCINT_ENABLE;   	else diff --git a/package/madwifi/patches/408-changeset_r3337.patch b/package/madwifi/patches/408-changeset_r3337.patch index c78daf4c6..53e76a9e8 100644 --- a/package/madwifi/patches/408-changeset_r3337.patch +++ b/package/madwifi/patches/408-changeset_r3337.patch @@ -10,7 +10,7 @@   Please let us know if you think your name should be mentioned here!  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -3147,7 +3147,7 @@ ath_tx_startraw(struct net_device *dev,  +@@ -3147,7 +3147,7 @@ ath_tx_startraw(struct net_device *dev,   	struct ath_softc *sc = dev->priv;   	struct ath_hal *ah = sc->sc_ah;   	struct ieee80211_phy_params *ph = (struct ieee80211_phy_params *) diff --git a/package/madwifi/patches/411-autochannel_multi.patch b/package/madwifi/patches/411-autochannel_multi.patch index 6e6d678fd..d05c447f7 100644 --- a/package/madwifi/patches/411-autochannel_multi.patch +++ b/package/madwifi/patches/411-autochannel_multi.patch @@ -307,7 +307,7 @@   } -@@ -575,6 +583,7 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -575,6 +583,7 @@ ap_end(struct ieee80211_scan_state *ss,   	struct ap_state *as = ss->ss_priv;   	struct ieee80211_channel *bestchan = NULL;   	struct ieee80211com *ic = NULL; @@ -315,7 +315,7 @@   	int res = 1;   	SCAN_AP_LOCK_IRQ(as); -@@ -586,8 +595,11 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -586,8 +595,11 @@ ap_end(struct ieee80211_scan_state *ss,   	/* record stats for the channel that was scanned last */   	ic->ic_set_channel(ic); @@ -327,7 +327,7 @@   		if (ss->ss_last > 0) {   			/* no suitable channel, should not happen */   			printk(KERN_ERR "%s: %s: no suitable channel! " -@@ -606,6 +618,7 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -606,6 +618,7 @@ ap_end(struct ieee80211_scan_state *ss,   					bestchan->ic_freq, bestchan->ic_flags &   					~IEEE80211_CHAN_TURBO)) == NULL) {   				/* should never happen ?? */ @@ -335,7 +335,7 @@   				SCAN_AP_UNLOCK_IRQ_EARLY(as);   				return 0;   			} -@@ -618,6 +631,9 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -618,6 +631,9 @@ ap_end(struct ieee80211_scan_state *ss,   			as->as_action = action;   		as->as_selbss = se; diff --git a/package/madwifi/patches/414-txpower.patch b/package/madwifi/patches/414-txpower.patch index 6b33b8b1c..3c18bd6fe 100644 --- a/package/madwifi/patches/414-txpower.patch +++ b/package/madwifi/patches/414-txpower.patch @@ -180,7 +180,7 @@   static void ath_poll_disable(struct net_device *dev);   static void ath_poll_enable(struct net_device *dev); -@@ -3168,7 +3167,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); diff --git a/package/madwifi/patches/416-wprobe.patch b/package/madwifi/patches/416-wprobe.patch index 6c871f425..0b378d7e2 100644 --- a/package/madwifi/patches/416-wprobe.patch +++ b/package/madwifi/patches/416-wprobe.patch @@ -444,7 +444,7 @@   static int beacon_cal = 1;   static const struct ath_hw_detect generic_hw_info = { -@@ -1525,6 +1526,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1525,6 +1526,7 @@ ath_vap_create(struct ieee80211com *ic,   		ath_hal_intrset(ah, sc->sc_imask);   	} @@ -509,7 +509,7 @@   				if (bf->bf_skb->priority == WME_AC_VO ||   				    bf->bf_skb->priority == WME_AC_VI)   					ni->ni_ic->ic_wme.wme_hipri_traffic++; -@@ -10111,6 +10124,7 @@ ath_newassoc(struct ieee80211_node *ni,  +@@ -10111,6 +10124,7 @@ ath_newassoc(struct ieee80211_node *ni,   	struct ath_softc *sc = ic->ic_dev->priv;   	sc->sc_rc->ops->newassoc(sc, ATH_NODE(ni), isnew); diff --git a/package/madwifi/patches/420-diversity_fix.patch b/package/madwifi/patches/420-diversity_fix.patch index 4a5c0b093..90bcd0e16 100644 --- a/package/madwifi/patches/420-diversity_fix.patch +++ b/package/madwifi/patches/420-diversity_fix.patch @@ -54,7 +54,7 @@   	if (bfaddr != 0) {   		/*   		 * Stop any current DMA and put the new frame(s) on the queue. -@@ -6734,9 +6708,8 @@ ath_setdefantenna(struct ath_softc *sc,  +@@ -6734,9 +6708,8 @@ ath_setdefantenna(struct ath_softc *sc,   {   	struct ath_hal *ah = sc->sc_ah; diff --git a/package/madwifi/patches/421-channel_handling.patch b/package/madwifi/patches/421-channel_handling.patch index 8424321d7..2a8ec27ce 100644 --- a/package/madwifi/patches/421-channel_handling.patch +++ b/package/madwifi/patches/421-channel_handling.patch @@ -8,7 +8,7 @@   static void ath_updateslot(struct net_device *);   static int ath_beaconq_setup(struct ath_softc *);   static int ath_beacon_alloc(struct ath_softc *, struct ieee80211_node *); -@@ -240,7 +239,7 @@ static void ath_setup_stationkey(struct  +@@ -240,7 +239,7 @@ static void ath_setup_stationkey(struct   static void ath_setup_stationwepkey(struct ieee80211_node *);   static void ath_setup_keycacheslot(struct ath_softc *, struct ieee80211_node *);   static void ath_newassoc(struct ieee80211_node *, int); @@ -263,7 +263,7 @@   	ath_rate_setup(dev, mode);   	ath_setcurmode(sc, mode); -@@ -10124,8 +10142,7 @@ ath_newassoc(struct ieee80211_node *ni,  +@@ -10124,8 +10142,7 @@ ath_newassoc(struct ieee80211_node *ni,   }   static int @@ -273,7 +273,7 @@   {   	struct ath_softc *sc = dev->priv;   	struct ieee80211com *ic = &sc->sc_ic; -@@ -10139,17 +10156,31 @@ ath_getchannels(struct net_device *dev,  +@@ -10139,17 +10156,31 @@ ath_getchannels(struct net_device *dev,   		EPRINTF(sc, "Insufficient memory for channel table!\n");   		return -ENOMEM;   	} @@ -674,7 +674,7 @@   	  .procname     = "rp",   	  .mode         = 0200,   	  .proc_handler = ath_sysctl_halparam, -@@ -11669,13 +11801,6 @@ static ctl_table ath_static_sysctls[] =  +@@ -11669,13 +11801,6 @@ static ctl_table ath_static_sysctls[] =   	},   #endif   	{ .ctl_name	= CTL_AUTO, @@ -688,7 +688,7 @@   	  .procname	= "maxvaps",   	  .mode		= 0444,   	  .data		= &ath_maxvaps, -@@ -11683,13 +11808,6 @@ static ctl_table ath_static_sysctls[] =  +@@ -11683,13 +11808,6 @@ static ctl_table ath_static_sysctls[] =   	  .proc_handler	= proc_dointvec   	},   	{ .ctl_name	= CTL_AUTO, @@ -1109,7 +1109,7 @@   	nrs = &ni->ni_rates;   	fixedrate = IEEE80211_FIXED_RATE_NONE;   	for (i = 0; i < nrs->rs_nrates;) { -@@ -1407,6 +1407,7 @@ ieee80211_new_state(struct ieee80211vap  +@@ -1407,6 +1407,7 @@ ieee80211_new_state(struct ieee80211vap   	IEEE80211_VAPS_UNLOCK_IRQ(ic);   	return rc;   } @@ -1294,7 +1294,7 @@   	return best;   } -@@ -609,6 +611,7 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -609,6 +611,7 @@ ap_end(struct ieee80211_scan_state *ss,   		res = 1; /* Do NOT restart scan */   	} else {   		struct ieee80211_scan_entry se; @@ -1302,7 +1302,7 @@   		/* XXX: notify all VAPs? */   		/* if this is a dynamic turbo frequency , start with normal    		 * mode first */ -@@ -623,6 +626,11 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -623,6 +626,11 @@ ap_end(struct ieee80211_scan_state *ss,   				return 0;   			}   		} diff --git a/package/madwifi/patches/424-timing.patch b/package/madwifi/patches/424-timing.patch index a8b82fa10..8369db618 100644 --- a/package/madwifi/patches/424-timing.patch +++ b/package/madwifi/patches/424-timing.patch @@ -196,10 +196,12 @@   static inline void ath_hal_beaconinit(struct ath_hal *ah, u_int32_t nexttbtt,   				      u_int32_t intval)   { -@@ -841,6 +852,17 @@ static inline HAL_BOOL ath_hal_setslotti +@@ -839,6 +850,17 @@ static inline HAL_BOOL ath_hal_setslotti + 	ath_hal_set_function(NULL); + 	ATH_HAL_UNLOCK_IRQ(ah->ah_sc);   	return ret; - } -  ++} ++  +static inline HAL_BOOL ath_hal_seteifstime(struct ath_hal *ah, u_int a1)  +{  +	HAL_BOOL ret; @@ -209,11 +211,9 @@  +	ath_hal_set_function(NULL);  +	ATH_HAL_UNLOCK_IRQ(ah->ah_sc);  +	return ret; -+} -+ + } +    static inline void ath_hal_setledstate(struct ath_hal *ah, HAL_LED_STATE a1) - { - 	ATH_HAL_LOCK_IRQ(ah->ah_sc);  --- a/ath/if_athvar.h  +++ b/ath/if_athvar.h  @@ -613,6 +613,15 @@ struct ath_rp { @@ -446,7 +446,7 @@   {  --- a/ath_rate/sample/sample.c  +++ b/ath_rate/sample/sample.c -@@ -137,92 +137,6 @@ rate_to_ndx(struct sample_node *sn, int  +@@ -137,92 +137,6 @@ rate_to_ndx(struct sample_node *sn, int   	return -1;   } diff --git a/package/madwifi/patches/425-rc_rexmit.patch b/package/madwifi/patches/425-rc_rexmit.patch index 10a6f9c51..252767a8c 100644 --- a/package/madwifi/patches/425-rc_rexmit.patch +++ b/package/madwifi/patches/425-rc_rexmit.patch @@ -303,7 +303,7 @@   		/* don't use a bit-rate that has been failing */   		if (sn->stats[size_bin][x].successive_failures > 3)   			continue; -@@ -234,10 +230,6 @@ pick_sample_ndx(struct sample_node *sn,  +@@ -234,10 +230,6 @@ pick_sample_ndx(struct sample_node *sn,   		if (sn->rates[ndx].rate > 22 && ndx > current_ndx + 2)   			continue; diff --git a/package/madwifi/patches/430-use_netdev_priv.patch b/package/madwifi/patches/430-use_netdev_priv.patch index 642a9d21d..3f65424a5 100644 --- a/package/madwifi/patches/430-use_netdev_priv.patch +++ b/package/madwifi/patches/430-use_netdev_priv.patch @@ -67,7 +67,7 @@   	struct ath_hal *ah = sc->sc_ah;   	struct net_device *dev;   	struct ath_vap *avp; -@@ -1344,7 +1344,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1344,7 +1344,7 @@ ath_vap_create(struct ieee80211com *ic,   		return NULL;   	} @@ -175,7 +175,7 @@   	struct ieee80211com *ic = &sc->sc_ic;   	struct ath_hal *ah = sc->sc_ah;   	struct ieee80211_channel *c; -@@ -3164,7 +3164,7 @@ dot11_to_ratecode(struct ath_softc *sc,  +@@ -3164,7 +3164,7 @@ dot11_to_ratecode(struct ath_softc *sc,   static int   ath_tx_startraw(struct net_device *dev, struct ath_buf *bf, struct sk_buff *skb)   { @@ -372,7 +372,7 @@   #ifdef AR_DEBUG           struct ieee80211_frame *wh = (struct ieee80211_frame *)skb->data;   #endif -@@ -6780,7 +6780,7 @@ ath_rx_poll(struct net_device *dev, int  +@@ -6780,7 +6780,7 @@ ath_rx_poll(struct net_device *dev, int   	struct net_device *dev = sc->sc_dev;   	int rx_limit = budget;   #else @@ -543,7 +543,7 @@   	ieee80211_keyix_t keyix;   	keyix = ath_key_alloc(vap, &ni->ni_ucastkey); -@@ -10177,7 +10177,7 @@ ath_newassoc(struct ieee80211_node *ni,  +@@ -10177,7 +10177,7 @@ ath_newassoc(struct ieee80211_node *ni,   {   	struct ieee80211com *ic = ni->ni_ic;   	struct ieee80211vap *vap = ni->ni_vap; @@ -552,7 +552,7 @@   	sc->sc_rc->ops->newassoc(sc, ATH_NODE(ni), isnew);   	ath_wprobe_node_join(ni->ni_vap, ni); -@@ -10208,7 +10208,7 @@ ath_newassoc(struct ieee80211_node *ni,  +@@ -10208,7 +10208,7 @@ ath_newassoc(struct ieee80211_node *ni,   static int   ath_getchannels(struct net_device *dev)   { @@ -723,7 +723,7 @@   	if (sc->sc_txcont_rate != new_rate) {   		/*  NOTE: This value is sanity checked and dropped down to    		 *  closest rate in txcont_on. */ -@@ -12539,7 +12539,7 @@ ath_set_txcont_rate(struct ieee80211com  +@@ -12539,7 +12539,7 @@ ath_set_txcont_rate(struct ieee80211com   ath_get_txcont_rate(struct ieee80211com *ic)   {   	struct net_device *dev = ic->ic_dev; @@ -786,7 +786,7 @@   	ath_hal_dump_map(sc->sc_ah);   	return 0;   } -@@ -12724,7 +12724,7 @@ ath_rcv_dev_event(struct notifier_block  +@@ -12724,7 +12724,7 @@ ath_rcv_dev_event(struct notifier_block   	void *ptr)   {   	struct net_device *dev = (struct net_device *)ptr; @@ -938,7 +938,7 @@   		}   } -@@ -822,7 +822,7 @@ ath_proc_read_nodes(struct ieee80211vap  +@@ -822,7 +822,7 @@ ath_proc_read_nodes(struct ieee80211vap   		unsigned int x = 0;   		unsigned int this_tp, this_prob, this_eprob;   #ifdef AR_DEBUG @@ -1002,7 +1002,7 @@   #define skb_tail_pointer(_skb) ((_skb)->tail)  --- a/net80211/ieee80211.c  +++ b/net80211/ieee80211.c -@@ -458,7 +458,7 @@ ieee80211_vap_setup(struct ieee80211com  +@@ -458,7 +458,7 @@ ieee80211_vap_setup(struct ieee80211com   #define	IEEE80211_C_OPMODE \   	(IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | IEEE80211_C_AHDEMO | \   	 IEEE80211_C_MONITOR) @@ -1029,7 +1029,7 @@   	struct ieee80211vap *vap;   	struct ifmedia_entry *ime = ic->ic_media.ifm_cur;   	enum ieee80211_phymode newphymode; -@@ -1511,7 +1511,7 @@ checkrate(struct ieee80211com *ic, enum  +@@ -1511,7 +1511,7 @@ checkrate(struct ieee80211com *ic, enum   int   ieee80211_media_change(struct net_device *dev)   { @@ -1552,7 +1552,7 @@          struct ieee80211com *ic = vap->iv_ic;          params[0] = ic->ic_dump_hal_map(ic);          return 0; -@@ -1545,7 +1545,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; @@ -1633,7 +1633,7 @@   	struct ieee80211com *ic = vap->iv_ic;   	struct ifreq ifr;   	char s[6];		/* big enough for ``11adt'' */ -@@ -2222,10 +2222,10 @@ ieee80211_setathcap(struct ieee80211vap  +@@ -2222,10 +2222,10 @@ ieee80211_setathcap(struct ieee80211vap   static int   ieee80211_set_turbo(struct net_device *dev, int flag)   { @@ -1862,7 +1862,7 @@   	struct ieee80211com *ic = vap->iv_ic;   	struct ieee80211_node *ni;   	u_int8_t macaddr[IEEE80211_ADDR_LEN]; -@@ -4428,7 +4428,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)   { diff --git a/package/madwifi/patches/432-netdev_ops.patch b/package/madwifi/patches/432-netdev_ops.patch index 2e542bfec..af829b164 100644 --- a/package/madwifi/patches/432-netdev_ops.patch +++ b/package/madwifi/patches/432-netdev_ops.patch @@ -53,7 +53,7 @@ http://madwifi-project.org/changeset/4005   	unregister_netdev(dev);   	return 0;   } -@@ -12732,8 +12749,13 @@ ath_rcv_dev_event(struct notifier_block  +@@ -12732,8 +12749,13 @@ ath_rcv_dev_event(struct notifier_block   	struct net_device *dev = (struct net_device *)ptr;   	struct ath_softc *sc = (struct ath_softc *)netdev_priv(dev); @@ -88,7 +88,7 @@ http://madwifi-project.org/changeset/4005   int   ieee80211_vap_setup(struct ieee80211com *ic, struct net_device *dev,   	const char *name, int opmode, int flags, struct ieee80211vap *master) -@@ -471,16 +483,21 @@ ieee80211_vap_setup(struct ieee80211com  +@@ -471,16 +483,21 @@ ieee80211_vap_setup(struct ieee80211com   		} else   			strncpy(dev->name, name, sizeof(dev->name));   	} diff --git a/package/madwifi/patches/436-injection_checks.patch b/package/madwifi/patches/436-injection_checks.patch index 7bdd82c0f..274873111 100644 --- a/package/madwifi/patches/436-injection_checks.patch +++ b/package/madwifi/patches/436-injection_checks.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -3199,7 +3199,13 @@ ath_tx_startraw(struct net_device *dev,  +@@ -3199,7 +3199,13 @@ ath_tx_startraw(struct net_device *dev,   	struct ieee80211_frame *wh;   	wh = (struct ieee80211_frame *)skb->data; @@ -14,7 +14,7 @@   	rt = sc->sc_currates;   	txrate = dot11_to_ratecode(sc, rt, ph->rate0);   	power = ph->power > 63 ? 63 : ph->power; -@@ -3224,7 +3230,8 @@ ath_tx_startraw(struct net_device *dev,  +@@ -3224,7 +3230,8 @@ ath_tx_startraw(struct net_device *dev,   	rt = sc->sc_currates;   	KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); diff --git a/package/madwifi/patches/440-wme_cleanup.patch b/package/madwifi/patches/440-wme_cleanup.patch index d6c1b2683..bb81ac7f8 100644 --- a/package/madwifi/patches/440-wme_cleanup.patch +++ b/package/madwifi/patches/440-wme_cleanup.patch @@ -36,13 +36,13 @@   	struct ieee80211vap *vap = ni->ni_vap;  -	struct ether_header *eh = (struct ether_header *) skb->data;  -	int v_wme_ac = 0, d_wme_ac = 0; -- +   -	/* default priority */  -	skb->priority = WME_AC_BE;  -  -	if (!(ni->ni_flags & IEEE80211_NODE_QOS))  -		return 0; -  +-  -	/*   -	 * If node has a vlan tag then all traffic  -	 * to it must have a matching vlan id. diff --git a/package/madwifi/patches/441-fix_ibss_node_handling.patch b/package/madwifi/patches/441-fix_ibss_node_handling.patch index b12930fbd..20d59de26 100644 --- a/package/madwifi/patches/441-fix_ibss_node_handling.patch +++ b/package/madwifi/patches/441-fix_ibss_node_handling.patch @@ -44,7 +44,7 @@   			if (dir != IEEE80211_FC1_DIR_NODS) {   				IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY,   					wh, "data", "invalid dir 0x%x", dir); -@@ -3558,6 +3563,11 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3558,6 +3563,11 @@ ieee80211_recv_mgmt(struct ieee80211vap   			} else if ((vap->iv_opmode == IEEE80211_M_WDS) && vap->iv_wdsnode) {   				found = 1;   				ni = ni_or_null = vap->iv_wdsnode; @@ -56,7 +56,7 @@   			}   			IEEE80211_UNLOCK_IRQ(vap->iv_ic); -@@ -3686,19 +3696,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3686,19 +3696,8 @@ ieee80211_recv_mgmt(struct ieee80211vap   			vap->iv_stats.is_rx_ssidmismatch++; /*XXX*/   			return;   		} diff --git a/package/madwifi/patches/446-single_module.patch b/package/madwifi/patches/446-single_module.patch index e546b054a..b2898ca7e 100644 --- a/package/madwifi/patches/446-single_module.patch +++ b/package/madwifi/patches/446-single_module.patch @@ -89,7 +89,7 @@   {  --- a/net80211/ieee80211_crypto_ccmp.c  +++ b/net80211/ieee80211_crypto_ccmp.c -@@ -686,6 +686,8 @@ ccmp_decrypt(struct ieee80211_key *key,  +@@ -686,6 +686,8 @@ ccmp_decrypt(struct ieee80211_key *key,   }   #undef CCMP_DECRYPT diff --git a/package/madwifi/patches/448-beacon_handling_fixes.patch b/package/madwifi/patches/448-beacon_handling_fixes.patch index 3fa97e2e6..9c0f912e4 100644 --- a/package/madwifi/patches/448-beacon_handling_fixes.patch +++ b/package/madwifi/patches/448-beacon_handling_fixes.patch @@ -1,6 +1,6 @@  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -160,7 +160,7 @@ static int ath_check_beacon_done(struct  +@@ -160,7 +160,7 @@ static int ath_check_beacon_done(struct   static void ath_beacon_send(struct ath_softc *, int *, uint64_t hw_tsf);   static void ath_beacon_return(struct ath_softc *, struct ath_buf *);   static void ath_beacon_free(struct ath_softc *); @@ -81,7 +81,7 @@   	if (xchanmode != -1)   		ath_xchanmode = xchanmode;   	error = ath_getchannels(dev); -@@ -1349,12 +1337,6 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1349,12 +1337,6 @@ ath_vap_create(struct ieee80211com *ic,   		return NULL;   	} @@ -94,7 +94,7 @@   	dev = alloc_etherdev(sizeof(struct ath_vap) + sc->sc_rc->arc_vap_space);   	if (dev == NULL) {   		/* XXX msg */ -@@ -1424,7 +1406,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1424,7 +1406,7 @@ ath_vap_create(struct ieee80211com *ic,   		TAILQ_FOREACH(v, &ic->ic_vaps, iv_next)   			id_mask |= (1 << ATH_GET_VAP_ID(v->iv_myaddr)); @@ -103,7 +103,7 @@   			/* get the first available slot */   			if ((id_mask & (1 << id)) == 0) {   				ATH_SET_VAP_BSSID(vap->iv_myaddr, id); -@@ -1451,11 +1433,11 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1451,11 +1433,11 @@ ath_vap_create(struct ieee80211com *ic,   		/* Assign the VAP to a beacon xmit slot.  As   		 * above, this cannot fail to find one. */   		avp->av_bslot = 0; @@ -117,7 +117,7 @@   				    sc->sc_bslot[slot+1] == NULL) {   					avp->av_bslot = slot + 1;   					break; -@@ -1463,8 +1445,11 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1463,8 +1445,11 @@ ath_vap_create(struct ieee80211com *ic,   				avp->av_bslot = slot;   				/* NB: keep looking for a double slot */   			} @@ -131,7 +131,7 @@   		sc->sc_bslot[avp->av_bslot] = vap;   		sc->sc_nbcnvaps++; -@@ -1475,15 +1460,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1475,15 +1460,7 @@ ath_vap_create(struct ieee80211com *ic,   			 * of staggered beacons.   			 */   			/* XXX check for beacon interval too small */ @@ -148,7 +148,7 @@   		}   		DPRINTF(sc, ATH_DEBUG_BEACON, "sc->sc_stagbeacons %sabled\n",    				(sc->sc_stagbeacons ? "en" : "dis")); -@@ -1553,7 +1530,7 @@ ath_vap_create(struct ieee80211com *ic,  +@@ -1553,7 +1530,7 @@ ath_vap_create(struct ieee80211com *ic,   		if (ath_startrecv(sc) != 0)	/* restart recv */   			EPRINTF(sc, "Unable to start receive logic.\n");   		if (sc->sc_beacons) @@ -231,7 +231,7 @@   {   	struct ieee80211com *ic = &sc->sc_ic;   	struct ath_hal *ah = sc->sc_ah; -@@ -5553,7 +5530,7 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5553,7 +5530,7 @@ ath_beacon_config(struct ath_softc *sc,   	/* We should reset hw TSF only once, so we increment   	 * ni_tstamp.tsf to avoid resetting the hw TSF multiple   	 * times */ @@ -240,7 +240,7 @@   		reset_tsf = 1;   		ni->ni_tstamp.tsf = cpu_to_le64(1);   	} -@@ -5567,7 +5544,7 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5567,7 +5544,7 @@ ath_beacon_config(struct ath_softc *sc,   		/* NB: the beacon interval is kept internally in TUs */   		intval = ic->ic_lintval & HAL_BEACON_PERIOD;   		if (sc->sc_stagbeacons) @@ -249,7 +249,7 @@   		if ((sc->sc_nostabeacons) &&   		    (vap->iv_opmode == IEEE80211_M_HOSTAP))   			reset_tsf = 1; -@@ -5583,31 +5560,24 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5583,31 +5560,24 @@ ath_beacon_config(struct ath_softc *sc,   		 * time */   		nexttbtt = intval;   	} else if (intval) {	/* NB: can be 0 for monitor mode */ @@ -299,7 +299,7 @@   		}   	} -@@ -5730,9 +5700,6 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5730,9 +5700,6 @@ ath_beacon_config(struct ath_softc *sc,   		ath_beacon_dturbo_config(vap, intval &   				~(HAL_BEACON_RESET_TSF | HAL_BEACON_ENA));   #endif @@ -378,7 +378,7 @@   	  .procname	= "regdomain",   	  .mode		= 0644,   	  .proc_handler	= ath_sysctl_halparam, -@@ -11928,13 +11883,6 @@ static ctl_table ath_static_sysctls[] =  +@@ -11928,13 +11883,6 @@ static ctl_table ath_static_sysctls[] =   	},   #endif   	{ .ctl_name	= CTL_AUTO, diff --git a/package/madwifi/patches/451-ibss_race_fix.patch b/package/madwifi/patches/451-ibss_race_fix.patch index 8349b318f..27e1b47da 100644 --- a/package/madwifi/patches/451-ibss_race_fix.patch +++ b/package/madwifi/patches/451-ibss_race_fix.patch @@ -43,7 +43,7 @@   				}   			}   			iwspy_event(vap, ni, rssi); -@@ -3553,8 +3546,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3553,8 +3546,8 @@ ieee80211_recv_mgmt(struct ieee80211vap   				(((vap->iv_opmode == IEEE80211_M_HOSTAP) ||   				 (vap->iv_opmode == IEEE80211_M_WDS)) &&   				(scan.capinfo & IEEE80211_CAPINFO_ESS))) { @@ -53,7 +53,7 @@   			int found = 0;   			IEEE80211_LOCK_IRQ(vap->iv_ic); -@@ -3570,14 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3570,14 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap   					}   				}   				if (found) @@ -72,7 +72,7 @@   				found = 1;   			}   			IEEE80211_UNLOCK_IRQ(vap->iv_ic); -@@ -3585,20 +3576,21 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3585,20 +3576,21 @@ ieee80211_recv_mgmt(struct ieee80211vap   			if (!found)   				break; @@ -100,7 +100,7 @@   			} else {   				/*   				 * Copy data from beacon to neighbor table. -@@ -3606,39 +3598,38 @@ ieee80211_recv_mgmt(struct ieee80211vap  +@@ -3606,39 +3598,38 @@ ieee80211_recv_mgmt(struct ieee80211vap   				 * ieee80211_add_neighbor(), so we just copy   				 * everything over to be safe.   				 */ diff --git a/package/madwifi/patches/452-minstrel_no_timer.patch b/package/madwifi/patches/452-minstrel_no_timer.patch index b9b5c9f07..f0f5c26f9 100644 --- a/package/madwifi/patches/452-minstrel_no_timer.patch +++ b/package/madwifi/patches/452-minstrel_no_timer.patch @@ -27,7 +27,7 @@   #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,52)) -@@ -204,6 +202,11 @@ ath_rate_findrate(struct ath_softc *sc,  +@@ -204,6 +202,11 @@ ath_rate_findrate(struct ath_softc *sc,   		unsigned int ndx, offset;   		int mrr; diff --git a/package/madwifi/patches/455-beacon_watchdog.patch b/package/madwifi/patches/455-beacon_watchdog.patch index e399564df..d0b4fa63e 100644 --- a/package/madwifi/patches/455-beacon_watchdog.patch +++ b/package/madwifi/patches/455-beacon_watchdog.patch @@ -62,7 +62,7 @@   /*    * Configure the beacon and sleep timers.    * -@@ -5523,6 +5543,7 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5523,6 +5543,7 @@ ath_beacon_config(struct ath_softc *sc,   	if (vap == NULL)   		vap = TAILQ_FIRST(&ic->ic_vaps);   /* XXX */ @@ -70,7 +70,7 @@   	ni = vap->iv_bss;   	/* TSF calculation is timing critical - we don't want to be interrupted here */ -@@ -5699,6 +5720,9 @@ ath_beacon_config(struct ath_softc *sc,  +@@ -5699,6 +5720,9 @@ ath_beacon_config(struct ath_softc *sc,   			sc->sc_imask |= HAL_INT_SWBA;   			ath_set_beacon_cal(sc, 1);   			ath_beaconq_config(sc); diff --git a/package/madwifi/patches/459-2.6.33_compile.patch b/package/madwifi/patches/459-2.6.33_compile.patch index e3b94b1c8..4e08a011a 100644 --- a/package/madwifi/patches/459-2.6.33_compile.patch +++ b/package/madwifi/patches/459-2.6.33_compile.patch @@ -15,7 +15,7 @@   char *uts_release = UTS_RELEASE;  --- a/ath/if_ath.c  +++ b/ath/if_ath.c -@@ -11580,227 +11580,231 @@ static int mincalibrate = 1;		/* once a  +@@ -11580,227 +11580,231 @@ static int mincalibrate = 1;		/* once a   static int maxint = 0x7fffffff;		/* 32-bit big */   static const ctl_table ath_sysctl_template[] = { @@ -309,7 +309,7 @@   	  .procname	= "debug",   	  .mode		= 0644,   	  .data		= &ath_debug, -@@ -11974,14 +11982,14 @@ static ctl_table ath_static_sysctls[] =  +@@ -11974,14 +11982,14 @@ static ctl_table ath_static_sysctls[] =   	  .proc_handler	= proc_dointvec   	},   #endif @@ -326,7 +326,7 @@   	  .procname	= "calibrate",   	  .mode		= 0644,   	  .data		= &ath_calinterval, -@@ -11993,14 +12001,14 @@ static ctl_table ath_static_sysctls[] =  +@@ -11993,14 +12001,14 @@ static ctl_table ath_static_sysctls[] =   	{ 0 }   };   static ctl_table ath_ath_table[] = { diff --git a/package/madwifi/patches/462-fix_ap_scan.patch b/package/madwifi/patches/462-fix_ap_scan.patch index 8a14f5b66..8798f534e 100644 --- a/package/madwifi/patches/462-fix_ap_scan.patch +++ b/package/madwifi/patches/462-fix_ap_scan.patch @@ -1,6 +1,6 @@  --- a/net80211/ieee80211_scan_ap.c  +++ b/net80211/ieee80211_scan_ap.c -@@ -595,6 +595,14 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -595,6 +595,14 @@ ap_end(struct ieee80211_scan_state *ss,   	ic = vap->iv_ic; @@ -15,7 +15,7 @@   	/* record stats for the channel that was scanned last */   	ic->ic_set_channel(ic);   	spin_lock_irqsave(&channel_lock, sflags); -@@ -648,6 +656,8 @@ ap_end(struct ieee80211_scan_state *ss,  +@@ -648,6 +656,8 @@ ap_end(struct ieee80211_scan_state *ss,   		IEEE80211_SCHEDULE_TQUEUE(&as->as_actiontq);   		res = 1;   	} diff --git a/package/madwifi/patches/470-mac_addresss_from_ath5k_platform_data.patch b/package/madwifi/patches/470-mac_addresss_from_ath5k_platform_data.patch index c963403eb..2bcd09d86 100644 --- a/package/madwifi/patches/470-mac_addresss_from_ath5k_platform_data.patch +++ b/package/madwifi/patches/470-mac_addresss_from_ath5k_platform_data.patch @@ -1,5 +1,5 @@ ---- a/ath/if_ath.c	2010-07-13 22:58:23.000000000 +0200 -+++ b/ath/if_ath.c	2010-07-13 23:03:20.000000000 +0200 +--- a/ath/if_ath.c ++++ b/ath/if_ath.c  @@ -63,6 +63,8 @@   #include <linux/rtnetlink.h>   #include <linux/time.h> @@ -9,7 +9,7 @@   #include <asm/uaccess.h>   #include "if_ethersubr.h"		/* for ETHER_IS_MULTICAST */ -@@ -587,6 +589,10 @@ +@@ -587,6 +589,10 @@ ath_attach(u_int16_t devid, struct net_d   	unsigned int i;   	int autocreatemode = -1;   	u_int8_t csz; @@ -20,7 +20,7 @@   	sc->devid = devid;   #ifdef AR_DEBUG -@@ -648,6 +654,13 @@ +@@ -648,6 +654,13 @@ ath_attach(u_int16_t devid, struct net_d   	}   	sc->sc_ah = ah; diff --git a/package/madwifi/patches/473-mutex_fix.patch b/package/madwifi/patches/473-mutex_fix.patch index 1b18e89a5..22cea46a2 100644 --- a/package/madwifi/patches/473-mutex_fix.patch +++ b/package/madwifi/patches/473-mutex_fix.patch @@ -1,9 +1,11 @@ ---- a/ath/if_athvar.h
 -+++ b/ath/if_athvar.h
 -@@ -991,5 +991,5 @@
 - #endif
 - /* Protects the device from concurrent accesses */
 --#define	ATH_LOCK_INIT(_sc)		init_MUTEX(&(_sc)->sc_lock)
 -+#define	ATH_LOCK_INIT(_sc)		sema_init(&(_sc)->sc_lock, 1)
 - #define	ATH_LOCK_DESTROY(_sc)
 - #define	ATH_LOCK(_sc)			down(&(_sc)->sc_lock)
 +--- a/ath/if_athvar.h ++++ b/ath/if_athvar.h +@@ -974,7 +974,7 @@ typedef void (*ath_callback) (struct ath + #endif +  + /* Protects the device from concurrent accesses */ +-#define	ATH_LOCK_INIT(_sc)		init_MUTEX(&(_sc)->sc_lock) ++#define	ATH_LOCK_INIT(_sc)		sema_init(&(_sc)->sc_lock, 1) + #define	ATH_LOCK_DESTROY(_sc) + #define	ATH_LOCK(_sc)			down(&(_sc)->sc_lock) + #define	ATH_UNLOCK(_sc)			up(&(_sc)->sc_lock)  | 
