PERFORCE change 125586 for review
Sam Leffler
sam at FreeBSD.org
Thu Aug 23 09:06:05 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=125586
Change 125586 by sam at sam_ebb on 2007/08/23 16:05:44
checkpoint changes to convert ni_txrate from an index into
the rate set to an IEEE rate; amrr is likely broken, untested
Affected files ...
.. //depot/projects/wifi/sys/dev/ath/ath_rate/amrr/amrr.c#21 edit
.. //depot/projects/wifi/sys/dev/ath/ath_rate/onoe/onoe.c#22 edit
.. //depot/projects/wifi/sys/dev/ath/ath_rate/sample/sample.c#14 edit
.. //depot/projects/wifi/sys/dev/awi/awi.c#18 edit
.. //depot/projects/wifi/sys/dev/if_ndis/if_ndis.c#33 edit
.. //depot/projects/wifi/sys/dev/ral/rt2560.c#25 edit
.. //depot/projects/wifi/sys/dev/usb/if_rum.c#7 edit
.. //depot/projects/wifi/sys/dev/usb/if_ural.c#34 edit
.. //depot/projects/wifi/sys/dev/wi/if_wi.c#42 edit
.. //depot/projects/wifi/sys/net80211/ieee80211.c#56 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_amrr.c#6 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_amrr.h#3 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_node.h#49 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_proto.c#61 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_scan_sta.c#26 edit
Differences ...
==== //depot/projects/wifi/sys/dev/ath/ath_rate/amrr/amrr.c#21 (text+ko) ====
@@ -210,7 +210,6 @@
ni->ni_rates.rs_nrates > 0 ?
(ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0);
- ni->ni_txrate = rate;
/*
* Before associating a node has no rate set setup
* so we can't calculate any transmit codes to use.
@@ -219,8 +218,8 @@
* lowest hardware rate.
*/
if (ni->ni_rates.rs_nrates > 0) {
- amn->amn_tx_rix0 = sc->sc_rixmap[
- ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL];
+ ni->ni_txrate = ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL;
+ amn->amn_tx_rix0 = sc->sc_rixmap[ni->ni_txrate];
amn->amn_tx_rate0 = rt->info[amn->amn_tx_rix0].rateCode;
amn->amn_tx_rate0sp = amn->amn_tx_rate0 |
rt->info[amn->amn_tx_rix0].shortPreamble;
@@ -387,7 +386,7 @@
{
struct ath_softc *sc = arg;
struct amrr_node *amn = ATH_NODE_AMRR(ATH_NODE (ni));
- int old_rate;
+ int new_rate;
#define is_success(amn) \
(amn->amn_tx_try1_cnt < (amn->amn_tx_try0_cnt/10))
@@ -395,12 +394,12 @@
(amn->amn_tx_try0_cnt > 10)
#define is_failure(amn) \
(amn->amn_tx_try1_cnt > (amn->amn_tx_try0_cnt/3))
-#define is_max_rate(ni) \
-((ni->ni_txrate + 1) >= ni->ni_rates.rs_nrates)
-#define is_min_rate(ni) \
-(ni->ni_txrate == 0)
+#define is_max_rate(rix, ni) \
+((rix + 1) >= ni->ni_rates.rs_nrates)
+#define is_min_rate(rix, ni) \
+(rix == 0)
- old_rate = ni->ni_txrate;
+ rix = sc->sc_rixmap[ni->ni_txrate];
DPRINTF (sc, "cnt0: %d cnt1: %d cnt2: %d cnt3: %d -- threshold: %d\n",
amn->amn_tx_try0_cnt,
@@ -411,17 +410,17 @@
if (is_success (amn) && is_enough (amn)) {
amn->amn_success++;
if (amn->amn_success == amn->amn_success_threshold &&
- !is_max_rate (ni)) {
+ !is_max_rate (rix, ni)) {
amn->amn_recovery = 1;
amn->amn_success = 0;
- ni->ni_txrate++;
- DPRINTF (sc, "increase rate to %d\n", ni->ni_txrate);
+ rix++;
+ DPRINTF (sc, "increase rate to %d\n", rix);
} else {
amn->amn_recovery = 0;
}
} else if (is_failure (amn)) {
amn->amn_success = 0;
- if (!is_min_rate (ni)) {
+ if (!is_min_rate (rix, ni)) {
if (amn->amn_recovery) {
/* recovery failure. */
amn->amn_success_threshold *= 2;
@@ -434,7 +433,7 @@
DPRINTF (sc, "decrease rate normal thr: %d\n", amn->amn_success_threshold);
}
amn->amn_recovery = 0;
- ni->ni_txrate--;
+ rix--;
} else {
amn->amn_recovery = 0;
}
@@ -448,8 +447,9 @@
amn->amn_tx_try3_cnt = 0;
amn->amn_tx_failure_cnt = 0;
}
- if (old_rate != ni->ni_txrate) {
- ath_rate_update(sc, ni, ni->ni_txrate);
+ new_rate = ni->ni_rates.rs_rates[rix] & IEEE80211_RATE_VAL;
+ if (new_rate != ni->ni_txrate) {
+ ath_rate_update(sc, ni, new_rate);
}
}
==== //depot/projects/wifi/sys/dev/ath/ath_rate/onoe/onoe.c#22 (text+ko) ====
@@ -187,7 +187,6 @@
ni->ni_rates.rs_nrates > 0 ?
(ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0);
- ni->ni_txrate = rate;
/*
* Before associating a node has no rate set setup
* so we can't calculate any transmit codes to use.
@@ -197,8 +196,8 @@
*/
if (ni->ni_rates.rs_nrates == 0)
goto done;
- on->on_tx_rix0 = sc->sc_rixmap[
- ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL];
+ ni->ni_txrate = ni->ni_rates[rate] & IEEE80211_RATE_VAL;
+ on->on_tx_rix0 = sc->sc_rixmap[ni->ni_txrate];
on->on_tx_rate0 = rt->info[on->on_tx_rix0].rateCode;
on->on_tx_rate0sp = on->on_tx_rate0 |
@@ -365,7 +364,7 @@
struct ath_softc *sc = arg;
struct onoe_node *on = ATH_NODE_ONOE(ATH_NODE(ni));
struct ieee80211_rateset *rs = &ni->ni_rates;
- int dir = 0, nrate, enough;
+ int dir = 0, nrix, nrate, enough;
/*
* Rate control
@@ -392,14 +391,15 @@
on->on_tx_upper, dir);
nrate = ni->ni_txrate;
+ nrix = sc->sc_rixmap[nrate];
switch (dir) {
case 0:
if (enough && on->on_tx_upper > 0)
on->on_tx_upper--;
break;
case -1:
- if (nrate > 0) {
- nrate--;
+ if (nrix > 0) {
+ nrate = rs->rs_rates[nrix-1] & IEEE80211_RATE_VAL;
sc->sc_stats.ast_rate_drop++;
}
on->on_tx_upper = 0;
@@ -409,8 +409,8 @@
if (++on->on_tx_upper < ath_rate_raise_threshold)
break;
on->on_tx_upper = 0;
- if (nrate + 1 < rs->rs_nrates) {
- nrate++;
+ if (nrix + 1 < rs->rs_nrates) {
+ nrate = rs->rs_rates[nrix+1] & IEEE80211_RATE_VAL;
sc->sc_stats.ast_rate_raise++;
}
break;
@@ -419,10 +419,9 @@
if (nrate != ni->ni_txrate) {
DPRINTF(sc, "%s: %dM -> %dM (%d ok, %d err, %d retr)\n",
__func__,
- (rs->rs_rates[ni->ni_txrate] & IEEE80211_RATE_VAL) / 2,
- (rs->rs_rates[nrate] & IEEE80211_RATE_VAL) / 2,
+ ni->ni_ntxrate / 2, nrate / 2,
on->on_tx_ok, on->on_tx_err, on->on_tx_retr);
- ath_rate_update(sc, ni, nrate);
+ ath_rate_update(sc, ni, nrix);
} else if (enough)
on->on_tx_ok = on->on_tx_err = on->on_tx_retr = 0;
}
==== //depot/projects/wifi/sys/dev/ath/ath_rate/sample/sample.c#14 (text+ko) ====
@@ -49,7 +49,7 @@
#include <sys/module.h>
#include <sys/kernel.h>
#include <sys/lock.h>
-#include <sys/sx.h>
+#include <sys/mutex.h>
#include <sys/errno.h>
#include <machine/bus.h>
@@ -348,7 +348,7 @@
* set the visible txrate for this node
* to the rate of small packets
*/
- an->an_node.ni_txrate = ndx;
+ an->an_node.ni_txrate = sn->rates[ndx].rate;
}
}
}
@@ -723,7 +723,7 @@
DPRINTF(sc, ATH_DEBUG_RATE, "%s\n", "");
/* set the visible bit-rate to the lowest one available */
- ni->ni_txrate = 0;
+ ni->ni_txrate = ni->ni_rates.rs_rates[0] & IEEE80211_RATE_VAL;
sn->num_rates = ni->ni_rates.rs_nrates;
for (y = 0; y < NUM_PACKET_SIZE_BINS; y++) {
@@ -768,9 +768,9 @@
);
if (sn->static_rate_ndx != -1)
- ni->ni_txrate = sn->static_rate_ndx;
+ ni->ni_txrate = sn->rates[sn->static_rate_ndx].rate;
else
- ni->ni_txrate = sn->current_rate[0];
+ ni->ni_txrate = sn->rates[sn->current_rate[0]].rate;
#undef RATE
}
==== //depot/projects/wifi/sys/dev/awi/awi.c#18 (text+ko) ====
@@ -868,9 +868,7 @@
if ((ifp->if_flags & IFF_DEBUG) && (ifp->if_flags & IFF_LINK2))
ieee80211_dump_pkt(ic, m0->m_data, m0->m_len,
- ic->ic_bss->ni_rates.
- rs_rates[ic->ic_bss->ni_txrate] &
- IEEE80211_RATE_VAL, -1);
+ ic->ic_bss->ni_rates. ic->ic_bss->ni_txrate, -1);
for (m = m0, len = 0; m != NULL; m = m->m_next) {
awi_write_bytes(sc, frame + len, mtod(m, u_int8_t *),
@@ -878,8 +876,7 @@
len += m->m_len;
}
m_freem(m0);
- rate = (ic->ic_bss->ni_rates.rs_rates[ic->ic_bss->ni_txrate] &
- IEEE80211_RATE_VAL) * 5;
+ rate = ic->ic_bss->ni_txrate * 5;
awi_write_1(sc, ntxd + AWI_TXD_STATE, 0);
awi_write_4(sc, txd + AWI_TXD_START, frame);
awi_write_4(sc, txd + AWI_TXD_NEXT, ntxd);
@@ -1094,8 +1091,7 @@
else
mode = IEEE80211_MODE_11B;
if (ic->ic_state == IEEE80211_S_RUN) {
- rate = ic->ic_bss->ni_rates.rs_rates[ic->ic_bss->ni_txrate] &
- IEEE80211_RATE_VAL;
+ rate = ic->ic_bss->ni_txrate;
} else {
if (ic->ic_fixed_rate == IEEE80211_FIXED_RATE_NONE)
rate = 0;
==== //depot/projects/wifi/sys/dev/if_ndis/if_ndis.c#33 (text+ko) ====
@@ -2568,13 +2568,13 @@
ni = ic->ic_bss;
/* calculate rate subtype */
imr->ifm_active |= ieee80211_rate2media(ic,
- ni->ni_rates.rs_rates[ni->ni_txrate], ic->ic_curmode);
+ ni->ni_txrate, ic->ic_curmode);
break;
case IEEE80211_M_IBSS:
ni = ic->ic_bss;
/* calculate rate subtype */
imr->ifm_active |= ieee80211_rate2media(ic,
- ni->ni_rates.rs_rates[ni->ni_txrate], ic->ic_curmode);
+ ni->ni_txrate, ic->ic_curmode);
imr->ifm_active |= IFM_IEEE80211_ADHOC;
break;
case IEEE80211_M_AHDEMO:
@@ -2697,30 +2697,11 @@
device_printf (sc->ndis_dev, "get link speed failed: %d\n",
rval);
- if (isset(ic->ic_modecaps, IEEE80211_MODE_11B)) {
- ic->ic_bss->ni_rates = ic->ic_sup_rates[IEEE80211_MODE_11B];
- for (i = 0; i < ic->ic_bss->ni_rates.rs_nrates; i++) {
- if ((ic->ic_bss->ni_rates.rs_rates[i] &
- IEEE80211_RATE_VAL) == arg / 5000)
- break;
- }
- }
-
- if (i == ic->ic_bss->ni_rates.rs_nrates &&
- isset(ic->ic_modecaps, IEEE80211_MODE_11G)) {
+ if (isset(ic->ic_modecaps, IEEE80211_MODE_11G))
ic->ic_bss->ni_rates = ic->ic_sup_rates[IEEE80211_MODE_11G];
- for (i = 0; i < ic->ic_bss->ni_rates.rs_nrates; i++) {
- if ((ic->ic_bss->ni_rates.rs_rates[i] &
- IEEE80211_RATE_VAL) == arg / 5000)
- break;
- }
- }
-
- if (i == ic->ic_bss->ni_rates.rs_nrates)
- device_printf(sc->ndis_dev, "no matching rate for: %d\n",
- arg / 5000);
else
- ic->ic_bss->ni_txrate = i;
+ ic->ic_bss->ni_rates = ic->ic_sup_rates[IEEE80211_MODE_11B];
+ ic->ic_bss->ni_txrate = arg / 5000;
if (ic->ic_caps & IEEE80211_C_PMGT) {
len = sizeof(arg);
==== //depot/projects/wifi/sys/dev/ral/rt2560.c#25 (text) ====
@@ -1796,7 +1796,7 @@
rn = (struct rt2560_node *)ni;
ni->ni_txrate = ral_rssadapt_choose(&rn->rssadapt, rs, wh,
m0->m_pkthdr.len, NULL, 0);
- rate = rs->rs_rates[ni->ni_txrate];
+ rate = ni->ni_txrate;
}
rate &= IEEE80211_RATE_VAL;
==== //depot/projects/wifi/sys/dev/usb/if_rum.c#7 (text+ko) ====
@@ -1293,7 +1293,7 @@
if (ic->ic_fixed_rate != IEEE80211_FIXED_RATE_NONE)
rate = ic->ic_fixed_rate;
else
- rate = ni->ni_rates.rs_rates[ni->ni_txrate];
+ rate = ni->ni_txrate;
rate &= IEEE80211_RATE_VAL;
@@ -2360,7 +2360,7 @@
for (i = ni->ni_rates.rs_nrates - 1;
i > 0 && (ni->ni_rates.rs_rates[i] & IEEE80211_RATE_VAL) > 72;
i--);
- ni->ni_txrate = i;
+ ni->ni_txrate = ni->ni_rates.rs_rates[i] & IEEE80211_RATE_VAL;
callout_reset(&sc->amrr_ch, hz, rum_amrr_timeout, sc);
}
==== //depot/projects/wifi/sys/dev/usb/if_ural.c#34 (text+ko) ====
@@ -1358,7 +1358,7 @@
if (ic->ic_fixed_rate != IEEE80211_FIXED_RATE_NONE)
rate = ic->ic_fixed_rate;
else
- rate = ni->ni_rates.rs_rates[ni->ni_txrate];
+ rate = ni->ni_txrate;
rate &= IEEE80211_RATE_VAL;
@@ -2448,7 +2448,7 @@
i > 0 && (ni->ni_rates.rs_rates[i] & IEEE80211_RATE_VAL) > 72;
i--);
- ni->ni_txrate = i;
+ ni->ni_txrate = ni->ni_rates.rs_rates[i] & IEEE80211_RATE_VAL;
callout_reset(&sc->amrr_ch, hz, ural_amrr_timeout, sc);
}
==== //depot/projects/wifi/sys/dev/wi/if_wi.c#42 (text+ko) ====
@@ -1014,8 +1014,7 @@
}
#if NBPFILTER > 0
if (bpf_peers_present(sc->sc_drvbpf)) {
- sc->sc_tx_th.wt_rate =
- ni->ni_rates.rs_rates[ni->ni_txrate];
+ sc->sc_tx_th.wt_rate = ni->ni_txrate;
bpf_mtap2(sc->sc_drvbpf,
&sc->sc_tx_th, sc->sc_tx_th_len, m0);
}
@@ -1132,8 +1131,7 @@
}
#if NBPFILTER > 0
if (bpf_peers_present(sc->sc_drvbpf)) {
- sc->sc_tx_th.wt_rate =
- ni->ni_rates.rs_rates[ni->ni_txrate];
+ sc->sc_tx_th.wt_rate = ni->ni_txrate;
bpf_mtap2(sc->sc_drvbpf,
&sc->sc_tx_th, sc->sc_tx_th_len, m0);
}
@@ -3153,8 +3151,7 @@
if (ni != NULL)
ieee80211_dump_pkt(ni->ni_ic,
(u_int8_t *) &wh->wi_whdr, sizeof(wh->wi_whdr),
- ni->ni_rates.rs_rates[ni->ni_txrate] & IEEE80211_RATE_VAL,
- rssi);
+ ni->ni_txrate, rssi);
printf(" status 0x%x rx_tstamp1 %u rx_tstamp0 0x%u rx_silence %u\n",
le16toh(wh->wi_status), le16toh(wh->wi_rx_tstamp1),
le16toh(wh->wi_rx_tstamp0), wh->wi_rx_silence);
==== //depot/projects/wifi/sys/net80211/ieee80211.c#56 (text+ko) ====
@@ -944,7 +944,6 @@
{
struct ieee80211com *ic;
enum ieee80211_phymode mode;
- const struct ieee80211_rateset *rs;
ic = ieee80211_find_instance(ifp);
if (!ic) {
@@ -975,11 +974,9 @@
} else if (ic->ic_opmode == IEEE80211_M_STA) {
/*
* In station mode report the current transmit rate.
- * XXX HT rate
*/
- rs = &ic->ic_bss->ni_rates;
imr->ifm_active |= ieee80211_rate2media(ic,
- rs->rs_rates[ic->ic_bss->ni_txrate], mode);
+ ic->ic_bss->ni_txrate, mode);
} else
imr->ifm_active |= IFM_AUTO;
}
==== //depot/projects/wifi/sys/net80211/ieee80211_amrr.c#6 (text+ko) ====
@@ -51,17 +51,22 @@
((amn)->amn_retrycnt > (amn)->amn_txcnt / 3)
#define is_enough(amn) \
((amn)->amn_txcnt > 10)
-#define is_min_rate(ni) \
- ((ni)->ni_txrate == 0)
-#define is_max_rate(ni) \
- ((ni)->ni_txrate == (ni)->ni_rates.rs_nrates - 1)
-#define increase_rate(ni) \
- ((ni)->ni_txrate++)
-#define decrease_rate(ni) \
- ((ni)->ni_txrate--)
#define reset_cnt(amn) \
do { (amn)->amn_txcnt = (amn)->amn_retrycnt = 0; } while (0)
+static __inline void
+increase_rate(struct ieee80211_amrr *amrr, struct ieee80211_node *ni)
+{
+ int rix = amrr->amrr_rixmap[ni->ni_txrate];
+ ni->ni_txrate = ni->ni_rates.rs_rates[rix+1] & IEEE80211_RATE_VAL;
+}
+static __inline void
+decrease_rate(struct ieee80211_amrr *amrr, struct ieee80211_node *ni)
+{
+ int rix = amrr->amrr_rixmap[ni->ni_txrate];
+ ni->ni_txrate = ni->ni_rates.rs_rates[rix-1] & IEEE80211_RATE_VAL;
+}
+
void
ieee80211_amrr_init(struct ieee80211_amrr *amrr,
struct ieee80211com *ic, int amin, int amax)
@@ -73,6 +78,19 @@
}
void
+ieee80211_amrr_setrates(struct ieee80211_amrr *amrr,
+ const struct ieee80211_rateset *rs)
+{
+ int i;
+
+ memset(amrr->amrr_rixmap, 0xff, sizeof(amrr->amrr_rixmap));
+ for (i = 0; i < rs->rs_nrates; i++)
+ amrr->amrr_rixmap[rs->rs_rates[i] & IEEE80211_RATE_VAL] = i;
+ amrr->amrr_minrate = rs->rs_rates[0] & IEEE80211_RATE_VAL;
+ amrr->amrr_maxrate = rs->rs_rates[rs->rs_nrates-1] & IEEE80211_RATE_VAL;
+}
+
+void
ieee80211_amrr_node_init(struct ieee80211_amrr *amrr,
struct ieee80211_amrr_node *amn)
{
@@ -94,23 +112,20 @@
if (is_success(amn) && is_enough(amn)) {
amn->amn_success++;
if (amn->amn_success >= amn->amn_success_threshold &&
- !is_max_rate(ni)) {
+ ni->ni_txrate != amrr->amrr_maxrate) {
amn->amn_recovery = 1;
amn->amn_success = 0;
- increase_rate(ni);
+ increase_rate(amrr, ni);
IEEE80211_DPRINTF(amrr->amrr_ic, IEEE80211_MSG_RATECTL,
- "AMRR increasing rate %d (txcnt=%d "
- "retrycnt=%d)\n",
- ni->ni_rates.rs_rates[ni->ni_txrate] &
- IEEE80211_RATE_VAL,
- amn->amn_txcnt, amn->amn_retrycnt);
+ "AMRR increasing rate %d (txcnt=%d retrycnt=%d)\n",
+ ni->ni_txrate, amn->amn_txcnt, amn->amn_retrycnt);
need_change = 1;
} else {
amn->amn_recovery = 0;
}
} else if (is_failure(amn)) {
amn->amn_success = 0;
- if (!is_min_rate(ni)) {
+ if (ni->ni_txrate != amrr->amrr_minrate) {
if (amn->amn_recovery) {
amn->amn_success_threshold *= 2;
if (amn->amn_success_threshold >
@@ -121,13 +136,10 @@
amn->amn_success_threshold =
amrr->amrr_min_success_threshold;
}
- decrease_rate(ni);
+ decrease_rate(amrr, ni);
IEEE80211_DPRINTF(amrr->amrr_ic, IEEE80211_MSG_RATECTL,
- "AMRR decreasing rate %d (txcnt=%d "
- "retrycnt=%d)\n",
- ni->ni_rates.rs_rates[ni->ni_txrate] &
- IEEE80211_RATE_VAL,
- amn->amn_txcnt, amn->amn_retrycnt);
+ "AMRR decreasing rate %d (txcnt=%d retrycnt=%d)\n",
+ ni->ni_txrate, amn->amn_txcnt, amn->amn_retrycnt);
need_change = 1;
}
amn->amn_recovery = 0;
==== //depot/projects/wifi/sys/net80211/ieee80211_amrr.h#3 (text+ko) ====
@@ -37,6 +37,8 @@
struct ieee80211_amrr {
u_int amrr_min_success_threshold;
u_int amrr_max_success_threshold;
+ uint8_t amrr_rixmap[256]; /* IEEE to h/w rate table ix */
+ uint8_t amrr_minrate, amrr_maxrate;
struct ieee80211com *amrr_ic;
};
@@ -56,6 +58,8 @@
void ieee80211_amrr_init(struct ieee80211_amrr *,
struct ieee80211com *ic, int, int);
+void ieee80211_amrr_setrates(struct ieee80211_amrr *,
+ const struct ieee80211_rateset *);
void ieee80211_amrr_node_init(struct ieee80211_amrr *,
struct ieee80211_amrr_node *);
void ieee80211_amrr_choose(struct ieee80211_amrr *, struct ieee80211_node *,
==== //depot/projects/wifi/sys/net80211/ieee80211_node.h#49 (text+ko) ====
@@ -169,7 +169,7 @@
int ni_fails; /* failure count to associate */
short ni_inact; /* inactivity mark count */
short ni_inact_reload;/* inactivity reload value */
- int ni_txrate; /* index to ni_rates[] */
+ int ni_txrate; /* legacy RATE/MC */
struct ifqueue ni_savedq; /* ps-poll queue */
struct ieee80211_nodestats ni_stats; /* per-node statistics */
};
==== //depot/projects/wifi/sys/net80211/ieee80211_proto.c#61 (text+ko) ====
@@ -1311,9 +1311,6 @@
break;
case IEEE80211_S_SCAN: /* adhoc/hostap mode */
case IEEE80211_S_ASSOC: /* infra mode */
- KASSERT(ni->ni_txrate < ni->ni_rates.rs_nrates,
- ("%s: bogus xmit rate %u setup\n", __func__,
- ni->ni_txrate));
#ifdef IEEE80211_DEBUG
if (ieee80211_msg_debug(ic)) {
if (ic->ic_opmode == IEEE80211_M_STA)
@@ -1326,7 +1323,7 @@
ni->ni_esslen);
printf(" channel %d start %uMb\n",
ieee80211_chan2ieee(ic, ic->ic_curchan),
- IEEE80211_RATE2MBS(ni->ni_rates.rs_rates[ni->ni_txrate]));
+ IEEE80211_RATE2MBS(ni->ni_txrate));
}
#endif
if (ic->ic_opmode == IEEE80211_M_STA) {
==== //depot/projects/wifi/sys/net80211/ieee80211_scan_sta.c#26 (text+ko) ====
@@ -1013,7 +1013,7 @@
/* NB: the most up to date rssi is in the node, not the scan cache */
curRssi = ic->ic_node_getrssi(ni);
if (ic->ic_fixed_rate == IEEE80211_FIXED_RATE_NONE) {
- curRate = ni->ni_rates.rs_rates[ni->ni_txrate] & IEEE80211_RATE_VAL;
+ curRate = ni->ni_txrate;
IEEE80211_DPRINTF(ic, IEEE80211_MSG_ROAM,
"%s: currssi %d currate %u roamrssi %d roamrate %u\n",
__func__, curRssi, curRate, roamRssi, roamRate);
More information about the p4-projects
mailing list