xref: /linux/drivers/net/ethernet/amazon/ena/ena_debugfs.c (revision 8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf)
1 // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
2 /* Copyright (c) Amazon.com, Inc. or its affiliates.
3  * All rights reserved.
4  */
5 
6 #ifdef CONFIG_DEBUG_FS
7 
8 #include <linux/seq_file.h>
9 #include <linux/pci.h>
10 #include "ena_debugfs.h"
11 #include "ena_phc.h"
12 
phc_stats_show(struct seq_file * file,void * priv)13 static int phc_stats_show(struct seq_file *file, void *priv)
14 {
15 	struct ena_adapter *adapter = file->private;
16 
17 	if (!ena_phc_is_active(adapter))
18 		return 0;
19 
20 	seq_printf(file,
21 		   "phc_cnt: %llu\n",
22 		   adapter->ena_dev->phc.stats.phc_cnt);
23 	seq_printf(file,
24 		   "phc_exp: %llu\n",
25 		   adapter->ena_dev->phc.stats.phc_exp);
26 	seq_printf(file,
27 		   "phc_skp: %llu\n",
28 		   adapter->ena_dev->phc.stats.phc_skp);
29 	seq_printf(file,
30 		   "phc_err_dv: %llu\n",
31 		   adapter->ena_dev->phc.stats.phc_err_dv);
32 	seq_printf(file,
33 		   "phc_err_ts: %llu\n",
34 		   adapter->ena_dev->phc.stats.phc_err_ts);
35 
36 	return 0;
37 }
38 
39 DEFINE_SHOW_ATTRIBUTE(phc_stats);
40 
ena_debugfs_init(struct net_device * dev)41 void ena_debugfs_init(struct net_device *dev)
42 {
43 	struct ena_adapter *adapter = netdev_priv(dev);
44 
45 	adapter->debugfs_base =
46 		debugfs_create_dir(dev_name(&adapter->pdev->dev), NULL);
47 
48 	debugfs_create_file("phc_stats",
49 			    0400,
50 			    adapter->debugfs_base,
51 			    adapter,
52 			    &phc_stats_fops);
53 }
54 
ena_debugfs_terminate(struct net_device * dev)55 void ena_debugfs_terminate(struct net_device *dev)
56 {
57 	struct ena_adapter *adapter = netdev_priv(dev);
58 
59 	debugfs_remove_recursive(adapter->debugfs_base);
60 }
61 
62 #endif /* CONFIG_DEBUG_FS */
63