diff options
Diffstat (limited to 'target/linux/ipq806x/patches-3.18/706-net-stmmac-create-one-debugfs-dir-per-net-device.patch')
-rw-r--r-- | target/linux/ipq806x/patches-3.18/706-net-stmmac-create-one-debugfs-dir-per-net-device.patch | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/target/linux/ipq806x/patches-3.18/706-net-stmmac-create-one-debugfs-dir-per-net-device.patch b/target/linux/ipq806x/patches-3.18/706-net-stmmac-create-one-debugfs-dir-per-net-device.patch deleted file mode 100644 index 50127fdb08..0000000000 --- a/target/linux/ipq806x/patches-3.18/706-net-stmmac-create-one-debugfs-dir-per-net-device.patch +++ /dev/null @@ -1,171 +0,0 @@ -From df944689d491e6af533173bf2ef448c3dd334f15 Mon Sep 17 00:00:00 2001 -From: Mathieu Olivari <mathieu@codeaurora.org> -Date: Mon, 11 May 2015 15:15:25 -0700 -Subject: [PATCH 6/8] net: stmmac: create one debugfs dir per net-device - -stmmac DebugFS entries are currently global to the driver. As a result, -having more than one stmmac device in the system creates the following -error: -* ERROR stmmaceth, debugfs create directory failed -* stmmac_hw_setup: failed debugFS registration - -This also results in being able to access the debugfs information for -the first registered device only. - -This patch changes the debugfs structure to have one sub-directory per -net-device. Files under "/sys/kernel/debug/stmmaceth" will now show-up -under /sys/kernel/debug/stmmaceth/ethN/. - -Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org> ---- - drivers/net/ethernet/stmicro/stmmac/stmmac.h | 6 ++ - drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 76 ++++++++++++++++------- - 2 files changed, 59 insertions(+), 23 deletions(-) - ---- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h -+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h -@@ -116,6 +116,12 @@ struct stmmac_priv { - int use_riwt; - int irq_wake; - spinlock_t ptp_lock; -+ -+#ifdef CONFIG_DEBUG_FS -+ struct dentry *dbgfs_dir; -+ struct dentry *dbgfs_rings_status; -+ struct dentry *dbgfs_dma_cap; -+#endif - }; - - int stmmac_mdio_unregister(struct net_device *ndev); ---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -119,7 +119,7 @@ static irqreturn_t stmmac_interrupt(int - - #ifdef CONFIG_STMMAC_DEBUG_FS - static int stmmac_init_fs(struct net_device *dev); --static void stmmac_exit_fs(void); -+static void stmmac_exit_fs(struct net_device *dev); - #endif - - #define STMMAC_COAL_TIMER(x) (jiffies + usecs_to_jiffies(x)) -@@ -1879,7 +1879,7 @@ static int stmmac_release(struct net_dev - netif_carrier_off(dev); - - #ifdef CONFIG_STMMAC_DEBUG_FS -- stmmac_exit_fs(); -+ stmmac_exit_fs(dev); - #endif - - stmmac_release_ptp(priv); -@@ -2467,8 +2467,6 @@ static int stmmac_ioctl(struct net_devic - - #ifdef CONFIG_STMMAC_DEBUG_FS - static struct dentry *stmmac_fs_dir; --static struct dentry *stmmac_rings_status; --static struct dentry *stmmac_dma_cap; - - static void sysfs_display_ring(void *head, int size, int extend_desc, - struct seq_file *seq) -@@ -2607,36 +2605,39 @@ static const struct file_operations stmm - - static int stmmac_init_fs(struct net_device *dev) - { -- /* Create debugfs entries */ -- stmmac_fs_dir = debugfs_create_dir(STMMAC_RESOURCE_NAME, NULL); -+ struct stmmac_priv *priv = netdev_priv(dev); -+ -+ /* Create per netdev entries */ -+ priv->dbgfs_dir = debugfs_create_dir(dev->name, stmmac_fs_dir); - -- if (!stmmac_fs_dir || IS_ERR(stmmac_fs_dir)) { -- pr_err("ERROR %s, debugfs create directory failed\n", -- STMMAC_RESOURCE_NAME); -+ if (!priv->dbgfs_dir || IS_ERR(priv->dbgfs_dir)) { -+ pr_err("ERROR %s/%s, debugfs create directory failed\n", -+ STMMAC_RESOURCE_NAME, dev->name); - - return -ENOMEM; - } - - /* Entry to report DMA RX/TX rings */ -- stmmac_rings_status = debugfs_create_file("descriptors_status", -- S_IRUGO, stmmac_fs_dir, dev, -- &stmmac_rings_status_fops); -+ priv->dbgfs_rings_status = -+ debugfs_create_file("descriptors_status", S_IRUGO, -+ priv->dbgfs_dir, dev, -+ &stmmac_rings_status_fops); - -- if (!stmmac_rings_status || IS_ERR(stmmac_rings_status)) { -+ if (!priv->dbgfs_rings_status || IS_ERR(priv->dbgfs_rings_status)) { - pr_info("ERROR creating stmmac ring debugfs file\n"); -- debugfs_remove(stmmac_fs_dir); -+ debugfs_remove_recursive(priv->dbgfs_dir); - - return -ENOMEM; - } - - /* Entry to report the DMA HW features */ -- stmmac_dma_cap = debugfs_create_file("dma_cap", S_IRUGO, stmmac_fs_dir, -- dev, &stmmac_dma_cap_fops); -+ priv->dbgfs_dma_cap = debugfs_create_file("dma_cap", S_IRUGO, -+ priv->dbgfs_dir, -+ dev, &stmmac_dma_cap_fops); - -- if (!stmmac_dma_cap || IS_ERR(stmmac_dma_cap)) { -+ if (!priv->dbgfs_dma_cap || IS_ERR(priv->dbgfs_dma_cap)) { - pr_info("ERROR creating stmmac MMC debugfs file\n"); -- debugfs_remove(stmmac_rings_status); -- debugfs_remove(stmmac_fs_dir); -+ debugfs_remove_recursive(priv->dbgfs_dir); - - return -ENOMEM; - } -@@ -2644,11 +2645,11 @@ static int stmmac_init_fs(struct net_dev - return 0; - } - --static void stmmac_exit_fs(void) -+static void stmmac_exit_fs(struct net_device *dev) - { -- debugfs_remove(stmmac_rings_status); -- debugfs_remove(stmmac_dma_cap); -- debugfs_remove(stmmac_fs_dir); -+ struct stmmac_priv *priv = netdev_priv(dev); -+ -+ debugfs_remove_recursive(priv->dbgfs_dir); - } - #endif /* CONFIG_STMMAC_DEBUG_FS */ - -@@ -3032,6 +3033,21 @@ static int __init stmmac_init(void) - ret = stmmac_register_pci(); - if (ret) - goto err_pci; -+ -+#ifdef CONFIG_STMMAC_DEBUG_FS -+ /* Create debugfs main directory if it doesn't exist yet */ -+ if (stmmac_fs_dir == NULL) { -+ stmmac_fs_dir = debugfs_create_dir(STMMAC_RESOURCE_NAME, NULL); -+ -+ if (!stmmac_fs_dir || IS_ERR(stmmac_fs_dir)) { -+ pr_err("ERROR %s, debugfs create directory failed\n", -+ STMMAC_RESOURCE_NAME); -+ -+ return -ENOMEM; -+ } -+ } -+#endif -+ - return 0; - err_pci: - stmmac_unregister_platform(); -@@ -3042,6 +3058,9 @@ err: - - static void __exit stmmac_exit(void) - { -+#ifdef CONFIG_STMMAC_DEBUG_FS -+ debugfs_remove_recursive(stmmac_fs_dir); -+#endif - stmmac_unregister_platform(); - stmmac_unregister_pci(); - } |