From 9110e38c858347ecb0a5ba2535b501e1a1d7cd64 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Wed, 23 Apr 2008 03:50:01 +0000
Subject: [PATCH] move timeout trigger for protection mode to node timeout
 trigger

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10925 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../madwifi/patches/346-protmode_trig.patch   | 58 +++++++++++--------
 1 file changed, 33 insertions(+), 25 deletions(-)

diff --git a/package/madwifi/patches/346-protmode_trig.patch b/package/madwifi/patches/346-protmode_trig.patch
index cf28aaab4..136f6e5e8 100644
--- a/package/madwifi/patches/346-protmode_trig.patch
+++ b/package/madwifi/patches/346-protmode_trig.patch
@@ -1,7 +1,7 @@
 Index: madwifi-trunk-r3314/net80211/ieee80211.c
 ===================================================================
---- madwifi-trunk-r3314.orig/net80211/ieee80211.c	2008-04-21 05:22:20.000000000 +0200
-+++ madwifi-trunk-r3314/net80211/ieee80211.c	2008-04-21 05:23:46.000000000 +0200
+--- madwifi-trunk-r3314.orig/net80211/ieee80211.c	2008-04-23 04:33:06.000000000 +0200
++++ madwifi-trunk-r3314/net80211/ieee80211.c	2008-04-23 04:33:17.000000000 +0200
 @@ -333,7 +333,9 @@
  			IEEE80211_MS_TO_TU(IEEE80211_BMISSTHRESH_DEFAULT_MS), 
  			ic->ic_lintval), ic->ic_lintval);
@@ -15,9 +15,9 @@ Index: madwifi-trunk-r3314/net80211/ieee80211.c
  	TAILQ_INIT(&ic->ic_vaps);
 Index: madwifi-trunk-r3314/net80211/ieee80211_input.c
 ===================================================================
---- madwifi-trunk-r3314.orig/net80211/ieee80211_input.c	2008-04-21 05:22:32.000000000 +0200
-+++ madwifi-trunk-r3314/net80211/ieee80211_input.c	2008-04-21 05:23:46.000000000 +0200
-@@ -3412,16 +3412,32 @@
+--- madwifi-trunk-r3314.orig/net80211/ieee80211_input.c	2008-04-23 04:33:17.000000000 +0200
++++ madwifi-trunk-r3314/net80211/ieee80211_input.c	2008-04-23 05:28:00.000000000 +0200
+@@ -3412,14 +3412,18 @@
  			IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) {
  
  			/* Assume no ERP IE == 11b AP */
@@ -40,25 +40,11 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_input.c
 +				ic->ic_protmode_lasttrig = jiffies;
  			}
  		}
-+		if ((ic->ic_flags & IEEE80211_F_USEPROT) &&
-+			(ic->ic_protmode_lasttrig + ic->ic_protmode_timeout * HZ <
-+				jiffies)) {
-+			struct ieee80211vap *tmpvap;
-+
-+			/* expire protection mode */
-+			ic->ic_flags &= ~IEEE80211_F_USEPROT;
-+			TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
-+				tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
-+			}
-+		}
-+
  
- 		/*
- 		 * If scanning, just pass information to the scan module.
 Index: madwifi-trunk-r3314/net80211/ieee80211_ioctl.h
 ===================================================================
---- madwifi-trunk-r3314.orig/net80211/ieee80211_ioctl.h	2008-04-21 05:22:20.000000000 +0200
-+++ madwifi-trunk-r3314/net80211/ieee80211_ioctl.h	2008-04-21 05:23:46.000000000 +0200
+--- madwifi-trunk-r3314.orig/net80211/ieee80211_ioctl.h	2008-04-23 04:33:17.000000000 +0200
++++ madwifi-trunk-r3314/net80211/ieee80211_ioctl.h	2008-04-23 04:33:17.000000000 +0200
 @@ -643,6 +643,8 @@
  	IEEE80211_PARAM_BEACON_MISS_THRESH_MS	= 74,	/* Beacon miss threshold (in ms) */
  	IEEE80211_PARAM_MAXRATE			= 75,	/* Maximum rate (by table index) */
@@ -70,8 +56,8 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_ioctl.h
  #define	SIOCG80211STATS			(SIOCDEVPRIVATE+2)
 Index: madwifi-trunk-r3314/net80211/ieee80211_var.h
 ===================================================================
---- madwifi-trunk-r3314.orig/net80211/ieee80211_var.h	2008-04-21 05:22:20.000000000 +0200
-+++ madwifi-trunk-r3314/net80211/ieee80211_var.h	2008-04-21 05:41:45.000000000 +0200
+--- madwifi-trunk-r3314.orig/net80211/ieee80211_var.h	2008-04-23 04:33:17.000000000 +0200
++++ madwifi-trunk-r3314/net80211/ieee80211_var.h	2008-04-23 04:33:17.000000000 +0200
 @@ -128,6 +128,9 @@
  
  #define	IEEE80211_APPIE_MAX	1024
@@ -94,8 +80,8 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_var.h
  	 *
 Index: madwifi-trunk-r3314/net80211/ieee80211_wireless.c
 ===================================================================
---- madwifi-trunk-r3314.orig/net80211/ieee80211_wireless.c	2008-04-21 05:22:20.000000000 +0200
-+++ madwifi-trunk-r3314/net80211/ieee80211_wireless.c	2008-04-21 05:23:46.000000000 +0200
+--- madwifi-trunk-r3314.orig/net80211/ieee80211_wireless.c	2008-04-23 04:33:17.000000000 +0200
++++ madwifi-trunk-r3314/net80211/ieee80211_wireless.c	2008-04-23 04:33:17.000000000 +0200
 @@ -2312,6 +2312,12 @@
  		    IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan))
  			retv = ENETRESET;
@@ -137,3 +123,25 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_wireless.c
  	{ IEEE80211_PARAM_MCASTCIPHER,
  	  IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "mcastcipher" },
  	{ IEEE80211_PARAM_MCASTCIPHER,
+Index: madwifi-trunk-r3314/net80211/ieee80211_node.c
+===================================================================
+--- madwifi-trunk-r3314.orig/net80211/ieee80211_node.c	2008-04-23 04:33:16.000000000 +0200
++++ madwifi-trunk-r3314/net80211/ieee80211_node.c	2008-04-23 05:28:47.000000000 +0200
+@@ -1877,6 +1877,17 @@
+ 
+ 	ieee80211_scan_timeout(ic);
+ 	ieee80211_timeout_stations(&ic->ic_sta);
++	if ((ic->ic_flags & IEEE80211_F_USEPROT) &&
++		(ic->ic_protmode_lasttrig + ic->ic_protmode_timeout * HZ <
++			jiffies)) {
++		struct ieee80211vap *tmpvap;
++
++		/* expire protection mode */
++		ic->ic_flags &= ~IEEE80211_F_USEPROT;
++		TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
++			tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
++		}
++	}
+ 
+ 	ic->ic_inact.expires = jiffies + IEEE80211_INACT_WAIT * HZ;
+ 	add_timer(&ic->ic_inact);
-- 
2.20.1