aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2011-01-20 05:49:15 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2011-01-20 05:49:15 +0000
commit9ea467445df33c00bef8d71e394157b6290acc18 (patch)
treeb81d7ff256e79570ed3a522cc38f816067bfabbf
parenteb46a7a59005eedd11e31ea443f0444b1d33ef8e (diff)
Notes
-rw-r--r--sys/dev/ath/ath_hal/ah.h2
-rw-r--r--sys/dev/ath/ath_hal/ar5210/ar5210.h2
-rw-r--r--sys/dev/ath/ath_hal/ar5210/ar5210_attach.c1
-rw-r--r--sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c9
-rw-r--r--sys/dev/ath/ath_hal/ar5211/ar5211.h2
-rw-r--r--sys/dev/ath/ath_hal/ar5211/ar5211_attach.c1
-rw-r--r--sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c10
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212.h2
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212_attach.c1
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c21
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416.h2
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_attach.c1
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c22
13 files changed, 76 insertions, 0 deletions
diff --git a/sys/dev/ath/ath_hal/ah.h b/sys/dev/ath/ath_hal/ah.h
index 9e456f4f548de..653d71c2c1f4f 100644
--- a/sys/dev/ath/ath_hal/ah.h
+++ b/sys/dev/ath/ath_hal/ah.h
@@ -680,6 +680,8 @@ struct ath_hal {
struct ath_desc *, struct ath_tx_status *);
void __ahdecl(*ah_getTxIntrQueue)(struct ath_hal *, uint32_t *);
void __ahdecl(*ah_reqTxIntrDesc)(struct ath_hal *, struct ath_desc*);
+ HAL_BOOL __ahdecl(*ah_getTxCompletionRates)(struct ath_hal *,
+ const struct ath_desc *ds, int *rates, int *tries);
/* Receive Functions */
uint32_t __ahdecl(*ah_getRxDP)(struct ath_hal*);
diff --git a/sys/dev/ath/ath_hal/ar5210/ar5210.h b/sys/dev/ath/ath_hal/ar5210/ar5210.h
index 01c1fdcc1f58b..b603e5c8b8b93 100644
--- a/sys/dev/ath/ath_hal/ar5210/ar5210.h
+++ b/sys/dev/ath/ath_hal/ar5210/ar5210.h
@@ -177,6 +177,8 @@ extern HAL_STATUS ar5210ProcTxDesc(struct ath_hal *,
struct ath_desc *, struct ath_tx_status *);
extern void ar5210GetTxIntrQueue(struct ath_hal *ah, uint32_t *);
extern void ar5210IntrReqTxDesc(struct ath_hal *ah, struct ath_desc *);
+extern HAL_BOOL ar5210GetTxCompletionRates(struct ath_hal *ah,
+ const struct ath_desc *, int *rates, int *tries);
extern uint32_t ar5210GetRxDP(struct ath_hal *);
extern void ar5210SetRxDP(struct ath_hal *, uint32_t rxdp);
diff --git a/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c b/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
index 0a470ee69a4d7..d1b0067b80b94 100644
--- a/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
+++ b/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
@@ -73,6 +73,7 @@ static const struct ath_hal_private ar5210hal = {{
.ah_procTxDesc = ar5210ProcTxDesc,
.ah_getTxIntrQueue = ar5210GetTxIntrQueue,
.ah_reqTxIntrDesc = ar5210IntrReqTxDesc,
+ .ah_getTxCompletionRates = ar5210GetTxCompletionRates,
/* RX Functions */
.ah_getRxDP = ar5210GetRxDP,
diff --git a/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c b/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c
index 63cd9fd1a5e51..f7c60306814c7 100644
--- a/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c
+++ b/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c
@@ -621,3 +621,12 @@ ar5210GetTxIntrQueue(struct ath_hal *ah, uint32_t *txqs)
{
return;
}
+
+/*
+ * Retrieve the rate table from the given TX completion descriptor
+ */
+HAL_BOOL
+ar5210GetTxCompletionRates(struct ath_hal *ah, const struct ath_desc *ds0, int *rates, int *tries)
+{
+ return AH_FALSE;
+}
diff --git a/sys/dev/ath/ath_hal/ar5211/ar5211.h b/sys/dev/ath/ath_hal/ar5211/ar5211.h
index 223f95446e30c..cbd218c33a6b0 100644
--- a/sys/dev/ath/ath_hal/ar5211/ar5211.h
+++ b/sys/dev/ath/ath_hal/ar5211/ar5211.h
@@ -202,6 +202,8 @@ extern HAL_STATUS ar5211ProcTxDesc(struct ath_hal *,
struct ath_desc *, struct ath_tx_status *);
extern void ar5211GetTxIntrQueue(struct ath_hal *ah, uint32_t *);
extern void ar5211IntrReqTxDesc(struct ath_hal *ah, struct ath_desc *);
+extern HAL_BOOL ar5211GetTxCompletionRates(struct ath_hal *ah,
+ const struct ath_desc *ds0, int *rates, int *tries);
extern uint32_t ar5211GetRxDP(struct ath_hal *);
extern void ar5211SetRxDP(struct ath_hal *, uint32_t rxdp);
diff --git a/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c b/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
index ec19751769a56..04262d5e1f47e 100644
--- a/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
+++ b/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
@@ -73,6 +73,7 @@ static const struct ath_hal_private ar5211hal = {{
.ah_procTxDesc = ar5211ProcTxDesc,
.ah_getTxIntrQueue = ar5211GetTxIntrQueue,
.ah_reqTxIntrDesc = ar5211IntrReqTxDesc,
+ .ah_getTxCompletionRates = ar5211GetTxCompletionRates,
/* RX Functions */
.ah_getRxDP = ar5211GetRxDP,
diff --git a/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c b/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c
index 5d70564506a8d..3af314f6ca598 100644
--- a/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c
+++ b/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c
@@ -660,3 +660,13 @@ ar5211GetTxIntrQueue(struct ath_hal *ah, uint32_t *txqs)
{
return;
}
+
+/*
+ * Retrieve the rate table from the given TX completion descriptor
+ */
+HAL_BOOL
+ar5211GetTxCompletionRates(struct ath_hal *ah, const struct ath_desc *ds0, int *rates, int *tries)
+{
+ return AH_FALSE;
+}
+
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212.h b/sys/dev/ath/ath_hal/ar5212/ar5212.h
index 8fce5ab48108d..9ef75f5d6b382 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212.h
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212.h
@@ -589,6 +589,8 @@ extern HAL_STATUS ar5212ProcTxDesc(struct ath_hal *ah,
struct ath_desc *, struct ath_tx_status *);
extern void ar5212GetTxIntrQueue(struct ath_hal *ah, uint32_t *);
extern void ar5212IntrReqTxDesc(struct ath_hal *ah, struct ath_desc *);
+extern HAL_BOOL ar5212GetTxCompletionRates(struct ath_hal *ah,
+ const struct ath_desc *ds0, int *rates, int *tries);
extern const HAL_RATE_TABLE *ar5212GetRateTable(struct ath_hal *, u_int mode);
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c b/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
index 78571227f6b1a..22a3c1705c7d2 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
@@ -69,6 +69,7 @@ static const struct ath_hal_private ar5212hal = {{
.ah_procTxDesc = ar5212ProcTxDesc,
.ah_getTxIntrQueue = ar5212GetTxIntrQueue,
.ah_reqTxIntrDesc = ar5212IntrReqTxDesc,
+ .ah_getTxCompletionRates = ar5212GetTxCompletionRates,
/* RX Functions */
.ah_getRxDP = ar5212GetRxDP,
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c b/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c
index 8b8a9218c974b..4fbce31acade7 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c
@@ -918,3 +918,24 @@ ar5212GetTxIntrQueue(struct ath_hal *ah, uint32_t *txqs)
*txqs &= ahp->ah_intrTxqs;
ahp->ah_intrTxqs &= ~(*txqs);
}
+
+/*
+ * Retrieve the rate table from the given TX completion descriptor
+ */
+HAL_BOOL
+ar5212GetTxCompletionRates(struct ath_hal *ah, const struct ath_desc *ds0, int *rates, int *tries)
+{
+ const struct ar5212_desc *ads = AR5212DESC_CONST(ds0);
+
+ rates[0] = MS(ads->ds_ctl3, AR_XmitRate0);
+ rates[1] = MS(ads->ds_ctl3, AR_XmitRate1);
+ rates[2] = MS(ads->ds_ctl3, AR_XmitRate2);
+ rates[3] = MS(ads->ds_ctl3, AR_XmitRate3);
+
+ tries[0] = MS(ads->ds_ctl2, AR_XmitDataTries0);
+ tries[1] = MS(ads->ds_ctl2, AR_XmitDataTries1);
+ tries[2] = MS(ads->ds_ctl2, AR_XmitDataTries2);
+ tries[3] = MS(ads->ds_ctl2, AR_XmitDataTries3);
+
+ return AH_TRUE;
+}
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416.h b/sys/dev/ath/ath_hal/ar5416/ar5416.h
index 8d1484b60aa7d..aeb4ed1230783 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416.h
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416.h
@@ -218,6 +218,8 @@ extern HAL_BOOL ar5416FillTxDesc(struct ath_hal *ah, struct ath_desc *ds,
const struct ath_desc *ds0);
extern HAL_STATUS ar5416ProcTxDesc(struct ath_hal *ah,
struct ath_desc *, struct ath_tx_status *);
+extern HAL_BOOL ar5416GetTxCompletionRates(struct ath_hal *ah,
+ const struct ath_desc *ds0, int *rates, int *tries);
extern const HAL_RATE_TABLE *ar5416GetRateTable(struct ath_hal *, u_int mode);
#endif /* _ATH_AR5416_H_ */
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c b/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
index a0bf7bdd627eb..b25e6f699254f 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
@@ -98,6 +98,7 @@ ar5416InitState(struct ath_hal_5416 *ahp5416, uint16_t devid, HAL_SOFTC sc,
ah->ah_setupXTxDesc = ar5416SetupXTxDesc;
ah->ah_fillTxDesc = ar5416FillTxDesc;
ah->ah_procTxDesc = ar5416ProcTxDesc;
+ ah->ah_getTxCompletionRates = ar5416GetTxCompletionRates;
/* Receive Functions */
ah->ah_startPcuReceive = ar5416StartPcuReceive;
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
index 47277a18b4edd..8a8dbef4175d1 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
@@ -693,3 +693,25 @@ ar5416Set11nBurstDuration(struct ath_hal *ah, struct ath_desc *ds,
ads->ds_ctl2 |= SM(burstDuration, AR_BurstDur);
}
#endif
+
+/*
+ * Retrieve the rate table from the given TX completion descriptor
+ */
+HAL_BOOL
+ar5416GetTxCompletionRates(struct ath_hal *ah, const struct ath_desc *ds0, int *rates, int *tries)
+{
+ const struct ar5416_desc *ads = AR5416DESC_CONST(ds0);
+
+ rates[0] = MS(ads->ds_ctl3, AR_XmitRate0);
+ rates[1] = MS(ads->ds_ctl3, AR_XmitRate1);
+ rates[2] = MS(ads->ds_ctl3, AR_XmitRate2);
+ rates[3] = MS(ads->ds_ctl3, AR_XmitRate3);
+
+ tries[0] = MS(ads->ds_ctl2, AR_XmitDataTries0);
+ tries[1] = MS(ads->ds_ctl2, AR_XmitDataTries1);
+ tries[2] = MS(ads->ds_ctl2, AR_XmitDataTries2);
+ tries[3] = MS(ads->ds_ctl2, AR_XmitDataTries3);
+
+ return AH_TRUE;
+}
+