Date: Mon, 3 Jan 2005 19:41:09 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 68219 for review Message-ID: <200501031941.j03Jf9ft045876@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=68219 Change 68219 by sam@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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200501031941.j03Jf9ft045876>