ath9k: More xmit queue debugfs information.
authorBen Greear <greearb@candelatech.com>
Mon, 10 Jan 2011 07:11:50 +0000 (23:11 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 21 Jan 2011 20:32:22 +0000 (15:32 -0500)
To try to figure out why xmit logic hangs.

Signed-off-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/debug.c

index 650f00f59d79a2e337ec83d22bd3d963f7c85451..9e009ccd006941b3debb68e7635ec75a9dde215e 100644 (file)
@@ -679,6 +679,32 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
                PRQLE(tmp, txq_fifo[i]);
        }
 
+       /* Print out more detailed queue-info */
+       for (i = 0; i <= WME_AC_BK; i++) {
+               struct ath_txq *txq = &(sc->tx.txq[i]);
+               struct ath_atx_ac *ac;
+               struct ath_atx_tid *tid;
+               if (len >= size)
+                       goto done;
+               spin_lock_bh(&txq->axq_lock);
+               if (!list_empty(&txq->axq_acq)) {
+                       ac = list_first_entry(&txq->axq_acq, struct ath_atx_ac,
+                                             list);
+                       len += snprintf(buf + len, size - len,
+                                       "txq[%i] first-ac: %p sched: %i\n",
+                                       i, ac, ac->sched);
+                       if (list_empty(&ac->tid_q) || (len >= size))
+                               goto done_for;
+                       tid = list_first_entry(&ac->tid_q, struct ath_atx_tid,
+                                              list);
+                       len += snprintf(buf + len, size - len,
+                                       " first-tid: %p sched: %i paused: %i\n",
+                                       tid, tid->sched, tid->paused);
+               }
+       done_for:
+               spin_unlock_bh(&txq->axq_lock);
+       }
+
 done:
        if (len > size)
                len = size;