summaryrefslogtreecommitdiffstats
path: root/sys/dev/ath
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2007-01-15 01:17:44 +0000
committersam <sam@FreeBSD.org>2007-01-15 01:17:44 +0000
commit505d2532fe1d955e605664931526492bec80da0b (patch)
treee776a9d23032a8e0306f38909370882670d21bfc /sys/dev/ath
parent35e57be364012f2c66a247811024dc9d3ea9d0c2 (diff)
downloadFreeBSD-src-505d2532fe1d955e605664931526492bec80da0b.zip
FreeBSD-src-505d2532fe1d955e605664931526492bec80da0b.tar.gz
save changes for handling 5416/5418 parts
Diffstat (limited to 'sys/dev/ath')
-rw-r--r--sys/dev/ath/ath_rate/sample/sample.c48
-rw-r--r--sys/dev/ath/ath_rate/sample/sample.h10
2 files changed, 30 insertions, 28 deletions
diff --git a/sys/dev/ath/ath_rate/sample/sample.c b/sys/dev/ath/ath_rate/sample/sample.c
index a873527..6cf564e 100644
--- a/sys/dev/ath/ath_rate/sample/sample.c
+++ b/sys/dev/ath/ath_rate/sample/sample.c
@@ -533,24 +533,6 @@ ath_rate_tx_complete(struct ath_softc *sc, struct ath_node *an,
short_tries, long_tries);
return;
}
-
- if (ts->ts_status) { /* this packet failed */
- DPRINTF(sc, ATH_DEBUG_RATE,
-"%s: %s size %d rate/try [%d/%d %d/%d %d/%d %d/%d] FAIL tries [%d/%d]\n",
- __func__,
- ether_sprintf(an->an_node.ni_macaddr),
- bin_to_size(size_to_bin(frame_size)),
- sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate0)].ieeerate,
- MS(ds0->ds_ctl2, AR_XmitDataTries0),
- sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate1)].ieeerate,
- MS(ds0->ds_ctl2, AR_XmitDataTries1),
- sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate2)].ieeerate,
- MS(ds0->ds_ctl2, AR_XmitDataTries2),
- sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate3)].ieeerate,
- MS(ds0->ds_ctl2, AR_XmitDataTries3),
- short_tries, long_tries);
- }
-
mrr = sc->sc_mrretry && !(ic->ic_flags & IEEE80211_F_USEPROT);
if (!mrr || !(ts->ts_rate & HAL_TXSTAT_ALTRATE)) {
int ndx = rate_to_ndx(sn, final_rate);
@@ -571,32 +553,43 @@ ath_rate_tx_complete(struct ath_softc *sc, struct ath_node *an,
0, 0,
short_tries, long_tries, ts->ts_status);
} else {
- int rate0, tries0, ndx0;
- int rate1, tries1, ndx1;
- int rate2, tries2, ndx2;
- int rate3, tries3, ndx3;
+ int hwrate0, rate0, tries0, ndx0;
+ int hwrate1, rate1, tries1, ndx1;
+ int hwrate2, rate2, tries2, ndx2;
+ int hwrate3, rate3, tries3, ndx3;
int finalTSIdx = ts->ts_finaltsi;
/*
* Process intermediate rates that failed.
*/
- rate0 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate0)].ieeerate;
+ if (sc->sc_ah->ah_magic != 0x20065416) {
+ hwrate0 = MS(ds0->ds_ctl3, AR_XmitRate0);
+ hwrate1 = MS(ds0->ds_ctl3, AR_XmitRate1);
+ hwrate2 = MS(ds0->ds_ctl3, AR_XmitRate2);
+ hwrate3 = MS(ds0->ds_ctl3, AR_XmitRate3);
+ } else {
+ hwrate0 = MS(ds0->ds_ctl3, AR5416_XmitRate0);
+ hwrate1 = MS(ds0->ds_ctl3, AR5416_XmitRate1);
+ hwrate2 = MS(ds0->ds_ctl3, AR5416_XmitRate2);
+ hwrate3 = MS(ds0->ds_ctl3, AR5416_XmitRate3);
+ }
+
+ rate0 = sc->sc_hwmap[hwrate0].ieeerate;
tries0 = MS(ds0->ds_ctl2, AR_XmitDataTries0);
ndx0 = rate_to_ndx(sn, rate0);
- rate1 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate1)].ieeerate;
+ rate1 = sc->sc_hwmap[hwrate1].ieeerate;
tries1 = MS(ds0->ds_ctl2, AR_XmitDataTries1);
ndx1 = rate_to_ndx(sn, rate1);
- rate2 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate2)].ieeerate;
+ rate2 = sc->sc_hwmap[hwrate2].ieeerate;
tries2 = MS(ds0->ds_ctl2, AR_XmitDataTries2);
ndx2 = rate_to_ndx(sn, rate2);
- rate3 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate3)].ieeerate;
+ rate3 = sc->sc_hwmap[hwrate3].ieeerate;
tries3 = MS(ds0->ds_ctl2, AR_XmitDataTries3);
ndx3 = rate_to_ndx(sn, rate3);
-#if 1
DPRINTF(sc, ATH_DEBUG_RATE,
"%s: %s size %d finaltsidx %d tries %d %s rate/try [%d/%d %d/%d %d/%d %d/%d]\n",
__func__, ether_sprintf(an->an_node.ni_macaddr),
@@ -608,7 +601,6 @@ ath_rate_tx_complete(struct ath_softc *sc, struct ath_node *an,
rate1, tries1,
rate2, tries2,
rate3, tries3);
-#endif
/*
* NB: series > 0 are not penalized for failure
diff --git a/sys/dev/ath/ath_rate/sample/sample.h b/sys/dev/ath/ath_rate/sample/sample.h
index 90593aa..1e9377e 100644
--- a/sys/dev/ath/ath_rate/sample/sample.h
+++ b/sys/dev/ath/ath_rate/sample/sample.h
@@ -136,6 +136,16 @@ struct sample_node {
#define AR_XmitRate3 0x000f8000 /* series 3 tx rate */
#define AR_XmitRate3_S 15
+/* TX ds_ctl3 for 5416 */
+#define AR5416_XmitRate0 0x000000ff /* series 0 tx rate */
+#define AR5416_XmitRate0_S 0
+#define AR5416_XmitRate1 0x0000ff00 /* series 1 tx rate */
+#define AR5416_XmitRate1_S 8
+#define AR5416_XmitRate2 0x00ff0000 /* series 2 tx rate */
+#define AR5416_XmitRate2_S 16
+#define AR5416_XmitRate3 0xff000000 /* series 3 tx rate */
+#define AR5416_XmitRate3_S 24
+
#define MS(_v, _f) (((_v) & (_f)) >> _f##_S)
/*
OpenPOWER on IntegriCloud