diff options
author | weongyo <weongyo@FreeBSD.org> | 2010-06-29 21:56:42 +0000 |
---|---|---|
committer | weongyo <weongyo@FreeBSD.org> | 2010-06-29 21:56:42 +0000 |
commit | f954d3e94b87aadf25b305b319e283ab4fe16333 (patch) | |
tree | 2c92f7ec3260941a8c982d3798d7f8dd6a52bcd1 /sys/dev | |
parent | 031846c086e4509988d5bb5bea7699703882ffa4 (diff) | |
download | FreeBSD-src-f954d3e94b87aadf25b305b319e283ab4fe16333.zip FreeBSD-src-f954d3e94b87aadf25b305b319e283ab4fe16333.tar.gz |
Initializes the ratectl for a node when the state is changed to RUN.
This prevents a kernel fault by dividing with zero because the initial
rate was 0 and didn't be initialized.
Tested by: Warren Block <wblock at wonkity.com>
MFC after: 3 days
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/bwi/if_bwi.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/bwi/if_bwi.c b/sys/dev/bwi/if_bwi.c index 91145e4..5501c13 100644 --- a/sys/dev/bwi/if_bwi.c +++ b/sys/dev/bwi/if_bwi.c @@ -1769,6 +1769,7 @@ static int bwi_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) { struct bwi_vap *bvp = BWI_VAP(vap); + const struct ieee80211_txparam *tp; struct ieee80211com *ic= vap->iv_ic; struct ifnet *ifp = ic->ic_ifp; enum ieee80211_state ostate = vap->iv_state; @@ -1822,6 +1823,11 @@ bwi_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) sc->sc_txpwrcb_type = BWI_TXPWR_CALIB; #endif + /* Initializes ratectl for a node. */ + tp = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)]; + if (tp->ucastrate == IEEE80211_FIXED_RATE_NONE) + ieee80211_ratectl_node_init(vap->iv_bss); + callout_reset(&sc->sc_calib_ch, hz, bwi_calibrate, sc); } back: |