Skip to content

Commit

Permalink
IB/qib: Add per-context stats interface
Browse files Browse the repository at this point in the history
This patch adds a debugfs stats interface for per kernel contexts
packet counts.

The code uses the opcode stats count and eliminates the counter in the
context.

Reviewed-by: Dean Luick <dean.luick@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
  • Loading branch information
Mike Marciniszyn authored and Roland Dreier committed Jun 22, 2013
1 parent ddb8876 commit 17db3a9
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions drivers/infiniband/hw/qib/qib_debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,68 @@ static int _opcode_stats_seq_show(struct seq_file *s, void *v)

DEBUGFS_FILE(opcode_stats)

static void *_ctx_stats_seq_start(struct seq_file *s, loff_t *pos)
{
struct qib_ibdev *ibd = (struct qib_ibdev *)s->private;
struct qib_devdata *dd = dd_from_dev(ibd);

if (!*pos)
return SEQ_START_TOKEN;
if (*pos >= dd->first_user_ctxt)
return NULL;
return pos;
}

static void *_ctx_stats_seq_next(struct seq_file *s, void *v, loff_t *pos)
{
struct qib_ibdev *ibd = (struct qib_ibdev *)s->private;
struct qib_devdata *dd = dd_from_dev(ibd);

if (v == SEQ_START_TOKEN)
return pos;

++*pos;
if (*pos >= dd->first_user_ctxt)
return NULL;
return pos;
}

static void _ctx_stats_seq_stop(struct seq_file *s, void *v)
{
/* nothing allocated */
}

static int _ctx_stats_seq_show(struct seq_file *s, void *v)
{
loff_t *spos;
loff_t i, j;
u64 n_packets = 0;
struct qib_ibdev *ibd = (struct qib_ibdev *)s->private;
struct qib_devdata *dd = dd_from_dev(ibd);

if (v == SEQ_START_TOKEN) {
seq_puts(s, "Ctx:npkts\n");
return 0;
}

spos = v;
i = *spos;

if (!dd->rcd[i])
return SEQ_SKIP;

for (j = 0; j < ARRAY_SIZE(dd->rcd[i]->opstats->stats); j++)
n_packets += dd->rcd[i]->opstats->stats[j].n_packets;

if (!n_packets)
return SEQ_SKIP;

seq_printf(s, " %llu:%llu\n", i, n_packets);
return 0;
}

DEBUGFS_FILE(ctx_stats)

void qib_dbg_ibdev_init(struct qib_ibdev *ibd)
{
char name[10];
Expand All @@ -137,6 +199,7 @@ void qib_dbg_ibdev_init(struct qib_ibdev *ibd)
return;
}
DEBUGFS_FILE_CREATE(opcode_stats);
DEBUGFS_FILE_CREATE(ctx_stats);
return;
}

Expand Down

0 comments on commit 17db3a9

Please sign in to comment.