Blame SOURCES/0001-ethtool-add-register-dump-support-for-fjes-driver.patch

3397d6
From 1be465a88eb247b78ddbc3129f53cc547ce8687b Mon Sep 17 00:00:00 2001
3397d6
From: Taku Izumi <izumi.taku@jp.fujitsu.com>
3397d6
Date: Wed, 16 Nov 2016 09:55:32 +0900
3397d6
Subject: [PATCH 1/3] ethtool: add register dump support for fjes driver
3397d6
3397d6
This patch adds the register dump format for FUJITSU Extended
3397d6
Network device like the following:
3397d6
3397d6
   # ethtool -d es0
3397d6
3397d6
0x0000: OWNER_EPID    (Owner EPID)                       0x00000001
3397d6
0x0004: MAX_EP        (Maximum EP)                       0x00000008
3397d6
0x0010: DCTL          (Device Control)                   0x00000000
3397d6
0x0020: CR            (Command request)                  0x80000002
3397d6
0x0024: CS            (Command status)                   0x80000002
3397d6
0x0028: SHSTSAL       (Share status address Low)         0xE8215304
3397d6
0x002C: SHSTSAH       (Share status address High)        0x00000007
3397d6
0x0034: REQBL         (Request Buffer length)            0x00008028
3397d6
0x0038: REQBAL        (Request Buffer Address Low)       0xEB0A0000
3397d6
0x003C: REQBAH        (Request Buffer Address High)      0x00000007
3397d6
0x0044: RESPBL        (Response Buffer Length)           0x00000018
3397d6
0x0048: RESPBAL       (Response Buffer Address Low)      0xE41E1220
3397d6
0x004C: RESPBAH       (Response Buffer Address High)     0x00000007
3397d6
0x0080: IS            (Interrupt status)                 0x00000000
3397d6
0x0084: IMS           (Interrupt mask set)               0x7FE00000
3397d6
0x0088: IMC           (Interrupt mask clear)             0x001F0000
3397d6
0x008C: IG            (Interrupt generator)              0x00010000
3397d6
0x0090: ICTL          (Interrupt control)                0x00000000
3397d6
3397d6
Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
3397d6
Signed-off-by: John W. Linville <linville@tuxdriver.com>
3397d6
(cherry picked from commit acc3d3a32940cdd3325520d212fa94f44b86ed09)
3397d6
---
3397d6
 Makefile.am |  2 +-
3397d6
 ethtool.c   |  1 +
3397d6
 fjes.c      | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3397d6
 internal.h  |  2 ++
3397d6
 4 files changed, 93 insertions(+), 1 deletion(-)
3397d6
 create mode 100644 fjes.c
3397d6
3397d6
diff --git a/Makefile.am b/Makefile.am
3397d6
index de2db2e..edbda57 100644
3397d6
--- a/Makefile.am
3397d6
+++ b/Makefile.am
3397d6
@@ -14,7 +14,7 @@ ethtool_SOURCES += \
3397d6
 		  pcnet32.c realtek.c tg3.c marvell.c vioc.c	\
3397d6
 		  smsc911x.c at76c50x-usb.c sfc.c stmmac.c	\
3397d6
 		  sff-common.c sff-common.h sfpid.c sfpdiag.c	\
3397d6
-		  ixgbevf.c tse.c vmxnet3.c qsfp.c qsfp.h
3397d6
+		  ixgbevf.c tse.c vmxnet3.c qsfp.c qsfp.h fjes.c
3397d6
 endif
3397d6
 
3397d6
 TESTS = test-cmdline test-features
3397d6
diff --git a/ethtool.c b/ethtool.c
3397d6
index 49ac94e..75299c6 100644
3397d6
--- a/ethtool.c
3397d6
+++ b/ethtool.c
3397d6
@@ -1136,6 +1136,7 @@ static const struct {
3397d6
 	{ "et131x", et131x_dump_regs },
3397d6
 	{ "altera_tse", altera_tse_dump_regs },
3397d6
 	{ "vmxnet3", vmxnet3_dump_regs },
3397d6
+	{ "fjes", fjes_dump_regs },
3397d6
 #endif
3397d6
 };
