diff options
Diffstat (limited to 'package')
| -rw-r--r-- | package/madwifi/patches/312-erpupdate.patch | 73 | ||||
| -rw-r--r-- | package/madwifi/patches/313-long_preamble.patch | 13 | ||||
| -rw-r--r-- | package/madwifi/patches/314-ap_bridge_multicast.patch | 15 | 
3 files changed, 101 insertions, 0 deletions
| diff --git a/package/madwifi/patches/312-erpupdate.patch b/package/madwifi/patches/312-erpupdate.patch new file mode 100644 index 000000000..8b8b3c7c2 --- /dev/null +++ b/package/madwifi/patches/312-erpupdate.patch @@ -0,0 +1,73 @@ +Index: madwifi-dfs-r3053/net80211/ieee80211_beacon.c +=================================================================== +--- madwifi-dfs-r3053.orig/net80211/ieee80211_beacon.c	2008-01-10 10:51:31.406580318 +0100 ++++ madwifi-dfs-r3053/net80211/ieee80211_beacon.c	2008-01-10 10:56:54.040966203 +0100 +@@ -538,9 +538,9 @@ + 			vap->iv_flags &= ~IEEE80211_F_XRUPDATE; + 		} + #endif +-		if ((ic->ic_flags_ext & IEEE80211_FEXT_ERPUPDATE) && (bo->bo_erp != NULL)) { ++		if ((vap->iv_flags_ext & IEEE80211_FEXT_ERPUPDATE) && (bo->bo_erp != NULL)) { + 			(void) ieee80211_add_erp(bo->bo_erp, ic); +-			ic->ic_flags_ext &= ~IEEE80211_FEXT_ERPUPDATE; ++			vap->iv_flags_ext &= ~IEEE80211_FEXT_ERPUPDATE; + 		} + 	} + 	/* if it is a mode change beacon for dynamic turbo case */ +Index: madwifi-dfs-r3053/net80211/ieee80211_input.c +=================================================================== +--- madwifi-dfs-r3053.orig/net80211/ieee80211_input.c	2008-01-10 10:51:31.558588981 +0100 ++++ madwifi-dfs-r3053/net80211/ieee80211_input.c	2008-01-10 10:55:51.565405916 +0100 +@@ -3315,9 +3315,12 @@ + 			/* Assume no ERP IE == 11b AP */ + 			if ((!has_erp || (has_erp && (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) && + 				!(ic->ic_flags & IEEE80211_F_USEPROT)) { ++				struct ieee80211vap *tmpvap; +  + 				ic->ic_flags |= IEEE80211_F_USEPROT; +-				ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE; ++				TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) { ++					tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE; ++				} + 			} + 		} +  +Index: madwifi-dfs-r3053/net80211/ieee80211_node.c +=================================================================== +--- madwifi-dfs-r3053.orig/net80211/ieee80211_node.c	2008-01-10 10:51:31.622592626 +0100 ++++ madwifi-dfs-r3053/net80211/ieee80211_node.c	2008-01-10 10:54:58.398376106 +0100 +@@ -1998,8 +1998,12 @@ + 		} +  + 		/* Update ERP element if this is first non ERP station */ +-		if (ic->ic_nonerpsta == 1) +-			ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE; ++		if (ic->ic_nonerpsta == 1) { ++			struct ieee80211vap *tmpvap; ++			TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) { ++				tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE; ++			} ++		} + 	} else + 		ni->ni_flags |= IEEE80211_NODE_ERP; + } +@@ -2202,6 +2206,8 @@ + 		IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC, ni, + 			"non-ERP station leaves, count now %d", ic->ic_nonerpsta); + 		if (ic->ic_nonerpsta == 0) { ++			struct ieee80211vap *tmpvap; ++ + 			IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + 				"%s: disable use of protection\n", __func__); + 			ic->ic_flags &= ~IEEE80211_F_USEPROT; +@@ -2213,7 +2219,9 @@ + 				ic->ic_flags |= IEEE80211_F_SHPREAMBLE; + 				ic->ic_flags &= ~IEEE80211_F_USEBARKER; + 			} +-			ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE; ++			TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) { ++				tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE; ++			} + 		} + 	} + } diff --git a/package/madwifi/patches/313-long_preamble.patch b/package/madwifi/patches/313-long_preamble.patch new file mode 100644 index 000000000..1f3515036 --- /dev/null +++ b/package/madwifi/patches/313-long_preamble.patch @@ -0,0 +1,13 @@ +Index: madwifi-dfs-r3053/net80211/ieee80211_output.c +=================================================================== +--- madwifi-dfs-r3053.orig/net80211/ieee80211_output.c	2008-01-10 15:40:39.777239675 +0100 ++++ madwifi-dfs-r3053/net80211/ieee80211_output.c	2008-01-10 15:41:05.214689275 +0100 +@@ -1297,7 +1297,7 @@ + 		erp |= IEEE80211_ERP_NON_ERP_PRESENT; + 	if (ic->ic_flags & IEEE80211_F_USEPROT) + 		erp |= IEEE80211_ERP_USE_PROTECTION; +-	if (ic->ic_flags & IEEE80211_F_USEBARKER) ++	if ((ic->ic_flags & IEEE80211_F_USEBARKER) || (ic->ic_nonerpsta > 0)) + 		erp |= IEEE80211_ERP_LONG_PREAMBLE; + 	*frm++ = erp; + 	return frm; diff --git a/package/madwifi/patches/314-ap_bridge_multicast.patch b/package/madwifi/patches/314-ap_bridge_multicast.patch new file mode 100644 index 000000000..a57901bca --- /dev/null +++ b/package/madwifi/patches/314-ap_bridge_multicast.patch @@ -0,0 +1,15 @@ +Index: madwifi-dfs-r3252/net80211/ieee80211_input.c +=================================================================== +--- madwifi-dfs-r3252.orig/net80211/ieee80211_input.c	2008-01-26 00:03:20.203760157 +0100 ++++ madwifi-dfs-r3252/net80211/ieee80211_input.c	2008-01-26 00:08:08.773799701 +0100 +@@ -1133,8 +1133,8 @@ +  + 		if (ETHER_IS_MULTICAST(eh->ether_dhost)) { + 			skb1 = skb_copy(skb, GFP_ATOMIC); +-			/* We duplicate the reference after skb_copy */ +-			ieee80211_skb_copy_noderef(skb, skb1); ++			/* Use the BSS node for retransmitting this multicast frame */ ++			SKB_CB(skb1)->ni = ieee80211_ref_node(vap->iv_bss); + 		} + 		else { + 			/* | 
