|
@@ -1,166 +0,0 @@
|
1
|
|
---- a/Makefile.am
|
2
|
|
-+++ b/Makefile.am
|
3
|
|
-@@ -13,7 +13,7 @@ ethtool_SOURCES += \
|
4
|
|
- fec_8xx.c ibm_emac.c ixgb.c ixgbe.c natsemi.c \
|
5
|
|
- pcnet32.c realtek.c tg3.c marvell.c vioc.c \
|
6
|
|
- smsc911x.c at76c50x-usb.c sfc.c stmmac.c \
|
7
|
|
-- sfpid.c sfpdiag.c ixgbevf.c
|
8
|
|
-+ sfpid.c sfpdiag.c ixgbevf.c ixp4xx.c
|
9
|
|
- endif
|
10
|
|
-
|
11
|
|
- TESTS = test-cmdline test-features
|
12
|
|
---- a/ethtool.c
|
13
|
|
-+++ b/ethtool.c
|
14
|
|
-@@ -894,6 +894,7 @@ static const struct {
|
15
|
|
- { "ixgb", ixgb_dump_regs },
|
16
|
|
- { "ixgbe", ixgbe_dump_regs },
|
17
|
|
- { "ixgbevf", ixgbevf_dump_regs },
|
18
|
|
-+ { "ixp4xx", ixp4xx_dump_regs },
|
19
|
|
- { "natsemi", natsemi_dump_regs },
|
20
|
|
- { "e100", e100_dump_regs },
|
21
|
|
- { "amd8111e", amd8111e_dump_regs },
|
22
|
|
---- a/internal.h
|
23
|
|
-+++ b/internal.h
|
24
|
|
-@@ -243,6 +243,9 @@ int st_gmac_dump_regs(struct ethtool_drv
|
25
|
|
- /* Et131x ethernet controller */
|
26
|
|
- int et131x_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs);
|
27
|
|
-
|
28
|
|
-+/* Intel IXP4xx internal MAC */
|
29
|
|
-+int ixp4xx_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs);
|
30
|
|
-+
|
31
|
|
- /* Rx flow classification */
|
32
|
|
- int rxclass_parse_ruleopts(struct cmd_context *ctx,
|
33
|
|
- struct ethtool_rx_flow_spec *fsp);
|
34
|
|
---- /dev/null
|
35
|
|
-+++ b/ixp4xx.c
|
36
|
|
-@@ -0,0 +1,130 @@
|
37
|
|
-+/*
|
38
|
|
-+ * Copyright (c) 2006 Christian Hohnstaed <chohnstaedt@innominate.com>
|
39
|
|
-+ * This file is released under the GPLv2
|
40
|
|
-+ */
|
41
|
|
-+
|
42
|
|
-+#include <stdio.h>
|
43
|
|
-+#include "internal.h"
|
44
|
|
-+
|
45
|
|
-+#ifndef BIT
|
46
|
|
-+#define BIT(x) (1<<x)
|
47
|
|
-+#endif
|
48
|
|
-+
|
49
|
|
-+#define TX_CNTRL1_TX_EN BIT(0)
|
50
|
|
-+#define TX_CNTRL1_DUPLEX BIT(1)
|
51
|
|
-+#define TX_CNTRL1_RETRY BIT(2)
|
52
|
|
-+#define TX_CNTRL1_PAD_EN BIT(3)
|
53
|
|
-+#define TX_CNTRL1_FCS_EN BIT(4)
|
54
|
|
-+#define TX_CNTRL1_2DEFER BIT(5)
|
55
|
|
-+#define TX_CNTRL1_RMII BIT(6)
|
56
|
|
-+
|
57
|
|
-+/* TX Control Register 2 */
|
58
|
|
-+#define TX_CNTRL2_RETRIES_MASK 0xf
|
59
|
|
-+
|
60
|
|
-+/* RX Control Register 1 */
|
61
|
|
-+#define RX_CNTRL1_RX_EN BIT(0)
|
62
|
|
-+#define RX_CNTRL1_PADSTRIP_EN BIT(1)
|
63
|
|
-+#define RX_CNTRL1_CRC_EN BIT(2)
|
64
|
|
-+#define RX_CNTRL1_PAUSE_EN BIT(3)
|
65
|
|
-+#define RX_CNTRL1_LOOP_EN BIT(4)
|
66
|
|
-+#define RX_CNTRL1_ADDR_FLTR_EN BIT(5)
|
67
|
|
-+#define RX_CNTRL1_RX_RUNT_EN BIT(6)
|
68
|
|
-+#define RX_CNTRL1_BCAST_DIS BIT(7)
|
69
|
|
-+
|
70
|
|
-+/* Core Control Register */
|
71
|
|
-+#define CORE_RESET BIT(0)
|
72
|
|
-+#define CORE_RX_FIFO_FLUSH BIT(1)
|
73
|
|
-+#define CORE_TX_FIFO_FLUSH BIT(2)
|
74
|
|
-+#define CORE_SEND_JAM BIT(3)
|
75
|
|
-+#define CORE_MDC_EN BIT(4)
|
76
|
|
-+
|
77
|
|
-+#define MAC "%02x:%02x:%02x:%02x:%02x:%02x"
|
78
|
|
-+#define MAC_DATA(d) (d)[0], (d)[1], (d)[2], (d)[3], (d)[4], (d)[5]
|
79
|
|
-+
|
80
|
|
-+int ixp4xx_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs)
|
81
|
|
-+{
|
82
|
|
-+ u8 *data = regs->data;
|
83
|
|
-+
|
84
|
|
-+ fprintf(stdout,
|
85
|
|
-+ "TXctrl: 0x%02x:0x%02x\n"
|
86
|
|
-+ " Enable: %s\n"
|
87
|
|
-+ " Duplex: %s\n"
|
88
|
|
-+ " Retry: %s (%d)\n"
|
89
|
|
-+ " Padding: %s\n"
|
90
|
|
-+ " Frame check: %s\n"
|
91
|
|
-+ " TX deferral: %s\n"
|
92
|
|
-+ " Connection: %s\n"
|
93
|
|
-+ "\n",
|
94
|
|
-+ data[0], data[1],
|
95
|
|
-+ data[0] & TX_CNTRL1_TX_EN ? "yes" : "no",
|
96
|
|
-+ data[0] & TX_CNTRL1_DUPLEX ? "half" : "full",
|
97
|
|
-+ data[0] & TX_CNTRL1_RETRY ? "enabled" : "disabled",
|
98
|
|
-+ data[1] & TX_CNTRL2_RETRIES_MASK,
|
99
|
|
-+ data[0] & TX_CNTRL1_PAD_EN ? "enabled" : "disabled",
|
100
|
|
-+ data[0] & TX_CNTRL1_FCS_EN ? "enabled" : "disabled",
|
101
|
|
-+ data[0] & TX_CNTRL1_2DEFER ? "two-part" : "one-part",
|
102
|
|
-+ data[0] & TX_CNTRL1_RMII ? "RMII" : "Full MII"
|
103
|
|
-+ );
|
104
|
|
-+
|
105
|
|
-+ fprintf(stdout,
|
106
|
|
-+ "RXctrl: 0x%02x\n"
|
107
|
|
-+ " Enable: %s\n"
|
108
|
|
-+ " Pad strip: %s\n"
|
109
|
|
-+ " CRC check: %s\n"
|
110
|
|
-+ " Pause: %s\n"
|
111
|
|
-+ " Loop: %s\n"
|
112
|
|
-+ " Promiscous: %s\n"
|
113
|
|
-+ " Runt frames: %s\n"
|
114
|
|
-+ " Broadcast: %s\n"
|
115
|
|
-+ "\n",
|
116
|
|
-+ data[2],
|
117
|
|
-+ data[2] & RX_CNTRL1_RX_EN ? "yes" : "no",
|
118
|
|
-+ data[2] & RX_CNTRL1_PADSTRIP_EN ? "enabled" : "disabled",
|
119
|
|
-+ data[2] & RX_CNTRL1_CRC_EN ? "enabled" : "disabled",
|
120
|
|
-+ data[2] & RX_CNTRL1_PAUSE_EN ? "enabled" : "disabled",
|
121
|
|
-+ data[2] & RX_CNTRL1_LOOP_EN ? "enabled" : "disabled",
|
122
|
|
-+ data[2] & RX_CNTRL1_ADDR_FLTR_EN ? "disabled" : "enabled",
|
123
|
|
-+ data[2] & RX_CNTRL1_RX_RUNT_EN ? "forward" : "discard",
|
124
|
|
-+ data[2] & RX_CNTRL1_BCAST_DIS ? "disabled" : "enabled"
|
125
|
|
-+ );
|
126
|
|
-+ fprintf(stdout,
|
127
|
|
-+ "Core control: 0x%02x\n"
|
128
|
|
-+ " Core state: %s\n"
|
129
|
|
-+ " RX fifo: %s\n"
|
130
|
|
-+ " TX fifo: %s\n"
|
131
|
|
-+ " Send jam: %s\n"
|
132
|
|
-+ " MDC clock %s\n"
|
133
|
|
-+ "\n",
|
134
|
|
-+ data[32],
|
135
|
|
-+ data[32] & CORE_RESET ? "reset" : "normal operation",
|
136
|
|
-+ data[32] & CORE_RX_FIFO_FLUSH ? "flush" : "ok",
|
137
|
|
-+ data[32] & CORE_TX_FIFO_FLUSH ? "flush" : "ok",
|
138
|
|
-+ data[32] & CORE_SEND_JAM ? "yes" : "no",
|
139
|
|
-+ data[32] & CORE_MDC_EN ? "output" : "input"
|
140
|
|
-+ );
|
141
|
|
-+ fprintf(stdout,
|
142
|
|
-+ "MAC addresses: \n"
|
143
|
|
-+ " Multicast mask: " MAC "\n"
|
144
|
|
-+ " Multicast address: " MAC "\n"
|
145
|
|
-+ " Unicast address: " MAC "\n"
|
146
|
|
-+ "\n",
|
147
|
|
-+ MAC_DATA(data+13), MAC_DATA(data+19), MAC_DATA(data+26)
|
148
|
|
-+ );
|
149
|
|
-+ fprintf(stdout,
|
150
|
|
-+ "Random seed: 0x%02x\n"
|
151
|
|
-+ "Threshold empty: %3d\n"
|
152
|
|
-+ "Threshold full: %3d\n"
|
153
|
|
-+ "TX buffer size: %3d\n"
|
154
|
|
-+ "TX deferral: %3d\n"
|
155
|
|
-+ "RX deferral: %3d\n"
|
156
|
|
-+ "TX two deferral 1: %3d\n"
|
157
|
|
-+ "TX two deferral 2: %3d\n"
|
158
|
|
-+ "Slot time: %3d\n"
|
159
|
|
-+ "Internal clock: %3d\n"
|
160
|
|
-+ "\n",
|
161
|
|
-+ data[4], data[5], data[6], data[7], data[8], data[9],
|
162
|
|
-+ data[10], data[11], data[12], data[25]
|
163
|
|
-+ );
|
164
|
|
-+
|
165
|
|
-+ return 0;
|
166
|
|
-+}
|