3397d6
 
3397d6
diff --git a/fjes.c b/fjes.c
3397d6
new file mode 100644
3397d6
index 0000000..52f7c28
3397d6
--- /dev/null
3397d6
+++ b/fjes.c
3397d6
@@ -0,0 +1,89 @@
3397d6
+/* Copyright (c) 2016 FUJITSU LIMITED */
3397d6
+#include <stdio.h>
3397d6
+#include "internal.h"
3397d6
+
3397d6
+int fjes_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs)
3397d6
+{
3397d6
+	u32 *regs_buff = (u32 *)regs->data;
3397d6
+
3397d6
+	if (regs->version != 1)
3397d6
+		return -1;
3397d6
+
3397d6
+	/* Information registers */
3397d6
+	fprintf(stdout,
3397d6
+		"0x0000: OWNER_EPID    (Owner EPID)                       0x%08X\n",
3397d6
+		regs_buff[0]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0004: MAX_EP        (Maximum EP)                       0x%08X\n",
3397d6
+		regs_buff[1]);
3397d6
+
3397d6
+	/* Device Control registers */
3397d6
+	fprintf(stdout,
3397d6
+		"0x0010: DCTL          (Device Control)                   0x%08X\n",
3397d6
+		regs_buff[4]);
3397d6
+
3397d6
+	/* Command Control registers */
3397d6
+	fprintf(stdout,
3397d6
+		"0x0020: CR            (Command request)                  0x%08X\n",
3397d6
+		regs_buff[8]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0024: CS            (Command status)                   0x%08X\n",
3397d6
+		regs_buff[9]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0028: SHSTSAL       (Share status address Low)         0x%08X\n",
3397d6
+		regs_buff[10]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x002C: SHSTSAH       (Share status address High)        0x%08X\n",
3397d6
+		regs_buff[11]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0034: REQBL         (Request Buffer length)            0x%08X\n",
3397d6
+		regs_buff[13]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0038: REQBAL        (Request Buffer Address Low)       0x%08X\n",
3397d6
+		regs_buff[14]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x003C: REQBAH        (Request Buffer Address High)      0x%08X\n",
3397d6
+		regs_buff[15]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0044: RESPBL        (Response Buffer Length)           0x%08X\n",
3397d6
+		regs_buff[17]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0048: RESPBAL       (Response Buffer Address Low)      0x%08X\n",
3397d6
+		regs_buff[18]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x004C: RESPBAH       (Response Buffer Address High)     0x%08X\n",
3397d6
+		regs_buff[19]);
3397d6
+
3397d6
+	/* Interrupt Control registers */
3397d6
+	fprintf(stdout,
3397d6
+		"0x0080: IS            (Interrupt status)                 0x%08X\n",
3397d6
+		regs_buff[32]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0084: IMS           (Interrupt mask set)               0x%08X\n",
3397d6
+		regs_buff[33]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0088: IMC           (Interrupt mask clear)             0x%08X\n",
3397d6
+		regs_buff[34]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x008C: IG            (Interrupt generator)              0x%08X\n",
3397d6
+		regs_buff[35]);
3397d6
+
3397d6
+	fprintf(stdout,
3397d6
+		"0x0090: ICTL          (Interrupt control)                0x%08X\n",
3397d6
+		regs_buff[36]);
3397d6
+
3397d6
+	return 0;
3397d6
+}
3397d6
diff --git a/internal.h b/internal.h
3397d6
index 3c08b74..4e658ea 100644
3397d6
--- a/internal.h
3397d6
+++ b/internal.h
3397d6
@@ -348,4 +348,6 @@ void sff8472_show_all(const __u8 *id);
3397d6
 /* QSFP Optics diagnostics */
3397d6
 void sff8636_show_all(const __u8 *id, __u32 eeprom_len);
3397d6
 
3397d6
+/* FUJITSU Extended Socket network device */
3397d6
+int fjes_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs);
3397d6
 #endif /* ETHTOOL_INTERNAL_H__ */
3397d6
-- 
3397d6
1.8.3.1
3397d6