[packages] ethtool: update to 3.4
[openwrt/svn-archive/archive.git] / net / ethtool / patches / 100-ixp4xx.patch
1 --- a/Makefile.am
2 +++ b/Makefile.am
3 @@ -9,7 +9,7 @@ ethtool_SOURCES = ethtool.c ethtool-copy
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 - rxclass.c sfpid.c
8 + rxclass.c sfpid.c ixp4xx.c
9
10 TESTS = test-cmdline test-features
11 check_PROGRAMS = test-cmdline test-features
12 --- a/Makefile.in
13 +++ b/Makefile.in
14 @@ -60,7 +60,7 @@ am_ethtool_OBJECTS = ethtool.$(OBJEXT) a
15 realtek.$(OBJEXT) tg3.$(OBJEXT) marvell.$(OBJEXT) \
16 vioc.$(OBJEXT) smsc911x.$(OBJEXT) at76c50x-usb.$(OBJEXT) \
17 sfc.$(OBJEXT) stmmac.$(OBJEXT) rxclass.$(OBJEXT) \
18 - sfpid.$(OBJEXT)
19 + sfpid.$(OBJEXT) ixp4xx.$(OBJEXT)
20 ethtool_OBJECTS = $(am_ethtool_OBJECTS)
21 ethtool_LDADD = $(LDADD)
22 am__objects_1 = test_cmdline-ethtool.$(OBJEXT) \
23 @@ -247,7 +247,7 @@ ethtool_SOURCES = ethtool.c ethtool-copy
24 fec_8xx.c ibm_emac.c ixgb.c ixgbe.c natsemi.c \
25 pcnet32.c realtek.c tg3.c marvell.c vioc.c \
26 smsc911x.c at76c50x-usb.c sfc.c stmmac.c \
27 - rxclass.c sfpid.c
28 + rxclass.c sfpid.c ixp4xx.c
29
30 test_cmdline_SOURCES = test-cmdline.c test-common.c $(ethtool_SOURCES)
31 test_cmdline_CFLAGS = -DTEST_ETHTOOL
32 @@ -389,6 +389,7 @@ distclean-compile:
33 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfpid.Po@am__quote@
34 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smsc911x.Po@am__quote@
35 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stmmac.Po@am__quote@
36 +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ixp4xx.Po@am__quote@
37 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cmdline-amd8111e.Po@am__quote@
38 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cmdline-at76c50x-usb.Po@am__quote@
39 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cmdline-de2104x.Po@am__quote@
40 --- a/ethtool.c
41 +++ b/ethtool.c
42 @@ -826,7 +826,7 @@ static const struct {
43 { "e1000e", e1000_dump_regs },
44 { "igb", igb_dump_regs },
45 { "ixgb", ixgb_dump_regs },
46 - { "ixgbe", ixgbe_dump_regs },
47 + { "ixp4xx", ixp4xx_dump_regs },
48 { "natsemi", natsemi_dump_regs },
49 { "e100", e100_dump_regs },
50 { "amd8111e", amd8111e_dump_regs },
51 @@ -842,6 +842,7 @@ static const struct {
52 { "sfc", sfc_dump_regs },
53 { "st_mac100", st_mac100_dump_regs },
54 { "st_gmac", st_gmac_dump_regs },
55 + { "ixgbe", ixgbe_dump_regs },
56 };
57
58 void dump_hex(FILE *file, const u8 *data, int len, int offset)
59 --- a/internal.h
60 +++ b/internal.h
61 @@ -238,6 +238,9 @@ int st_mac100_dump_regs(struct ethtool_d
62 struct ethtool_regs *regs);
63 int st_gmac_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs);
64
65 +/* Intel IXP4xx internal MAC */
66 +int ixp4xx_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs);
67 +
68 /* Rx flow classification */
69 int rxclass_parse_ruleopts(struct cmd_context *ctx,
70 struct ethtool_rx_flow_spec *fsp);
71 --- /dev/null
72 +++ b/ixp4xx.c
73 @@ -0,0 +1,130 @@
74 +/*
75 + * Copyright (c) 2006 Christian Hohnstaed <chohnstaedt@innominate.com>
76 + * This file is released under the GPLv2
77 + */
78 +
79 +#include <stdio.h>
80 +#include "internal.h"
81 +
82 +#ifndef BIT
83 +#define BIT(x) (1<<x)
84 +#endif
85 +
86 +#define TX_CNTRL1_TX_EN BIT(0)
87 +#define TX_CNTRL1_DUPLEX BIT(1)
88 +#define TX_CNTRL1_RETRY BIT(2)
89 +#define TX_CNTRL1_PAD_EN BIT(3)
90 +#define TX_CNTRL1_FCS_EN BIT(4)
91 +#define TX_CNTRL1_2DEFER BIT(5)
92 +#define TX_CNTRL1_RMII BIT(6)
93 +
94 +/* TX Control Register 2 */
95 +#define TX_CNTRL2_RETRIES_MASK 0xf
96 +
97 +/* RX Control Register 1 */
98 +#define RX_CNTRL1_RX_EN BIT(0)
99 +#define RX_CNTRL1_PADSTRIP_EN BIT(1)
100 +#define RX_CNTRL1_CRC_EN BIT(2)
101 +#define RX_CNTRL1_PAUSE_EN BIT(3)
102 +#define RX_CNTRL1_LOOP_EN BIT(4)
103 +#define RX_CNTRL1_ADDR_FLTR_EN BIT(5)
104 +#define RX_CNTRL1_RX_RUNT_EN BIT(6)
105 +#define RX_CNTRL1_BCAST_DIS BIT(7)
106 +
107 +/* Core Control Register */
108 +#define CORE_RESET BIT(0)
109 +#define CORE_RX_FIFO_FLUSH BIT(1)
110 +#define CORE_TX_FIFO_FLUSH BIT(2)
111 +#define CORE_SEND_JAM BIT(3)
112 +#define CORE_MDC_EN BIT(4)
113 +
114 +#define MAC "%02x:%02x:%02x:%02x:%02x:%02x"
115 +#define MAC_DATA(d) (d)[0], (d)[1], (d)[2], (d)[3], (d)[4], (d)[5]
116 +
117 +int ixp4xx_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs)
118 +{
119 + u8 *data = regs->data;
120 +
121 + fprintf(stdout,
122 + "TXctrl: 0x%02x:0x%02x\n"
123 + " Enable: %s\n"
124 + " Duplex: %s\n"
125 + " Retry: %s (%d)\n"
126 + " Padding: %s\n"
127 + " Frame check: %s\n"
128 + " TX deferral: %s\n"
129 + " Connection: %s\n"
130 + "\n",
131 + data[0], data[1],
132 + data[0] & TX_CNTRL1_TX_EN ? "yes" : "no",
133 + data[0] & TX_CNTRL1_DUPLEX ? "half" : "full",
134 + data[0] & TX_CNTRL1_RETRY ? "enabled" : "disabled",
135 + data[1] & TX_CNTRL2_RETRIES_MASK,
136 + data[0] & TX_CNTRL1_PAD_EN ? "enabled" : "disabled",
137 + data[0] & TX_CNTRL1_FCS_EN ? "enabled" : "disabled",
138 + data[0] & TX_CNTRL1_2DEFER ? "two-part" : "one-part",
139 + data[0] & TX_CNTRL1_RMII ? "RMII" : "Full MII"
140 + );
141 +
142 + fprintf(stdout,
143 + "RXctrl: 0x%02x\n"
144 + " Enable: %s\n"
145 + " Pad strip: %s\n"
146 + " CRC check: %s\n"
147 + " Pause: %s\n"
148 + " Loop: %s\n"
149 + " Promiscous: %s\n"
150 + " Runt frames: %s\n"
151 + " Broadcast: %s\n"
152 + "\n",
153 + data[2],
154 + data[2] & RX_CNTRL1_RX_EN ? "yes" : "no",
155 + data[2] & RX_CNTRL1_PADSTRIP_EN ? "enabled" : "disabled",
156 + data[2] & RX_CNTRL1_CRC_EN ? "enabled" : "disabled",
157 + data[2] & RX_CNTRL1_PAUSE_EN ? "enabled" : "disabled",
158 + data[2] & RX_CNTRL1_LOOP_EN ? "enabled" : "disabled",
159 + data[2] & RX_CNTRL1_ADDR_FLTR_EN ? "disabled" : "enabled",
160 + data[2] & RX_CNTRL1_RX_RUNT_EN ? "forward" : "discard",
161 + data[2] & RX_CNTRL1_BCAST_DIS ? "disabled" : "enabled"
162 + );
163 + fprintf(stdout,
164 + "Core control: 0x%02x\n"
165 + " Core state: %s\n"
166 + " RX fifo: %s\n"
167 + " TX fifo: %s\n"
168 + " Send jam: %s\n"
169 + " MDC clock %s\n"
170 + "\n",
171 + data[32],
172 + data[32] & CORE_RESET ? "reset" : "normal operation",
173 + data[32] & CORE_RX_FIFO_FLUSH ? "flush" : "ok",
174 + data[32] & CORE_TX_FIFO_FLUSH ? "flush" : "ok",
175 + data[32] & CORE_SEND_JAM ? "yes" : "no",
176 + data[32] & CORE_MDC_EN ? "output" : "input"
177 + );
178 + fprintf(stdout,
179 + "MAC addresses: \n"
180 + " Multicast mask: " MAC "\n"
181 + " Multicast address: " MAC "\n"
182 + " Unicast address: " MAC "\n"
183 + "\n",
184 + MAC_DATA(data+13), MAC_DATA(data+19), MAC_DATA(data+26)
185 + );
186 + fprintf(stdout,
187 + "Random seed: 0x%02x\n"
188 + "Threshold empty: %3d\n"
189 + "Threshold full: %3d\n"
190 + "TX buffer size: %3d\n"
191 + "TX deferral: %3d\n"
192 + "RX deferral: %3d\n"
193 + "TX two deferral 1: %3d\n"
194 + "TX two deferral 2: %3d\n"
195 + "Slot time: %3d\n"
196 + "Internal clock: %3d\n"
197 + "\n",
198 + data[4], data[5], data[6], data[7], data[8], data[9],
199 + data[10], data[11], data[12], data[25]
200 + );
201 +
202 + return 0;
203 +}