diff options
author | sam <sam@FreeBSD.org> | 2006-12-27 18:46:18 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2006-12-27 18:46:18 +0000 |
commit | 4442f89b49a898383c874def50a11aab97b03845 (patch) | |
tree | 8bd925a7f6c33cd28325df02b1a6153b8b091d2d /sys/net80211/ieee80211_proto.c | |
parent | 03269f3b4c923667476d52b5c6c3711ae678d017 (diff) | |
download | FreeBSD-src-4442f89b49a898383c874def50a11aab97b03845.zip FreeBSD-src-4442f89b49a898383c874def50a11aab97b03845.tar.gz |
First cut at half/quarter-rate 11a channel support (e.g. for use
in the Public Safety Band):
o add channel flags to identify half/quarter-rate operation
o add rate sets (need to check spec on 4Mb/s in 1/4 rate)
o add if_media definitions for new rates
o split net80211 channel setup out into ieee80211_chan_init
o fixup ieee80211_mhz2ieee and ieee80211_ieee2mhz to understand half/quarter
rate channels: note we temporarily use a nonstandard/hack numbering that
avoids overlap with 2.4G channels because we don't (yet) have enough
state to identify and/or map overlapping channel sets
o fixup ieee80211_ifmedia_init so it can be called post attach and will
recalculate the channel list and associated state; this enables changing
channel-related state like the regulatory domain after attach (will be
needed for 802.11d support too)
o add ieee80211_get_suprates to return a reference to the supported rate
set for a given channel
o add 3, 4.5, and 27 MB/s tx rates to rate <-> media conversion routines
o const-poison channel arg to ieee80211_chan2mode
Diffstat (limited to 'sys/net80211/ieee80211_proto.c')
-rw-r--r-- | sys/net80211/ieee80211_proto.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/net80211/ieee80211_proto.c b/sys/net80211/ieee80211_proto.c index e7441ef..e11fb70 100644 --- a/sys/net80211/ieee80211_proto.c +++ b/sys/net80211/ieee80211_proto.c @@ -329,7 +329,8 @@ ieee80211_fix_rate(struct ieee80211_node *ni, int flags) struct ieee80211com *ic = ni->ni_ic; int i, j, ignore, error; int okrate, badrate, fixedrate; - struct ieee80211_rateset *srs, *nrs; + const struct ieee80211_rateset *srs; + struct ieee80211_rateset *nrs; u_int8_t r; /* @@ -341,7 +342,7 @@ ieee80211_fix_rate(struct ieee80211_node *ni, int flags) flags &= ~IEEE80211_F_DOFRATE; error = 0; okrate = badrate = fixedrate = 0; - srs = &ic->ic_sup_rates[ieee80211_chan2mode(ic, ni->ni_chan)]; + srs = ieee80211_get_suprates(ic, ni->ni_chan); nrs = &ni->ni_rates; for (i = 0; i < nrs->rs_nrates; ) { ignore = 0; |