X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/922c0b910df7440c41cb51d5df1856a3110a0498..31a40f97ef54e10e2b3dc3cacb9cff436657c586:/package/madwifi/patches/346-protmode_trig.patch diff --git a/package/madwifi/patches/346-protmode_trig.patch b/package/madwifi/patches/346-protmode_trig.patch index cf28aaab4..5b5cec6e9 100644 --- a/package/madwifi/patches/346-protmode_trig.patch +++ b/package/madwifi/patches/346-protmode_trig.patch @@ -1,8 +1,6 @@ -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 -@@ -333,7 +333,9 @@ +--- a/net80211/ieee80211.c ++++ b/net80211/ieee80211.c +@@ -333,7 +333,9 @@ ieee80211_ifattach(struct ieee80211com * IEEE80211_MS_TO_TU(IEEE80211_BMISSTHRESH_DEFAULT_MS), ic->ic_lintval), ic->ic_lintval); } @@ -13,11 +11,9 @@ Index: madwifi-trunk-r3314/net80211/ieee80211.c IEEE80211_LOCK_INIT(ic, "ieee80211com"); IEEE80211_VAPS_LOCK_INIT(ic, "ieee80211com_vaps"); 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 @@ +--- a/net80211/ieee80211_input.c ++++ b/net80211/ieee80211_input.c +@@ -3411,14 +3411,18 @@ ieee80211_recv_mgmt(struct ieee80211vap IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) { /* Assume no ERP IE == 11b AP */ @@ -40,38 +36,20 @@ 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 -@@ -643,6 +643,8 @@ +--- a/net80211/ieee80211_ioctl.h ++++ b/net80211/ieee80211_ioctl.h +@@ -643,6 +643,8 @@ enum { IEEE80211_PARAM_BEACON_MISS_THRESH_MS = 74, /* Beacon miss threshold (in ms) */ IEEE80211_PARAM_MAXRATE = 75, /* Maximum rate (by table index) */ - IEEE80211_PARAM_MINRATE = 76, /* Maximum rate (by table index) */ + IEEE80211_PARAM_MINRATE = 76, /* Minimum rate (by table index) */ + IEEE80211_PARAM_PROTMODE_RSSI = 77, /* RSSI Threshold for enabling protection mode */ + IEEE80211_PARAM_PROTMODE_TIMEOUT = 78, /* Timeout for expiring protection mode */ }; #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 +--- a/net80211/ieee80211_var.h ++++ b/net80211/ieee80211_var.h @@ -128,6 +128,9 @@ #define IEEE80211_APPIE_MAX 1024 @@ -82,7 +60,7 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_var.h #define IEEE80211_PWRCONSTRAINT_VAL(ic) \ (((ic)->ic_bsschan->ic_maxregpower > (ic)->ic_curchanmaxpwr) ? \ (ic)->ic_bsschan->ic_maxregpower - (ic)->ic_curchanmaxpwr : 0) -@@ -324,6 +327,9 @@ +@@ -324,6 +327,9 @@ struct ieee80211com { u_int16_t ic_newtxpowlimit; /* tx power limit to change to (in 0.5 dBm) */ u_int16_t ic_uapsdmaxtriggers; /* max triggers that could arrive */ u_int8_t ic_coverageclass; /* coverage class */ @@ -92,11 +70,9 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_var.h /* Channel state: * -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 -@@ -2312,6 +2312,12 @@ +--- a/net80211/ieee80211_wireless.c ++++ b/net80211/ieee80211_wireless.c +@@ -2312,6 +2312,12 @@ ieee80211_ioctl_setparam(struct net_devi IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan)) retv = ENETRESET; break; @@ -109,7 +85,7 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_wireless.c case IEEE80211_PARAM_MCASTCIPHER: if ((vap->iv_caps & cipher2cap(value)) == 0 && !ieee80211_crypto_available(vap, value)) -@@ -2955,6 +2961,12 @@ +@@ -2955,6 +2961,12 @@ ieee80211_ioctl_getparam(struct net_devi case IEEE80211_PARAM_PROTMODE: param[0] = ic->ic_protmode; break; @@ -122,7 +98,7 @@ Index: madwifi-trunk-r3314/net80211/ieee80211_wireless.c case IEEE80211_PARAM_MCASTCIPHER: param[0] = rsn->rsn_mcastcipher; break; -@@ -5346,6 +5358,14 @@ +@@ -5346,6 +5358,14 @@ static const struct iw_priv_args ieee802 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "protmode" }, { IEEE80211_PARAM_PROTMODE, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_protmode" }, @@ -137,3 +113,23 @@ 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, +--- a/net80211/ieee80211_node.c ++++ b/net80211/ieee80211_node.c +@@ -1877,6 +1877,17 @@ ieee80211_node_timeout(unsigned long arg + + 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);