aboutsummaryrefslogtreecommitdiffstats
path: root/package/madwifi/patches/362-rssithr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/madwifi/patches/362-rssithr.patch')
-rw-r--r--package/madwifi/patches/362-rssithr.patch93
1 files changed, 0 insertions, 93 deletions
diff --git a/package/madwifi/patches/362-rssithr.patch b/package/madwifi/patches/362-rssithr.patch
deleted file mode 100644
index 5a86833bb5..0000000000
--- a/package/madwifi/patches/362-rssithr.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-Add an optional threshold for low-rssi disconnection. This can be useful
-when letting wpa_supplicant control roaming.
-
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-
---- a/net80211/ieee80211_ioctl.h
-+++ b/net80211/ieee80211_ioctl.h
-@@ -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 */
-+ IEEE80211_PARAM_RSSI_DIS_THR = 80, /* rssi threshold for disconnection */
-+ IEEE80211_PARAM_RSSI_DIS_COUNT = 81, /* counter for rssi threshold */
- };
-
- #define SIOCG80211STATS (SIOCDEVPRIVATE+2)
---- a/net80211/ieee80211_wireless.c
-+++ b/net80211/ieee80211_wireless.c
-@@ -2799,6 +2799,12 @@ ieee80211_ioctl_setparam(struct net_devi
- case IEEE80211_PARAM_ROAM_RATE_11G:
- vap->iv_roam.rate11b = value;
- break;
-+ case IEEE80211_PARAM_RSSI_DIS_THR:
-+ vap->iv_rssi_dis_thr = value;
-+ break;
-+ case IEEE80211_PARAM_RSSI_DIS_COUNT:
-+ vap->iv_rssi_dis_max = value;
-+ break;
- case IEEE80211_PARAM_UAPSDINFO:
- if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
- if (ic->ic_caps & IEEE80211_C_UAPSD) {
-@@ -3184,6 +3190,12 @@ ieee80211_ioctl_getparam(struct net_devi
- case IEEE80211_PARAM_ROAM_RATE_11G:
- param[0] = vap->iv_roam.rate11b;
- break;
-+ case IEEE80211_PARAM_RSSI_DIS_THR:
-+ param[0] = vap->iv_rssi_dis_thr;
-+ break;
-+ case IEEE80211_PARAM_RSSI_DIS_COUNT:
-+ param[0] = vap->iv_rssi_dis_max;
-+ break;
- case IEEE80211_PARAM_UAPSDINFO:
- if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
- if (IEEE80211_VAP_UAPSD_ENABLED(vap))
-@@ -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" },
-+ { IEEE80211_PARAM_RSSI_DIS_THR,
-+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "rssi_disthr" },
-+ { IEEE80211_PARAM_RSSI_DIS_THR,
-+ 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_rssi_disthr" },
-+ { IEEE80211_PARAM_RSSI_DIS_COUNT,
-+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "rssi_discnt" },
-+ { IEEE80211_PARAM_RSSI_DIS_COUNT,
-+ 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_rssi_discnt" },
- { IEEE80211_PARAM_UAPSDINFO,
- IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "uapsd" },
- { IEEE80211_PARAM_UAPSDINFO,
---- a/net80211/ieee80211_input.c
-+++ b/net80211/ieee80211_input.c
-@@ -3261,6 +3261,19 @@ ieee80211_recv_mgmt(struct ieee80211vap
- memcpy(ni->ni_tstamp.data, scan.tstamp,
- sizeof(ni->ni_tstamp));
-
-+ /* 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) {
-+ vap->iv_rssi_dis_trig = 0;
-+ ieee80211_node_leave(ni);
-+ return;
-+ }
-+ } else {
-+ vap->iv_rssi_dis_trig = 0;
-+ }
-+ }
-+
- /* 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 @@ 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 */
-+ u_int iv_rssi_dis_thr; /* rssi disassoc threshold */
-+ 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 */