diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c index 4fb33750505cb34c2deff4255f001552aadf2c2a..d90aa28ec7bd17bbea6aa9d8328ce3e6c6ca97c4 100644 --- a/drivers/net/wireless/ath/wil6210/debugfs.c +++ b/drivers/net/wireless/ath/wil6210/debugfs.c @@ -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'); } } diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 0784ef3d4ce2795b68091cef9353e47d7712239b..c08d041fbe7416132be456295585496365cdc632 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c @@ -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));