aboutsummaryrefslogtreecommitdiff
path: root/tools/tools/ath
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2017-01-22 05:28:26 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2017-01-22 05:28:26 +0000
commit3f637132cf563a550e228fcb6513e437a7701659 (patch)
tree79db650358887bcc0981e44efddc03266a38dc95 /tools/tools/ath
parente0b79e669b974858d7ab1a58832f2e33876b7bf6 (diff)
downloadsrc-3f637132cf563a550e228fcb6513e437a7701659.tar.gz
src-3f637132cf563a550e228fcb6513e437a7701659.zip
[athalq] add debug parsing for the TX FIFO push status.
Notes
Notes: svn path=/head/; revision=312611
Diffstat (limited to 'tools/tools/ath')
-rw-r--r--tools/tools/ath/athalq/ar9300_ds.c30
-rw-r--r--tools/tools/ath/athalq/ar9300_ds.h1
-rw-r--r--tools/tools/ath/athalq/main.c5
3 files changed, 29 insertions, 7 deletions
diff --git a/tools/tools/ath/athalq/ar9300_ds.c b/tools/tools/ath/athalq/ar9300_ds.c
index a554929f28e1..331a29011bc0 100644
--- a/tools/tools/ath/athalq/ar9300_ds.c
+++ b/tools/tools/ath/athalq/ar9300_ds.c
@@ -38,6 +38,22 @@ __FBSDID("$FreeBSD$");
#define MS(_v, _f) ( ((_v) & (_f)) >> _f##_S )
#define MF(_v, _f) ( !! ((_v) & (_f)))
+void
+ath_alq_print_edma_tx_fifo_push(struct if_ath_alq_payload *a)
+{
+ struct if_ath_alq_tx_fifo_push p;
+
+ memcpy(&p, &a->payload, sizeof(p));
+ printf("[%u.%06u] [%llu] TXPUSH txq=%d, nframes=%d, fifodepth=%d, frmcount=%d\n",
+ (unsigned int) be32toh(a->hdr.tstamp_sec),
+ (unsigned int) be32toh(a->hdr.tstamp_usec),
+ (unsigned long long) be64toh(a->hdr.threadid),
+ be32toh(p.txq),
+ be32toh(p.nframes),
+ be32toh(p.fifo_depth),
+ be32toh(p.frame_cnt));
+}
+
static void
ar9300_decode_txstatus(struct if_ath_alq_payload *a)
{
@@ -46,10 +62,13 @@ ar9300_decode_txstatus(struct if_ath_alq_payload *a)
/* XXX assumes txs is smaller than PAYLOAD_LEN! */
memcpy(&txs, &a->payload, sizeof(struct ar9300_txs));
- printf("[%u.%06u] [%llu] TXSTATUS\n",
+ printf("[%u.%06u] [%llu] TXSTATUS TxTimestamp=%d, DescId=0x%04x, QCU=%d\n",
(unsigned int) be32toh(a->hdr.tstamp_sec),
(unsigned int) be32toh(a->hdr.tstamp_usec),
- (unsigned long long) be64toh(a->hdr.threadid));
+ (unsigned long long) be64toh(a->hdr.threadid),
+ txs.status4,
+ (unsigned int) MS(txs.status1, AR_tx_desc_id),
+ (unsigned int) MS(txs.ds_info, AR_tx_qcu_num));
printf(" DescId=0x%08x\n", txs.status1);
printf(" DescLen=%d, TxQcuNum=%d, CtrlStat=%d, DescId=0x%04x\n",
@@ -58,7 +77,7 @@ ar9300_decode_txstatus(struct if_ath_alq_payload *a)
MS(txs.ds_info, AR_ctrl_stat),
MS(txs.ds_info, AR_desc_id));
- printf(" TxTimestamp=0x%08x\n", txs.status4);
+ printf(" TxTimestamp: %d\n", txs.status4);
printf(" TxDone=%d, SeqNo=%d, TxOpExceed=%d, TXBFStatus=%d\n",
MF(txs.status8, AR_tx_done),
@@ -130,10 +149,11 @@ ar9300_decode_txdesc(struct if_ath_alq_payload *a)
/* XXX assumes txs is smaller than PAYLOAD_LEN! */
memcpy(&txc, &a->payload, 96);
- printf("[%u.%06u] [%llu] TXD\n",
+ printf("[%u.%06u] [%llu] TXD DescId=0x%04x\n",
(unsigned int) be32toh(a->hdr.tstamp_sec),
(unsigned int) be32toh(a->hdr.tstamp_usec),
- (unsigned long long) be64toh(a->hdr.threadid));
+ (unsigned long long) be64toh(a->hdr.threadid),
+ (unsigned int) MS(txc.ds_ctl10, AR_tx_desc_id));
printf(" DescLen=%d, TxQcuNum=%d, CtrlStat=%d, DescId=0x%04x\n",
txc.ds_info & 0xff,
diff --git a/tools/tools/ath/athalq/ar9300_ds.h b/tools/tools/ath/athalq/ar9300_ds.h
index daf507bbb72c..d0394cb3fe22 100644
--- a/tools/tools/ath/athalq/ar9300_ds.h
+++ b/tools/tools/ath/athalq/ar9300_ds.h
@@ -19,5 +19,6 @@
#define __AR9300_DS_H__
extern void ar9300_alq_payload(struct if_ath_alq_payload *a);
+extern void ath_alq_print_edma_tx_fifo_push(struct if_ath_alq_payload *a);
#endif /* __AR9300_DS_H__ */
diff --git a/tools/tools/ath/athalq/main.c b/tools/tools/ath/athalq/main.c
index c5ba9ef5240c..c8c2c335f561 100644
--- a/tools/tools/ath/athalq/main.c
+++ b/tools/tools/ath/athalq/main.c
@@ -186,6 +186,9 @@ main(int argc, const char *argv[])
case ATH_ALQ_RESUME_BEACON:
ath_alq_print_beacon_resume(a);
break;
+ case ATH_ALQ_TX_FIFO_PUSH:
+ ath_alq_print_edma_tx_fifo_push(a);
+ break;
default:
if (be32toh(hdr.sc_hal_magic) == AR5210_MAGIC)
ar5210_alq_payload(a);
@@ -195,10 +198,8 @@ main(int argc, const char *argv[])
ar5212_alq_payload(a);
else if (be32toh(hdr.sc_hal_magic) == AR5416_MAGIC)
ar5416_alq_payload(a);
-#if 1
else if (be32toh(hdr.sc_hal_magic) == AR9300_MAGIC)
ar9300_alq_payload(a);
-#endif
else
printf("[%d.%06d] [%lld] op: %d; len %d\n",
be32toh(a->hdr.tstamp_sec),