Commit 19b85f1b authored by Tariq Toukan's avatar Tariq Toukan Committed by Jakub Kicinski

net/mlx5e: debugfs, Add reset option for command interface stats

Resetting stats just before some test/debug case allows us to eliminate
out the impact of previous commands. Useful in particular for the
average latency calculation.

The average_write() callback was unreachable, as "average" is a
read-only file. Extend, rename,  and use it for a newly exposed
write-only "reset" file.
Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
Reviewed-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
Reviewed-by: default avatarGal Pressman <gal@nvidia.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240402133043.56322-6-tariqt@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 27ea84ab
...@@ -143,8 +143,8 @@ static ssize_t average_read(struct file *filp, char __user *buf, size_t count, ...@@ -143,8 +143,8 @@ static ssize_t average_read(struct file *filp, char __user *buf, size_t count,
return simple_read_from_buffer(buf, count, pos, tbuf, ret); return simple_read_from_buffer(buf, count, pos, tbuf, ret);
} }
static ssize_t average_write(struct file *filp, const char __user *buf, static ssize_t reset_write(struct file *filp, const char __user *buf,
size_t count, loff_t *pos) size_t count, loff_t *pos)
{ {
struct mlx5_cmd_stats *stats; struct mlx5_cmd_stats *stats;
...@@ -152,6 +152,11 @@ static ssize_t average_write(struct file *filp, const char __user *buf, ...@@ -152,6 +152,11 @@ static ssize_t average_write(struct file *filp, const char __user *buf,
spin_lock_irq(&stats->lock); spin_lock_irq(&stats->lock);
stats->sum = 0; stats->sum = 0;
stats->n = 0; stats->n = 0;
stats->failed = 0;
stats->failed_mbox_status = 0;
stats->last_failed_errno = 0;
stats->last_failed_mbox_status = 0;
stats->last_failed_syndrome = 0;
spin_unlock_irq(&stats->lock); spin_unlock_irq(&stats->lock);
*pos += count; *pos += count;
...@@ -159,11 +164,16 @@ static ssize_t average_write(struct file *filp, const char __user *buf, ...@@ -159,11 +164,16 @@ static ssize_t average_write(struct file *filp, const char __user *buf,
return count; return count;
} }
static const struct file_operations stats_fops = { static const struct file_operations reset_fops = {
.owner = THIS_MODULE,
.open = simple_open,
.write = reset_write,
};
static const struct file_operations average_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = simple_open, .open = simple_open,
.read = average_read, .read = average_read,
.write = average_write,
}; };
static ssize_t slots_read(struct file *filp, char __user *buf, size_t count, static ssize_t slots_read(struct file *filp, char __user *buf, size_t count,
...@@ -228,8 +238,10 @@ void mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev) ...@@ -228,8 +238,10 @@ void mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev)
continue; continue;
stats->root = debugfs_create_dir(namep, *cmd); stats->root = debugfs_create_dir(namep, *cmd);
debugfs_create_file("reset", 0200, stats->root, stats,
&reset_fops);
debugfs_create_file("average", 0400, stats->root, stats, debugfs_create_file("average", 0400, stats->root, stats,
&stats_fops); &average_fops);
debugfs_create_u64("n", 0400, stats->root, &stats->n); debugfs_create_u64("n", 0400, stats->root, &stats->n);
debugfs_create_u64("failed", 0400, stats->root, &stats->failed); debugfs_create_u64("failed", 0400, stats->root, &stats->failed);
debugfs_create_u64("failed_mbox_status", 0400, stats->root, debugfs_create_u64("failed_mbox_status", 0400, stats->root,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment