Commit bda8adda authored by Ben Greear's avatar Ben Greear Committed by John W. Linville

ath9k: Add counters to distinquish AMPDU enqueues.

Show counters for pkts sent directly to hardware and
those queued in software.
Signed-off-by: default avatarBen Greear <greearb@candelatech.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 082f6536
...@@ -628,7 +628,8 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf, ...@@ -628,7 +628,8 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
PR("MPDUs Queued: ", queued); PR("MPDUs Queued: ", queued);
PR("MPDUs Completed: ", completed); PR("MPDUs Completed: ", completed);
PR("Aggregates: ", a_aggr); PR("Aggregates: ", a_aggr);
PR("AMPDUs Queued: ", a_queued); PR("AMPDUs Queued HW:", a_queued_hw);
PR("AMPDUs Queued SW:", a_queued_sw);
PR("AMPDUs Completed:", a_completed); PR("AMPDUs Completed:", a_completed);
PR("AMPDUs Retried: ", a_retries); PR("AMPDUs Retried: ", a_retries);
PR("AMPDUs XRetried: ", a_xretries); PR("AMPDUs XRetried: ", a_xretries);
......
...@@ -89,7 +89,8 @@ struct ath_interrupt_stats { ...@@ -89,7 +89,8 @@ struct ath_interrupt_stats {
* @queued: Total MPDUs (non-aggr) queued * @queued: Total MPDUs (non-aggr) queued
* @completed: Total MPDUs (non-aggr) completed * @completed: Total MPDUs (non-aggr) completed
* @a_aggr: Total no. of aggregates queued * @a_aggr: Total no. of aggregates queued
* @a_queued: Total AMPDUs queued * @a_queued_hw: Total AMPDUs queued to hardware
* @a_queued_sw: Total AMPDUs queued to software queues
* @a_completed: Total AMPDUs completed * @a_completed: Total AMPDUs completed
* @a_retries: No. of AMPDUs retried (SW) * @a_retries: No. of AMPDUs retried (SW)
* @a_xretries: No. of AMPDUs dropped due to xretries * @a_xretries: No. of AMPDUs dropped due to xretries
...@@ -112,7 +113,8 @@ struct ath_tx_stats { ...@@ -112,7 +113,8 @@ struct ath_tx_stats {
u32 queued; u32 queued;
u32 completed; u32 completed;
u32 a_aggr; u32 a_aggr;
u32 a_queued; u32 a_queued_hw;
u32 a_queued_sw;
u32 a_completed; u32 a_completed;
u32 a_retries; u32 a_retries;
u32 a_xretries; u32 a_xretries;
......
...@@ -1341,7 +1341,6 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid, ...@@ -1341,7 +1341,6 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
struct list_head bf_head; struct list_head bf_head;
bf->bf_state.bf_type |= BUF_AMPDU; bf->bf_state.bf_type |= BUF_AMPDU;
TX_STAT_INC(txctl->txq->axq_qnum, a_queued);
/* /*
* Do not queue to h/w when any of the following conditions is true: * Do not queue to h/w when any of the following conditions is true:
...@@ -1357,6 +1356,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid, ...@@ -1357,6 +1356,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
* Add this frame to software queue for scheduling later * Add this frame to software queue for scheduling later
* for aggregation. * for aggregation.
*/ */
TX_STAT_INC(txctl->txq->axq_qnum, a_queued_sw);
list_add_tail(&bf->list, &tid->buf_q); list_add_tail(&bf->list, &tid->buf_q);
ath_tx_queue_tid(txctl->txq, tid); ath_tx_queue_tid(txctl->txq, tid);
return; return;
...@@ -1370,6 +1370,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid, ...@@ -1370,6 +1370,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
ath_tx_addto_baw(sc, tid, fi->seqno); ath_tx_addto_baw(sc, tid, fi->seqno);
/* Queue to h/w without aggregation */ /* Queue to h/w without aggregation */
TX_STAT_INC(txctl->txq->axq_qnum, a_queued_hw);
bf->bf_lastbf = bf; bf->bf_lastbf = bf;
ath_buf_set_rate(sc, bf, fi->framelen); ath_buf_set_rate(sc, bf, fi->framelen);
ath_tx_txqaddbuf(sc, txctl->txq, &bf_head); ath_tx_txqaddbuf(sc, txctl->txq, &bf_head);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment