drivers/vdpa/mlx5/net/debug.c

Source file repositories/reference/linux-study-clean/drivers/vdpa/mlx5/net/debug.c

File Facts

System
Linux kernel
Corpus path
drivers/vdpa/mlx5/net/debug.c
Extension
.c
Size
3683 bytes
Lines
154
Domain
Driver Families
Bucket
drivers/vdpa
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
/* Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */

#include <linux/debugfs.h>
#include <linux/mlx5/fs.h>
#include "mlx5_vnet.h"

static int tirn_show(struct seq_file *file, void *priv)
{
	struct mlx5_vdpa_net *ndev = file->private;

	seq_printf(file, "0x%x\n", ndev->res.tirn);
	return 0;
}

DEFINE_SHOW_ATTRIBUTE(tirn);

void mlx5_vdpa_remove_tirn(struct mlx5_vdpa_net *ndev)
{
	if (ndev->debugfs)
		debugfs_remove(ndev->res.tirn_dent);
}

void mlx5_vdpa_add_tirn(struct mlx5_vdpa_net *ndev)
{
	ndev->res.tirn_dent = debugfs_create_file("tirn", 0444, ndev->rx_dent,
						  ndev, &tirn_fops);
}

static int rx_flow_table_show(struct seq_file *file, void *priv)
{
	struct mlx5_vdpa_net *ndev = file->private;

	seq_printf(file, "0x%x\n", mlx5_flow_table_id(ndev->rxft));
	return 0;
}

DEFINE_SHOW_ATTRIBUTE(rx_flow_table);

void mlx5_vdpa_remove_rx_flow_table(struct mlx5_vdpa_net *ndev)
{
	if (ndev->debugfs)
		debugfs_remove(ndev->rx_table_dent);
}

void mlx5_vdpa_add_rx_flow_table(struct mlx5_vdpa_net *ndev)
{
	ndev->rx_table_dent = debugfs_create_file("table_id", 0444, ndev->rx_dent,
						  ndev, &rx_flow_table_fops);
}

#if defined(CONFIG_MLX5_VDPA_STEERING_DEBUG)
static int packets_show(struct seq_file *file, void *priv)
{
	struct mlx5_vdpa_counter *counter = file->private;
	u64 packets;
	u64 bytes;
	int err;

	err = mlx5_fc_query(counter->mdev, counter->counter, &packets, &bytes);
	if (err)
		return err;

	seq_printf(file, "0x%llx\n", packets);
	return 0;
}

static int bytes_show(struct seq_file *file, void *priv)
{
	struct mlx5_vdpa_counter *counter = file->private;
	u64 packets;
	u64 bytes;
	int err;

	err = mlx5_fc_query(counter->mdev, counter->counter, &packets, &bytes);
	if (err)
		return err;

	seq_printf(file, "0x%llx\n", bytes);
	return 0;
}

DEFINE_SHOW_ATTRIBUTE(packets);
DEFINE_SHOW_ATTRIBUTE(bytes);

static void add_counter_node(struct mlx5_vdpa_counter *counter,
			     struct dentry *parent)
{
	debugfs_create_file("packets", 0444, parent, counter,
			    &packets_fops);

Annotation

Implementation Notes