0001
0002
0003
0004 #include <linux/module.h>
0005 #include <linux/device.h>
0006 #include <linux/debugfs.h>
0007 #include "dpseci-debugfs.h"
0008
0009 static int dpseci_dbg_fqs_show(struct seq_file *file, void *offset)
0010 {
0011 struct dpaa2_caam_priv *priv = (struct dpaa2_caam_priv *)file->private;
0012 u32 fqid, fcnt, bcnt;
0013 int i, err;
0014
0015 seq_printf(file, "FQ stats for %s:\n", dev_name(priv->dev));
0016 seq_printf(file, "%s%16s%16s\n",
0017 "Rx-VFQID",
0018 "Pending frames",
0019 "Pending bytes");
0020
0021 for (i = 0; i < priv->num_pairs; i++) {
0022 fqid = priv->rx_queue_attr[i].fqid;
0023 err = dpaa2_io_query_fq_count(NULL, fqid, &fcnt, &bcnt);
0024 if (err)
0025 continue;
0026
0027 seq_printf(file, "%5d%16u%16u\n", fqid, fcnt, bcnt);
0028 }
0029
0030 seq_printf(file, "%s%16s%16s\n",
0031 "Tx-VFQID",
0032 "Pending frames",
0033 "Pending bytes");
0034
0035 for (i = 0; i < priv->num_pairs; i++) {
0036 fqid = priv->tx_queue_attr[i].fqid;
0037 err = dpaa2_io_query_fq_count(NULL, fqid, &fcnt, &bcnt);
0038 if (err)
0039 continue;
0040
0041 seq_printf(file, "%5d%16u%16u\n", fqid, fcnt, bcnt);
0042 }
0043
0044 return 0;
0045 }
0046
0047 DEFINE_SHOW_ATTRIBUTE(dpseci_dbg_fqs);
0048
0049 void dpaa2_dpseci_debugfs_init(struct dpaa2_caam_priv *priv)
0050 {
0051 priv->dfs_root = debugfs_create_dir(dev_name(priv->dev), NULL);
0052
0053 debugfs_create_file("fq_stats", 0444, priv->dfs_root, priv,
0054 &dpseci_dbg_fqs_fops);
0055 }
0056
0057 void dpaa2_dpseci_debugfs_exit(struct dpaa2_caam_priv *priv)
0058 {
0059 debugfs_remove_recursive(priv->dfs_root);
0060 }