Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1711523

[PATCH net-next 06/11] net: dsa: debugfs: add port registers

From Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Newsgroups linux.kernel
Subject [PATCH net-next 06/11] net: dsa: debugfs: add port registers
Date 2017-08-15 00:40 +0200
Message-ID <uewbD-1sJ-9@gated-at.bofh.it> (permalink)
References <uew1Y-1pG-9@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Add a debug filesystem "regs" entry to query a port's hardware registers
through the .get_regs_len and .get_regs_len switch operations.

This is very convenient because it allows one to dump the registers of
DSA links, which are not exposed to userspace.

Here are the registers of a zii-rev-b CPU and DSA ports:

    # pr -mt switch0/port{5,6}/regs
     0: 4e07			     0: 4d04
     1: 403e			     1: 003d
     2: 0000			     2: 0000
     3: 3521			     3: 3521
     4: 0533			     4: 373f
     5: 8000			     5: 0000
     6: 005f			     6: 003f
     7: 002a			     7: 002a
     8: 2080			     8: 2080
     9: 0001			     9: 0001
    10: 0000			    10: 0000
    11: 0020			    11: 0000
    12: 0000			    12: 0000
    13: 0000			    13: 0000
    14: 0000			    14: 0000
    15: 9100			    15: dada
    16: 0000			    16: 0000
    17: 0000			    17: 0000
    18: 0000			    18: 0000
    19: 0000			    19: 00d8
    20: 0000			    20: 0000
    21: 0000			    21: 0000
    22: 0022			    22: 0000
    23: 0000			    23: 0000
    24: 3210			    24: 3210
    25: 7654			    25: 7654
    26: 0000			    26: 0000
    27: 8000			    27: 8000
    28: 0000			    28: 0000
    29: 0000			    29: 0000
    30: 0000			    30: 0000
    31: 0000			    31: 0000

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
 net/dsa/debugfs.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/net/dsa/debugfs.c b/net/dsa/debugfs.c
index 5f91b4423404..012fcf466cc1 100644
--- a/net/dsa/debugfs.c
+++ b/net/dsa/debugfs.c
@@ -109,6 +109,40 @@ static int dsa_debugfs_create_file(struct dsa_switch *ds, struct dentry *dir,
 	return 0;
 }
 
+static void dsa_debugfs_regs_read_count(struct dsa_switch *ds, int id,
+					struct seq_file *seq, int count)
+{
+	u16 data[count * ETH_GSTRING_LEN];
+	struct ethtool_regs regs;
+	int i;
+
+	ds->ops->get_regs(ds, id, &regs, data);
+
+	for (i = 0; i < count / 2; i++)
+		seq_printf(seq, "%2d: %04x\n", i, data[i]);
+}
+
+static int dsa_debugfs_regs_read(struct dsa_switch *ds, int id,
+				 struct seq_file *seq)
+{
+	int count;
+
+	if (!ds->ops->get_regs_len || !ds->ops->get_regs)
+		return -EOPNOTSUPP;
+
+	count = ds->ops->get_regs_len(ds, id);
+	if (count < 0)
+		return count;
+
+	dsa_debugfs_regs_read_count(ds, id, seq, count);
+
+	return 0;
+}
+
+static const struct dsa_debugfs_ops dsa_debugfs_regs_ops = {
+	.read = dsa_debugfs_regs_read,
+};
+
 static void dsa_debugfs_stats_read_count(struct dsa_switch *ds, int id,
 					 struct seq_file *seq, int count)
 {
@@ -219,6 +253,11 @@ static int dsa_debugfs_create_port(struct dsa_switch *ds, int port)
 	if (IS_ERR_OR_NULL(dir))
 		return -EFAULT;
 
+	err = dsa_debugfs_create_file(ds, dir, "regs", port,
+				      &dsa_debugfs_regs_ops);
+	if (err)
+		return err;
+
 	err = dsa_debugfs_create_file(ds, dir, "stats", port,
 				      &dsa_debugfs_stats_ops);
 	if (err)
-- 
2.14.0

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH net-next 00/11] net: dsa: add generic debugfs interface Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:30 +0200
  [PATCH net-next 09/11] net: dsa: debugfs: add port mdb Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:30 +0200
    Re: [PATCH net-next 09/11] net: dsa: debugfs: add port mdb Andrew Lunn <andrew@lunn.ch> - 2017-08-15 01:00 +0200
    Re: [PATCH net-next 09/11] net: dsa: debugfs: add port mdb Florian Fainelli <f.fainelli@gmail.com> - 2017-08-15 19:40 +0200
  [PATCH net-next 01/11] net: dsa: legacy: assign dst->applied Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:30 +0200
    Re: [PATCH net-next 01/11] net: dsa: legacy: assign dst->applied Andrew Lunn <andrew@lunn.ch> - 2017-08-15 01:00 +0200
  [PATCH net-next 08/11] net: dsa: restore mdb dump Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:30 +0200
    Re: [PATCH net-next 08/11] net: dsa: restore mdb dump Andrew Lunn <andrew@lunn.ch> - 2017-08-15 00:50 +0200
    Re: [PATCH net-next 08/11] net: dsa: restore mdb dump Florian Fainelli <f.fainelli@gmail.com> - 2017-08-15 19:40 +0200
  [PATCH net-next 07/11] net: dsa: debugfs: add port fdb Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:40 +0200
    Re: [PATCH net-next 07/11] net: dsa: debugfs: add port fdb Andrew Lunn <andrew@lunn.ch> - 2017-08-15 00:50 +0200
    Re: [PATCH net-next 07/11] net: dsa: debugfs: add port fdb Florian Fainelli <f.fainelli@gmail.com> - 2017-08-15 19:40 +0200
  [PATCH net-next 06/11] net: dsa: debugfs: add port registers Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:40 +0200
    Re: [PATCH net-next 06/11] net: dsa: debugfs: add port registers Andrew Lunn <andrew@lunn.ch> - 2017-08-15 00:50 +0200
    RE: [PATCH net-next 06/11] net: dsa: debugfs: add port registers <Woojung.Huh@microchip.com> - 2017-08-15 18:30 +0200
    Re: [PATCH net-next 06/11] net: dsa: debugfs: add port registers Florian Fainelli <f.fainelli@gmail.com> - 2017-08-15 19:40 +0200
  [PATCH net-next 05/11] net: dsa: debugfs: add port stats Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:40 +0200
    Re: [PATCH net-next 05/11] net: dsa: debugfs: add port stats Andrew Lunn <andrew@lunn.ch> - 2017-08-15 00:50 +0200
    Re: [PATCH net-next 05/11] net: dsa: debugfs: add port stats Florian Fainelli <f.fainelli@gmail.com> - 2017-08-15 19:40 +0200
  [PATCH net-next 02/11] net: dsa: add debugfs interface Vivien Didelot <vivien.didelot@savoirfairelinux.com> - 2017-08-15 00:40 +0200
    Re: [PATCH net-next 02/11] net: dsa: add debugfs interface Florian Fainelli <f.fainelli@gmail.com> - 2017-08-15 19:30 +0200
  Re: [PATCH net-next 00/11] net: dsa: add generic debugfs interface Florian Fainelli <f.fainelli@gmail.com> - 2017-08-19 00:00 +0200

csiph-web