PERFORCE change 68219 for review
Sam Leffler
sam at FreeBSD.org
Mon Jan 3 19:41:10 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=68219
Change 68219 by sam at sam_ebb on 2005/01/03 19:41:08
combine separate arrays indexed by h/w rate ix into a
single array of structures; appears to be no cost (code
size goes down, no obvious performance diff)
Affected files ...
.. //depot/projects/wifi/sys/dev/ath/if_ath.c#54 edit
.. //depot/projects/wifi/sys/dev/ath/if_athvar.h#22 edit
Differences ...
==== //depot/projects/wifi/sys/dev/ath/if_ath.c#54 (text+ko) ====
@@ -2636,8 +2636,8 @@
goto rx_next;
}
rix = ds->ds_rxstat.rs_rate;
- sc->sc_rx_th.wr_flags = sc->sc_hwflags[rix];
- sc->sc_rx_th.wr_rate = sc->sc_hwmap[rix];
+ sc->sc_rx_th.wr_flags = sc->sc_hwmap[rix].flags;
+ sc->sc_rx_th.wr_rate = sc->sc_hwmap[rix].ieeerate;
sc->sc_rx_th.wr_antsignal = ds->ds_rxstat.rs_rssi;
sc->sc_rx_th.wr_antenna = ds->ds_rxstat.rs_antenna;
/* XXX TSF */
@@ -2685,7 +2685,7 @@
if (IFF_DUMPPKTS(sc, ATH_DEBUG_RECV)) {
ieee80211_dump_pkt(ic, mtod(m, caddr_t), len,
- sc->sc_hwmap[ds->ds_rxstat.rs_rate],
+ sc->sc_hwmap[ds->ds_rxstat.rs_rate].ieeerate,
ds->ds_rxstat.rs_rssi);
}
@@ -3237,15 +3237,15 @@
if (IFF_DUMPPKTS(sc, ATH_DEBUG_XMIT))
ieee80211_dump_pkt(ic, mtod(m0, caddr_t), m0->m_len,
- sc->sc_hwmap[txrate], -1);
+ sc->sc_hwmap[txrate].ieeerate, -1);
if (ic->ic_rawbpf)
bpf_mtap(ic->ic_rawbpf, m0);
if (sc->sc_drvbpf) {
- sc->sc_tx_th.wt_flags = sc->sc_hwflags[txrate];
+ sc->sc_tx_th.wt_flags = sc->sc_hwmap[txrate].flags;
if (iswep)
sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_WEP;
- sc->sc_tx_th.wt_rate = sc->sc_hwmap[txrate];
+ sc->sc_tx_th.wt_rate = sc->sc_hwmap[txrate].ieeerate;
sc->sc_tx_th.wt_txpower = ni->ni_txpower;
sc->sc_tx_th.wt_antenna = sc->sc_txantenna;
@@ -4064,18 +4064,16 @@
static void
ath_led_event(struct ath_softc *sc, int event)
{
- struct ieee80211com *ic = &sc->sc_ic;
-
if (sc->sc_blinking) /* don't interrupt active blink */
return;
switch (event) {
case ATH_LED_TX:
- ath_led_blink(sc, sc->sc_hwledon[sc->sc_txrate],
- sc->sc_hwledoff[sc->sc_txrate]);
+ ath_led_blink(sc, sc->sc_hwmap[sc->sc_txrate].ledon,
+ sc->sc_hwmap[sc->sc_txrate].ledoff);
break;
case ATH_LED_RX:
- ath_led_blink(sc, sc->sc_hwledon[sc->sc_rxrate],
- sc->sc_hwledoff[sc->sc_rxrate]);
+ ath_led_blink(sc, sc->sc_hwmap[sc->sc_rxrate].ledon,
+ sc->sc_hwmap[sc->sc_rxrate].ledoff);
break;
}
}
@@ -4181,26 +4179,26 @@
for (i = 0; i < rt->rateCount; i++)
sc->sc_rixmap[rt->info[i].dot11Rate & IEEE80211_RATE_VAL] = i;
memset(sc->sc_hwmap, 0, sizeof(sc->sc_hwmap));
- memset(sc->sc_hwflags, 0, sizeof(sc->sc_hwflags));
for (i = 0; i < 32; i++) {
u_int8_t ix = rt->rateCodeToIndex[i];
if (ix == 0xff) {
- sc->sc_hwledon[i] = (500 * hz) / 1000;
- sc->sc_hwledoff[i] = (130 * hz) / 1000;
+ sc->sc_hwmap[i].ledon = (500 * hz) / 1000;
+ sc->sc_hwmap[i].ledoff = (130 * hz) / 1000;
continue;
}
- sc->sc_hwmap[i] = rt->info[ix].dot11Rate & IEEE80211_RATE_VAL;
+ sc->sc_hwmap[i].ieeerate =
+ rt->info[ix].dot11Rate & IEEE80211_RATE_VAL;
if (rt->info[ix].shortPreamble ||
rt->info[ix].phy == IEEE80211_T_OFDM)
- sc->sc_hwflags[i] |= IEEE80211_RADIOTAP_F_SHORTPRE;
+ sc->sc_hwmap[i].flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
/* setup blink rate table to avoid per-packet lookup */
for (j = 0; j < N(blinkrates)-1; j++)
- if (blinkrates[j].rate == sc->sc_hwmap[i])
+ if (blinkrates[j].rate == sc->sc_hwmap[i].ieeerate)
break;
/* NB: this uses the last entry if the rate isn't found */
/* XXX beware of overlow */
- sc->sc_hwledon[i] = (blinkrates[j].timeOn * hz) / 1000;
- sc->sc_hwledoff[i] = (blinkrates[j].timeOff * hz) / 1000;
+ sc->sc_hwmap[i].ledon = (blinkrates[j].timeOn * hz) / 1000;
+ sc->sc_hwmap[i].ledoff = (blinkrates[j].timeOff * hz) / 1000;
}
sc->sc_currates = rt;
sc->sc_curmode = mode;
==== //depot/projects/wifi/sys/dev/ath/if_athvar.h#22 (text+ko) ====
@@ -183,8 +183,12 @@
u_int16_t sc_curtxpow; /* current tx power limit */
HAL_CHANNEL sc_curchan; /* current h/w channel */
u_int8_t sc_rixmap[256]; /* IEEE to h/w rate table ix */
- u_int8_t sc_hwmap[32]; /* h/w rate ix to IEEE table */
- u_int8_t sc_hwflags[32]; /* " " " to radiotap flags */
+ struct {
+ u_int8_t ieeerate; /* IEEE rate */
+ u_int8_t flags; /* radiotap flags */
+ u_int16_t ledon; /* softled on time */
+ u_int16_t ledoff; /* softled off time */
+ } sc_hwmap[32]; /* h/w rate ix mappings */
u_int8_t sc_protrix; /* protection rate index */
u_int sc_txantenna; /* tx antenna (fixed or auto) */
HAL_INT sc_imask; /* interrupt mask copy */
@@ -197,8 +201,6 @@
u_int8_t sc_rxrate; /* current rx rate for LED */
u_int8_t sc_txrate; /* current tx rate for LED */
u_int16_t sc_ledoff; /* off time for current blink */
- u_int16_t sc_hwledon[32]; /* h/w rate ix to LED on time */
- u_int16_t sc_hwledoff[32];/* " " " to LED off time */
struct callout sc_ledtimer; /* led off timer */
struct bpf_if *sc_drvbpf;
More information about the p4-projects
mailing list