mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
net: hibmcge: Add irq_info file to debugfs
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>
This commit is contained in:
parent
86331b5102
commit
df491c419b
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user