source: trunk/package/madwifi/patches/362-rssithr.patch @ 11932

Last change on this file since 11932 was 11932, checked in by nbd, 8 years ago

refresh madwifi patches

File size: 3.6 KB
  • net80211/ieee80211_ioctl.h

    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 b  
    647647        IEEE80211_PARAM_PROTMODE_RSSI           = 77,   /* RSSI Threshold for enabling protection mode */ 
    648648        IEEE80211_PARAM_PROTMODE_TIMEOUT        = 78,   /* Timeout for expiring protection mode */ 
    649649        IEEE80211_PARAM_BGSCAN_THRESH           = 79,   /* bg scan rssi threshold */ 
     650        IEEE80211_PARAM_RSSI_DIS_THR    = 80,   /* rssi threshold for disconnection */ 
     651        IEEE80211_PARAM_RSSI_DIS_COUNT  = 81,   /* counter for rssi threshold */ 
    650652}; 
    651653 
    652654#define SIOCG80211STATS                 (SIOCDEVPRIVATE+2) 
  • net80211/ieee80211_wireless.c

    a b  
    27992799        case IEEE80211_PARAM_ROAM_RATE_11G: 
    28002800                vap->iv_roam.rate11b = value; 
    28012801                break; 
     2802        case IEEE80211_PARAM_RSSI_DIS_THR: 
     2803                vap->iv_rssi_dis_thr = value; 
     2804                break; 
     2805        case IEEE80211_PARAM_RSSI_DIS_COUNT: 
     2806                vap->iv_rssi_dis_max = value; 
     2807                break; 
    28022808        case IEEE80211_PARAM_UAPSDINFO: 
    28032809                if (vap->iv_opmode == IEEE80211_M_HOSTAP) { 
    28042810                        if (ic->ic_caps & IEEE80211_C_UAPSD) { 
     
    31843190        case IEEE80211_PARAM_ROAM_RATE_11G: 
    31853191                param[0] = vap->iv_roam.rate11b; 
    31863192                break; 
     3193        case IEEE80211_PARAM_RSSI_DIS_THR: 
     3194                param[0] = vap->iv_rssi_dis_thr; 
     3195                break; 
     3196        case IEEE80211_PARAM_RSSI_DIS_COUNT: 
     3197                param[0] = vap->iv_rssi_dis_max; 
     3198                break; 
    31873199        case IEEE80211_PARAM_UAPSDINFO: 
    31883200                if (vap->iv_opmode == IEEE80211_M_HOSTAP) { 
    31893201                        if (IEEE80211_VAP_UAPSD_ENABLED(vap)) 
     
    57335745          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "rate11g" }, 
    57345746        { IEEE80211_PARAM_ROAM_RATE_11G, 
    57355747          0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_rate11g" }, 
     5748        { IEEE80211_PARAM_RSSI_DIS_THR, 
     5749          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "rssi_disthr" }, 
     5750        { IEEE80211_PARAM_RSSI_DIS_THR, 
     5751          0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_rssi_disthr" }, 
     5752        { IEEE80211_PARAM_RSSI_DIS_COUNT, 
     5753          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "rssi_discnt" }, 
     5754        { IEEE80211_PARAM_RSSI_DIS_COUNT, 
     5755          0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_rssi_discnt" }, 
    57365756        { IEEE80211_PARAM_UAPSDINFO, 
    57375757          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "uapsd" }, 
    57385758        { IEEE80211_PARAM_UAPSDINFO, 
  • net80211/ieee80211_input.c

    a b  
    32613261                        memcpy(ni->ni_tstamp.data, scan.tstamp, 
    32623262                                sizeof(ni->ni_tstamp)); 
    32633263 
     3264                        /* when rssi falls below the disconnection threshold, drop the connection */ 
     3265                        if ((vap->iv_rssi_dis_thr > 0) && (vap->iv_rssi_dis_max > 0)) { 
     3266                                if ((rssi > 0) && (rssi < vap->iv_rssi_dis_thr)) { 
     3267                                        if (++vap->iv_rssi_dis_trig > vap->iv_rssi_dis_max) { 
     3268                                                vap->iv_rssi_dis_trig = 0; 
     3269                                                ieee80211_node_leave(ni); 
     3270                                                return; 
     3271                                        } 
     3272                                } else { 
     3273                                        vap->iv_rssi_dis_trig = 0; 
     3274                                } 
     3275                        } 
     3276 
    32643277                        /* When rssi is low, start doing bgscans more frequently to allow 
    32653278                         * the supplicant to make a better switching decision */ 
    32663279                        if (!(ic->ic_flags & IEEE80211_F_SCAN) && (rssi < vap->iv_bgscanthr) && 
  • net80211/ieee80211_var.h

    a b  
    223223        u_int iv_bgscanintvl;                           /* bg scan min interval */ 
    224224        u_int iv_bgscanthr;                                     /* bg scan rssi threshold */ 
    225225        u_int iv_bgscantrintvl;                         /* bg scan trigger interval */ 
     226        u_int iv_rssi_dis_thr;                          /* rssi disassoc threshold */ 
     227        u_int iv_rssi_dis_max;                          /* max beacons below disconnect threshold */ 
     228        u_int iv_rssi_dis_trig;                         /* rssi disassoc trigger count */ 
    226229        unsigned long iv_bgscanthr_next;                /* last trigger for bgscan */ 
    227230        unsigned long iv_lastconnect;   /* time of last connect attempt */ 
    228231        u_int iv_scanvalid;                             /* scan cache valid threshold */ 
Note: See TracBrowser for help on using the repository browser.