X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/75760cfbe94c67352d65f18fc2b307e5035b1f88..5334f6ff6f606565543f8f834f3249a4f0c19e73:/package/madwifi/patches/362-rssithr.patch diff --git a/package/madwifi/patches/362-rssithr.patch b/package/madwifi/patches/362-rssithr.patch index 137e64ad5..5a86833bb 100644 --- a/package/madwifi/patches/362-rssithr.patch +++ b/package/madwifi/patches/362-rssithr.patch @@ -5,7 +5,7 @@ Signed-off-by: Felix Fietkau --- a/net80211/ieee80211_ioctl.h +++ b/net80211/ieee80211_ioctl.h -@@ -647,6 +647,8 @@ +@@ -647,6 +647,8 @@ enum { IEEE80211_PARAM_PROTMODE_RSSI = 77, /* RSSI Threshold for enabling protection mode */ IEEE80211_PARAM_PROTMODE_TIMEOUT = 78, /* Timeout for expiring protection mode */ IEEE80211_PARAM_BGSCAN_THRESH = 79, /* bg scan rssi threshold */ @@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau #define SIOCG80211STATS (SIOCDEVPRIVATE+2) --- a/net80211/ieee80211_wireless.c +++ b/net80211/ieee80211_wireless.c -@@ -2798,6 +2798,12 @@ +@@ -2799,6 +2799,12 @@ ieee80211_ioctl_setparam(struct net_devi case IEEE80211_PARAM_ROAM_RATE_11G: vap->iv_roam.rate11b = value; break; @@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau case IEEE80211_PARAM_UAPSDINFO: if (vap->iv_opmode == IEEE80211_M_HOSTAP) { if (ic->ic_caps & IEEE80211_C_UAPSD) { -@@ -3183,6 +3189,12 @@ +@@ -3184,6 +3190,12 @@ ieee80211_ioctl_getparam(struct net_devi case IEEE80211_PARAM_ROAM_RATE_11G: param[0] = vap->iv_roam.rate11b; break; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau case IEEE80211_PARAM_UAPSDINFO: if (vap->iv_opmode == IEEE80211_M_HOSTAP) { if (IEEE80211_VAP_UAPSD_ENABLED(vap)) -@@ -5732,6 +5744,14 @@ +@@ -5733,6 +5745,14 @@ static const struct iw_priv_args ieee802 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "rate11g" }, { IEEE80211_PARAM_ROAM_RATE_11G, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_rate11g" }, @@ -59,10 +59,11 @@ Signed-off-by: Felix Fietkau { IEEE80211_PARAM_UAPSDINFO, --- a/net80211/ieee80211_input.c +++ b/net80211/ieee80211_input.c -@@ -3263,6 +3263,17 @@ +@@ -3261,6 +3261,19 @@ ieee80211_recv_mgmt(struct ieee80211vap + memcpy(ni->ni_tstamp.data, scan.tstamp, + sizeof(ni->ni_tstamp)); - /* When rssi is low, start doing bgscans more frequently to allow - * the supplicant to make a better switching decision */ ++ /* when rssi falls below the disconnection threshold, drop the connection */ + if ((vap->iv_rssi_dis_thr > 0) && (vap->iv_rssi_dis_max > 0)) { + if ((rssi > 0) && (rssi < vap->iv_rssi_dis_thr)) { + if (++vap->iv_rssi_dis_trig > vap->iv_rssi_dis_max) { @@ -74,12 +75,13 @@ Signed-off-by: Felix Fietkau + vap->iv_rssi_dis_trig = 0; + } + } - if ((rssi < vap->iv_bgscanthr) && - (!vap->iv_bgscanthr_next || - !time_before(jiffies, vap->iv_bgscanthr_next)) && ++ + /* When rssi is low, start doing bgscans more frequently to allow + * the supplicant to make a better switching decision */ + if (!(ic->ic_flags & IEEE80211_F_SCAN) && (rssi < vap->iv_bgscanthr) && --- a/net80211/ieee80211_var.h +++ b/net80211/ieee80211_var.h -@@ -223,6 +223,9 @@ +@@ -223,6 +223,9 @@ struct ieee80211vap { u_int iv_bgscanintvl; /* bg scan min interval */ u_int iv_bgscanthr; /* bg scan rssi threshold */ u_int iv_bgscantrintvl; /* bg scan trigger interval */ @@ -87,5 +89,5 @@ Signed-off-by: Felix Fietkau + u_int iv_rssi_dis_max; /* max beacons below disconnect threshold */ + u_int iv_rssi_dis_trig; /* rssi disassoc trigger count */ unsigned long iv_bgscanthr_next; /* last trigger for bgscan */ + unsigned long iv_lastconnect; /* time of last connect attempt */ u_int iv_scanvalid; /* scan cache valid threshold */ - struct ieee80211_roam iv_roam; /* sta-mode roaming state */