static int wil_vring_debugfs_show(struct seq_file *s, void *data) { uint i; struct wil6210_priv *wil = s->private; wil_print_vring(s, wil, "rx", &wil->vring_rx, 'S', '_'); for (i = 0; i < ARRAY_SIZE(wil->vring_tx); i++) { struct vring *vring = &wil->vring_tx[i]; struct vring_tx_data *txdata = &wil->vring_tx_data[i]; 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]; char sidle[10]; /* performance monitoring */ cycles_t now = get_cycles(); uint64_t idle = txdata->idle * 100; uint64_t total = now - txdata->begin; if (total != 0) { do_div(idle, total); snprintf(sidle, sizeof(sidle), "%3d%%", (int)idle); } else { snprintf(sidle, sizeof(sidle), "N/A"); } txdata->begin = now; txdata->idle = 0ULL; snprintf(name, sizeof(name), "tx_%2d", i); if (cid < WIL6210_MAX_CID) seq_printf(s, "\n%pM CID %d TID %d 1x%s BACK([%u] %u TU A%s) [%3d|%3d] idle %s\n", wil->sta[cid].addr, cid, tid, txdata->dot1x_open ? "+" : "-", txdata->agg_wsize, txdata->agg_timeout, txdata->agg_amsdu ? "+" : "-", used, avail, sidle); else seq_printf(s, "\nBroadcast 1x%s [%3d|%3d] idle %s\n", txdata->dot1x_open ? "+" : "-", used, avail, sidle); wil_print_vring(s, wil, name, vring, '_', 'H'); } } return 0; }
static int wil_vring_debugfs_show(struct seq_file *s, void *data) { uint i; struct wil6210_priv *wil = s->private; wil_print_vring(s, wil, "rx", &wil->vring_rx); for (i = 0; i < ARRAY_SIZE(wil->vring_tx); i++) { struct vring *vring = &(wil->vring_tx[i]); if (vring->va) { char name[10]; snprintf(name, sizeof(name), "tx_%2d", i); wil_print_vring(s, wil, name, vring); } } return 0; }
static int wil_vring_debugfs_show(struct seq_file *s, void *data) { uint i; struct wil6210_priv *wil = s->private; wil_print_vring(s, wil, "rx", &wil->vring_rx, 'S', '_'); for (i = 0; i < ARRAY_SIZE(wil->vring_tx); i++) { struct vring *vring = &wil->vring_tx[i]; struct vring_tx_data *txdata = &wil->vring_tx_data[i]; 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]; /* performance monitoring */ cycles_t now = get_cycles(); cycles_t idle = txdata->idle * 100; cycles_t total = now - txdata->begin; do_div(idle, total); txdata->begin = now; txdata->idle = 0ULL; snprintf(name, sizeof(name), "tx_%2d", i); seq_printf(s, "\n%pM CID %d TID %d [%3d|%3d] idle %3d%%\n", wil->sta[cid].addr, cid, tid, used, avail, (int)idle); wil_print_vring(s, wil, name, vring, '_', 'H'); } } return 0; }