diff options
Diffstat (limited to 'package/madwifi/patches/362-rssithr.patch')
-rw-r--r-- | package/madwifi/patches/362-rssithr.patch | 93 |
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 */ |