source: trunk/package/madwifi/patches/345-minstrel_sampling.patch @ 15029

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

madwifi: delay calibration with a timer when called from becaon context

File size: 2.3 KB
  • ath/if_ath.c

    a b ath_tx_start(struct net_device *dev, str 
    81038103                ath_hal_setupxtxdesc(sc->sc_ah, ds, mrr.rate1, mrr.retries1, 
    81048104                                     mrr.rate2, mrr.retries2, 
    81058105                                     mrr.rate3, mrr.retries3); 
     8106                bf->rcflags = mrr.privflags; 
    81068107        } 
    81078108 
    81088109#ifndef ATH_SUPERG_FF 
  • ath/if_athvar.h

    a b struct ath_buf { 
    446446        u_int16_t bf_flags;                             /* tx descriptor flags */ 
    447447        u_int64_t bf_tsf; 
    448448        int16_t bf_channoise; 
     449        unsigned int rcflags; 
    449450#ifdef ATH_SUPERG_FF 
    450451        /* XXX: combine this with bf_skbaddr if it ever changes to accommodate 
    451452         *      multiple segments. 
  • ath_rate/minstrel/minstrel.c

    a b ath_rate_findrate(struct ath_softc *sc,  
    333333                if (sn->static_rate_ndx >= 0) { 
    334334                            ndx = sn->static_rate_ndx; 
    335335                } else { 
     336                        int delta; 
    336337                        sn->packet_count++; 
    337338                        sn->random_n = (sn->a * sn->random_n) + sn->b; 
    338339                        offset = sn->random_n & 0xf; 
    339                         if ((((100 * sn->sample_count) / (sn->sample_count + sn->packet_count)) < ath_lookaround_rate) && (offset < 2)) { 
     340                        delta = (sn->packet_count * ath_lookaround_rate / 100) - sn->sample_count; 
     341                        if ((delta > 0) && (offset < 2)) { 
    340342                                sn->sample_count++; 
    341343                                sn->is_sampling = 1; 
    342344                                if (sn->packet_count >= 10000) { 
    343345                                        sn->sample_count = 0; 
    344346                                        sn->packet_count = 0; 
     347                                } else if (delta > sn->num_rates * 2) { 
     348                                        sn->sample_count += ((delta - sn->num_rates * 2) * ath_lookaround_rate) / 100; 
    345349                                } 
    346350 
    347351                                /* Don't look for slowest rate (i.e. slowest 
    ath_rate_get_mrr(struct ath_softc *sc, s 
    398402                if (sn->num_rates <= 0) 
    399403                        return; 
    400404 
     405                mrr->privflags = sn->is_sampling; 
    401406                if (sn->is_sampling) { 
    402407                        sn->is_sampling = 0; 
    403                         if (sn->rs_sample_rate_slower) 
     408                        if (sn->rs_sample_rate_slower) { 
    404409                                rc1 = sn->rs_sample_rate; 
    405                         else 
     410                                if (sn->sample_count > 0) 
     411                                        sn->sample_count--; 
     412                        } else 
    406413                                rc1 = sn->max_tp_rate; 
    407414                } else { 
    408415                        rc1 = sn->max_tp_rate2; 
    ath_rate_tx_complete(struct ath_softc *s 
    525532                if (tries <= tries1) 
    526533                        return; 
    527534 
     535                if (bf->rcflags) 
     536                        sn->sample_count++; 
     537 
    528538                if  (tries2 < 0) 
    529539                        return; 
    530540                tries = tries - tries1; 
  • net80211/ieee80211_rate.h

    a b struct ieee80211_mrr { 
    8787        int retries2; 
    8888        int rate3; 
    8989        int retries3; 
     90        int privflags; 
    9091}; 
    9192 
    9293struct ieee80211_rate_ops { 
Note: See TracBrowser for help on using the repository browser.