xref: /OK3568_Linux_fs/kernel/drivers/crypto/caam/dpseci-debugfs.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2*4882a593Smuzhiyun /* Copyright 2019 NXP */
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #include <linux/module.h>
5*4882a593Smuzhiyun #include <linux/device.h>
6*4882a593Smuzhiyun #include <linux/debugfs.h>
7*4882a593Smuzhiyun #include "dpseci-debugfs.h"
8*4882a593Smuzhiyun 
dpseci_dbg_fqs_show(struct seq_file * file,void * offset)9*4882a593Smuzhiyun static int dpseci_dbg_fqs_show(struct seq_file *file, void *offset)
10*4882a593Smuzhiyun {
11*4882a593Smuzhiyun 	struct dpaa2_caam_priv *priv = (struct dpaa2_caam_priv *)file->private;
12*4882a593Smuzhiyun 	u32 fqid, fcnt, bcnt;
13*4882a593Smuzhiyun 	int i, err;
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun 	seq_printf(file, "FQ stats for %s:\n", dev_name(priv->dev));
16*4882a593Smuzhiyun 	seq_printf(file, "%s%16s%16s\n",
17*4882a593Smuzhiyun 		   "Rx-VFQID",
18*4882a593Smuzhiyun 		   "Pending frames",
19*4882a593Smuzhiyun 		   "Pending bytes");
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun 	for (i = 0; i <  priv->num_pairs; i++) {
22*4882a593Smuzhiyun 		fqid = priv->rx_queue_attr[i].fqid;
23*4882a593Smuzhiyun 		err = dpaa2_io_query_fq_count(NULL, fqid, &fcnt, &bcnt);
24*4882a593Smuzhiyun 		if (err)
25*4882a593Smuzhiyun 			continue;
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun 		seq_printf(file, "%5d%16u%16u\n", fqid, fcnt, bcnt);
28*4882a593Smuzhiyun 	}
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun 	seq_printf(file, "%s%16s%16s\n",
31*4882a593Smuzhiyun 		   "Tx-VFQID",
32*4882a593Smuzhiyun 		   "Pending frames",
33*4882a593Smuzhiyun 		   "Pending bytes");
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 	for (i = 0; i <  priv->num_pairs; i++) {
36*4882a593Smuzhiyun 		fqid = priv->tx_queue_attr[i].fqid;
37*4882a593Smuzhiyun 		err = dpaa2_io_query_fq_count(NULL, fqid, &fcnt, &bcnt);
38*4882a593Smuzhiyun 		if (err)
39*4882a593Smuzhiyun 			continue;
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun 		seq_printf(file, "%5d%16u%16u\n", fqid, fcnt, bcnt);
42*4882a593Smuzhiyun 	}
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun 	return 0;
45*4882a593Smuzhiyun }
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun DEFINE_SHOW_ATTRIBUTE(dpseci_dbg_fqs);
48*4882a593Smuzhiyun 
dpaa2_dpseci_debugfs_init(struct dpaa2_caam_priv * priv)49*4882a593Smuzhiyun void dpaa2_dpseci_debugfs_init(struct dpaa2_caam_priv *priv)
50*4882a593Smuzhiyun {
51*4882a593Smuzhiyun 	priv->dfs_root = debugfs_create_dir(dev_name(priv->dev), NULL);
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun 	debugfs_create_file("fq_stats", 0444, priv->dfs_root, priv,
54*4882a593Smuzhiyun 			    &dpseci_dbg_fqs_fops);
55*4882a593Smuzhiyun }
56*4882a593Smuzhiyun 
dpaa2_dpseci_debugfs_exit(struct dpaa2_caam_priv * priv)57*4882a593Smuzhiyun void dpaa2_dpseci_debugfs_exit(struct dpaa2_caam_priv *priv)
58*4882a593Smuzhiyun {
59*4882a593Smuzhiyun 	debugfs_remove_recursive(priv->dfs_root);
60*4882a593Smuzhiyun }
61