move a few unmaintained packages from trunk to /packages
[openwrt/staging/dedeckeh.git] / package / madwifi / patches / 362-rssithr.patch
diff --git a/package/madwifi/patches/362-rssithr.patch b/package/madwifi/patches/362-rssithr.patch
deleted file mode 100644 (file)
index 5a86833..0000000
+++ /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 */