From 6002af8edd2ddae7ccde21aac99272ab18f194eb Mon Sep 17 00:00:00 2001 From: juhosg Date: Thu, 15 Jul 2010 13:05:56 +0000 Subject: generic: rtl8366: add debugfs file to show PVIDs git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22206 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../generic/files/drivers/net/phy/rtl8366_smi.c | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'target/linux') diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c index 2b51c58e87..c827cd20ee 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c @@ -520,6 +520,34 @@ static ssize_t rtl8366_read_debugfs_vlan_mc(struct file *file, return simple_read_from_buffer(user_buf, count, ppos, buf, len); } +static ssize_t rtl8366_read_debugfs_pvid(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; + char *buf = smi->buf; + int len = 0; + int i; + + len += snprintf(buf + len, sizeof(smi->buf) - len, "%4s %4s\n", + "port", "pvid"); + + for (i = 0; i < smi->num_ports; i++) { + int pvid; + int err; + + err = rtl8366_get_pvid(smi, i, &pvid); + if (err) + len += snprintf(buf + len, sizeof(smi->buf) - len, + "%4d error\n", i); + else + len += snprintf(buf + len, sizeof(smi->buf) - len, + "%4d %4d\n", i, pvid); + } + + return simple_read_from_buffer(user_buf, count, ppos, buf, len); +} + static ssize_t rtl8366_read_debugfs_reg(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) @@ -634,6 +662,12 @@ static const struct file_operations fops_rtl8366_vlan_mc = { .owner = THIS_MODULE }; +static const struct file_operations fops_rtl8366_pvid = { + .read = rtl8366_read_debugfs_pvid, + .open = rtl8366_debugfs_open, + .owner = THIS_MODULE +}; + static const struct file_operations fops_rtl8366_mibs = { .read = rtl8366_read_debugfs_mibs, .open = rtl8366_debugfs_open, @@ -679,6 +713,14 @@ static void rtl8366_debugfs_init(struct rtl8366_smi *smi) return; } + node = debugfs_create_file("pvid", S_IRUSR, root, smi, + &fops_rtl8366_pvid); + if (!node) { + dev_err(smi->parent, "Creating debugfs file '%s' failed\n", + "pvid"); + return; + } + node = debugfs_create_file("mibs", S_IRUSR, smi->debugfs_root, smi, &fops_rtl8366_mibs); if (!node) -- cgit v1.2.3