]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: hibmcge: Add irq_info file to debugfs
authorJijie Shao <shaojijie@huawei.com>
Mon, 16 Dec 2024 04:05:27 +0000 (12:05 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 18 Dec 2024 04:01:38 +0000 (20:01 -0800)
the driver requested three interrupts: "tx", "rx", "err".
The err interrupt is a summary interrupt. We distinguish
different errors based on the status register and mask.

With "cat /proc/interrupts | grep hibmcge",
we can't distinguish the detailed cause of the error,
so we added this file to debugfs.

the following effects are achieved:
[root@localhost sjj]# cat /sys/kernel/debug/hibmcge/0000\:83\:00.1/irq_info
RX                  : enabled: true , logged: false, count: 0
TX                  : enabled: true , logged: false, count: 0
MAC_MII_FIFO_ERR    : enabled: false, logged: true , count: 0
MAC_PCS_RX_FIFO_ERR : enabled: false, logged: true , count: 0
MAC_PCS_TX_FIFO_ERR : enabled: false, logged: true , count: 0
MAC_APP_RX_FIFO_ERR : enabled: false, logged: true , count: 0
MAC_APP_TX_FIFO_ERR : enabled: false, logged: true , count: 0
SRAM_PARITY_ERR     : enabled: true , logged: true , count: 0
TX_AHB_ERR          : enabled: true , logged: true , count: 0
RX_BUF_AVL          : enabled: true , logged: false, count: 0
REL_BUF_ERR         : enabled: true , logged: true , count: 0
TXCFG_AVL           : enabled: true , logged: false, count: 0
TX_DROP             : enabled: true , logged: false, count: 0
RX_DROP             : enabled: true , logged: false, count: 0
RX_AHB_ERR          : enabled: true , logged: true , count: 0
MAC_FIFO_ERR        : enabled: true , logged: false, count: 0
RBREQ_ERR           : enabled: true , logged: false, count: 0
WE_ERR              : enabled: true , logged: false, count: 0

The irq framework of hibmcge driver also includes tx/rx interrupts.
Therefore, TX and RX are not moved separately form this file.

Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20241216040532.1566229-3-shaojijie@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/hisilicon/hibmcge/hbg_debugfs.c

index 773a6434b1143c7c482744ff2b9951b96ac27ce9..56d8599563c0b1d18623e3a80ab70ed1c915924e 100644 (file)
@@ -55,9 +55,31 @@ static int hbg_dbg_rx_ring(struct seq_file *s, void *unused)
        return 0;
 }
 
+static int hbg_dbg_irq_info(struct seq_file *s, void *unused)
+{
+       struct net_device *netdev = dev_get_drvdata(s->private);
+       struct hbg_priv *priv = netdev_priv(netdev);
+       struct hbg_irq_info *info;
+       u32 i;
+
+       for (i = 0; i < priv->vectors.info_array_len; i++) {
+               info = &priv->vectors.info_array[i];
+               seq_printf(s,
+                          "%-20s: enabled: %-5s, logged: %-5s, count: %llu\n",
+                          info->name,
+                          str_true_false(hbg_hw_irq_is_enabled(priv,
+                                                               info->mask)),
+                          str_true_false(info->need_print),
+                          info->count);
+       }
+
+       return 0;
+}
+
 static const struct hbg_dbg_info hbg_dbg_infos[] = {
        { "tx_ring", hbg_dbg_tx_ring },
        { "rx_ring", hbg_dbg_rx_ring },
+       { "irq_info", hbg_dbg_irq_info },
 };
 
 static void hbg_debugfs_uninit(void *data)