source: trunk/package/madwifi/patches/346-protmode_trig.patch @ 11316

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

madwifi: refresh patches

File size: 5.8 KB
  • net80211/ieee80211.c

    old new  
    333333                        IEEE80211_MS_TO_TU(IEEE80211_BMISSTHRESH_DEFAULT_MS),  
    334334                        ic->ic_lintval), ic->ic_lintval); 
    335335        } 
    336                  
     336        ic->ic_protmode_timeout = IEEE80211_PROTMODE_TIMEOUT; 
     337        ic->ic_protmode_rssi = IEEE80211_PROTMODE_RSSITHR; 
     338 
    337339        IEEE80211_LOCK_INIT(ic, "ieee80211com"); 
    338340        IEEE80211_VAPS_LOCK_INIT(ic, "ieee80211com_vaps"); 
    339341        TAILQ_INIT(&ic->ic_vaps); 
  • net80211/ieee80211_input.c

    old new  
    34113411                        IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) { 
    34123412 
    34133413                        /* Assume no ERP IE == 11b AP */ 
    3414                         if ((!has_erp || (has_erp && (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) && 
    3415                                 !(ic->ic_flags & IEEE80211_F_USEPROT)) { 
     3414                        if ((!has_erp || (has_erp && 
     3415                                (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) && 
     3416                                (rssi > ic->ic_protmode_rssi)) { 
    34163417                                struct ieee80211vap *tmpvap; 
    34173418 
    3418                                 ic->ic_flags |= IEEE80211_F_USEPROT; 
    3419                                 TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) { 
    3420                                         tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE; 
     3419                                if (!(ic->ic_flags & IEEE80211_F_USEPROT)) { 
     3420                                        ic->ic_flags |= IEEE80211_F_USEPROT; 
     3421                                        TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) { 
     3422                                                tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE; 
     3423                                        } 
    34213424                                } 
     3425                                ic->ic_protmode_lasttrig = jiffies; 
    34223426                        } 
    34233427                } 
    34243428 
  • net80211/ieee80211_ioctl.h

    old new  
    643643        IEEE80211_PARAM_BEACON_MISS_THRESH_MS   = 74,   /* Beacon miss threshold (in ms) */ 
    644644        IEEE80211_PARAM_MAXRATE                 = 75,   /* Maximum rate (by table index) */ 
    645645        IEEE80211_PARAM_MINRATE                 = 76,   /* Maximum rate (by table index) */ 
     646        IEEE80211_PARAM_PROTMODE_RSSI           = 77,   /* RSSI Threshold for enabling protection mode */ 
     647        IEEE80211_PARAM_PROTMODE_TIMEOUT        = 78,   /* Timeout for expiring protection mode */ 
    646648}; 
    647649 
    648650#define SIOCG80211STATS                 (SIOCDEVPRIVATE+2) 
  • net80211/ieee80211_var.h

    old new  
    128128 
    129129#define IEEE80211_APPIE_MAX     1024 
    130130 
     131#define IEEE80211_PROTMODE_RSSITHR      15      /* default rssi threshold for protection mode trigger */ 
     132#define IEEE80211_PROTMODE_TIMEOUT      30      /* timeout for keeping protection mode alive */ 
     133 
    131134#define IEEE80211_PWRCONSTRAINT_VAL(ic) \ 
    132135        (((ic)->ic_bsschan->ic_maxregpower > (ic)->ic_curchanmaxpwr) ? \ 
    133136            (ic)->ic_bsschan->ic_maxregpower - (ic)->ic_curchanmaxpwr : 0) 
     
    324327        u_int16_t ic_newtxpowlimit;             /* tx power limit to change to (in 0.5 dBm) */ 
    325328        u_int16_t ic_uapsdmaxtriggers;          /* max triggers that could arrive */ 
    326329        u_int8_t ic_coverageclass;              /* coverage class */ 
     330        u_int8_t ic_protmode_rssi;                      /* rssi threshold for protection mode */ 
     331        u_int64_t ic_protmode_lasttrig;         /* last trigger for protection mode */ 
     332        u_int16_t ic_protmode_timeout;          /* protection mode timeout */ 
    327333 
    328334        /* Channel state: 
    329335         * 
  • net80211/ieee80211_wireless.c

    old new  
    23122312                    IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan)) 
    23132313                        retv = ENETRESET; 
    23142314                break; 
     2315        case IEEE80211_PARAM_PROTMODE_TIMEOUT: 
     2316                ic->ic_protmode_timeout = value; 
     2317                break; 
     2318        case IEEE80211_PARAM_PROTMODE_RSSI: 
     2319                ic->ic_protmode_rssi = value; 
     2320                break; 
    23152321        case IEEE80211_PARAM_MCASTCIPHER: 
    23162322                if ((vap->iv_caps & cipher2cap(value)) == 0 && 
    23172323                    !ieee80211_crypto_available(vap, value)) 
     
    29552961        case IEEE80211_PARAM_PROTMODE: 
    29562962                param[0] = ic->ic_protmode; 
    29572963                break; 
     2964        case IEEE80211_PARAM_PROTMODE_TIMEOUT: 
     2965                param[0] = ic->ic_protmode_timeout; 
     2966                break; 
     2967        case IEEE80211_PARAM_PROTMODE_RSSI: 
     2968                param[0] = ic->ic_protmode_rssi; 
     2969                break; 
    29582970        case IEEE80211_PARAM_MCASTCIPHER: 
    29592971                param[0] = rsn->rsn_mcastcipher; 
    29602972                break; 
     
    53465358          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "protmode" }, 
    53475359        { IEEE80211_PARAM_PROTMODE, 
    53485360          0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_protmode" }, 
     5361        { IEEE80211_PARAM_PROTMODE_RSSI, 
     5362          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "protrssi" }, 
     5363        { IEEE80211_PARAM_PROTMODE_RSSI, 
     5364          0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_protrssi" }, 
     5365        { IEEE80211_PARAM_PROTMODE_TIMEOUT, 
     5366          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "prottime" }, 
     5367        { IEEE80211_PARAM_PROTMODE_TIMEOUT, 
     5368          0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_prottime" }, 
    53495369        { IEEE80211_PARAM_MCASTCIPHER, 
    53505370          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "mcastcipher" }, 
    53515371        { IEEE80211_PARAM_MCASTCIPHER, 
  • net80211/ieee80211_node.c

    old new  
    18771877 
    18781878        ieee80211_scan_timeout(ic); 
    18791879        ieee80211_timeout_stations(&ic->ic_sta); 
     1880        if ((ic->ic_flags & IEEE80211_F_USEPROT) && 
     1881                (ic->ic_protmode_lasttrig + ic->ic_protmode_timeout * HZ < 
     1882                        jiffies)) { 
     1883                struct ieee80211vap *tmpvap; 
     1884 
     1885                /* expire protection mode */ 
     1886                ic->ic_flags &= ~IEEE80211_F_USEPROT; 
     1887                TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) { 
     1888                        tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE; 
     1889                } 
     1890        } 
    18801891 
    18811892        ic->ic_inact.expires = jiffies + IEEE80211_INACT_WAIT * HZ; 
    18821893        add_timer(&ic->ic_inact); 
Note: See TracBrowser for help on using the repository browser.