wil6210: more debug info for vring
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Mon, 16 Jun 2014 16:37:04 +0000 (19:37 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 19 Jun 2014 19:49:24 +0000 (15:49 -0400)
print used/available counters on debugfs;
print to dmesg when Tx vring becomes empty

This aids with performance investigation

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/wil6210/debugfs.c
drivers/net/wireless/ath/wil6210/txrx.c

index 4fb33750505cb34c2deff4255f001552aadf2c2a..d90aa28ec7bd17bbea6aa9d8328ce3e6c6ca97c4 100644 (file)
@@ -72,11 +72,16 @@ static int wil_vring_debugfs_show(struct seq_file *s, void *data)
                if (vring->va) {
                        int cid = wil->vring2cid_tid[i][0];
                        int tid = wil->vring2cid_tid[i][1];
+                       u32 swhead = vring->swhead;
+                       u32 swtail = vring->swtail;
+                       int used = (vring->size + swhead - swtail)
+                                  % vring->size;
+                       int avail = vring->size - used - 1;
                        char name[10];
                        snprintf(name, sizeof(name), "tx_%2d", i);
 
-                       seq_printf(s, "\n%pM CID %d TID %d\n",
-                                  wil->sta[cid].addr, cid, tid);
+                       seq_printf(s, "\n%pM CID %d TID %d [%3d|%3d]\n",
+                                  wil->sta[cid].addr, cid, tid, used, avail);
                        wil_print_vring(s, wil, name, vring, '_', 'H');
                }
        }
index 0784ef3d4ce2795b68091cef9353e47d7712239b..c08d041fbe7416132be456295585496365cdc632 100644 (file)
@@ -1132,6 +1132,10 @@ int wil_tx_complete(struct wil6210_priv *wil, int ringid)
                        done++;
                }
        }
+
+       if (wil_vring_is_empty(vring))
+               wil_dbg_txrx(wil, "Ring[%2d] empty\n", ringid);
+
        if (wil_vring_avail_tx(vring) > wil_vring_wmark_high(vring))
                netif_tx_wake_all_queues(wil_to_ndev(wil));