Skip to content

Commit 604f202

Browse files
anprabhu78jgunthorpe
authored andcommitted
RDMA/bnxt_re: Add debugfs info entry for device and resource information
Add a new debugfs info entry that displays device information and non-statistics data using the seq_file interface. This entry shows: - Resource watermarks (peak usage tracking) - Operational counters (CQ resize count) - Doorbell pacing information Link: https://patch.msgid.link/r/[email protected] Signed-off-by: Anantha Prabhu <[email protected]> Signed-off-by: Kalesh AP <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]>
1 parent 9b9e32f commit 604f202

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

drivers/infiniband/hw/bnxt_re/debugfs.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include <linux/debugfs.h>
1010
#include <linux/pci.h>
11+
#include <linux/seq_file.h>
1112
#include <rdma/ib_addr.h>
1213

1314
#include "bnxt_ulp.h"
@@ -314,6 +315,40 @@ static const struct file_operations bnxt_re_cc_config_ops = {
314315
.write = bnxt_re_cc_config_set,
315316
};
316317

318+
static int info_show(struct seq_file *m, void *unused)
319+
{
320+
struct bnxt_re_dev *rdev = m->private;
321+
struct bnxt_re_res_cntrs *res_s = &rdev->stats.res;
322+
323+
seq_puts(m, "Info:\n");
324+
seq_printf(m, "Device Name\t\t: %s\n", dev_name(&rdev->ibdev.dev));
325+
seq_printf(m, "PD Watermark\t\t: %llu\n", res_s->pd_watermark);
326+
seq_printf(m, "AH Watermark\t\t: %llu\n", res_s->ah_watermark);
327+
seq_printf(m, "QP Watermark\t\t: %llu\n", res_s->qp_watermark);
328+
seq_printf(m, "RC QP Watermark\t\t: %llu\n", res_s->rc_qp_watermark);
329+
seq_printf(m, "UD QP Watermark\t\t: %llu\n", res_s->ud_qp_watermark);
330+
seq_printf(m, "SRQ Watermark\t\t: %llu\n", res_s->srq_watermark);
331+
seq_printf(m, "CQ Watermark\t\t: %llu\n", res_s->cq_watermark);
332+
seq_printf(m, "MR Watermark\t\t: %llu\n", res_s->mr_watermark);
333+
seq_printf(m, "MW Watermark\t\t: %llu\n", res_s->mw_watermark);
334+
seq_printf(m, "CQ Resize Count\t\t: %d\n", atomic_read(&res_s->resize_count));
335+
if (rdev->pacing.dbr_pacing) {
336+
seq_printf(m, "DB Pacing Reschedule\t: %llu\n", rdev->stats.pacing.resched);
337+
seq_printf(m, "DB Pacing Complete\t: %llu\n", rdev->stats.pacing.complete);
338+
seq_printf(m, "DB Pacing Alerts\t: %llu\n", rdev->stats.pacing.alerts);
339+
seq_printf(m, "DB FIFO Register\t: 0x%x\n",
340+
readl(rdev->en_dev->bar0 + rdev->pacing.dbr_db_fifo_reg_off));
341+
}
342+
343+
return 0;
344+
}
345+
DEFINE_SHOW_ATTRIBUTE(info);
346+
347+
static void bnxt_re_debugfs_add_info(struct bnxt_re_dev *rdev)
348+
{
349+
debugfs_create_file("info", 0400, rdev->dbg_root, rdev, &info_fops);
350+
}
351+
317352
void bnxt_re_debugfs_add_pdev(struct bnxt_re_dev *rdev)
318353
{
319354
struct pci_dev *pdev = rdev->en_dev->pdev;
@@ -325,6 +360,8 @@ void bnxt_re_debugfs_add_pdev(struct bnxt_re_dev *rdev)
325360
rdev->qp_debugfs = debugfs_create_dir("QPs", rdev->dbg_root);
326361
rdev->cc_config = debugfs_create_dir("cc_config", rdev->dbg_root);
327362

363+
bnxt_re_debugfs_add_info(rdev);
364+
328365
rdev->cc_config_params = kzalloc(sizeof(*cc_params), GFP_KERNEL);
329366

330367
for (i = 0; i < BNXT_RE_CC_PARAM_GEN0; i++) {

0 commit comments

Comments
 (0)