xref: /aosp_15_r20/external/ethtool/igc.c (revision 1b481fc3bb1b45d4cf28d1ec12969dc1055f555d)
1*1b481fc3SMaciej Żenczykowski /* Copyright (c) 2020 Intel Corporation */
2*1b481fc3SMaciej Żenczykowski #include <stdio.h>
3*1b481fc3SMaciej Żenczykowski #include "internal.h"
4*1b481fc3SMaciej Żenczykowski 
5*1b481fc3SMaciej Żenczykowski #define RAH_RAH					0x0000FFFF
6*1b481fc3SMaciej Żenczykowski #define RAH_ASEL				0x00010000
7*1b481fc3SMaciej Żenczykowski #define RAH_QSEL				0x000C0000
8*1b481fc3SMaciej Żenczykowski #define RAH_QSEL_EN				0x10000000
9*1b481fc3SMaciej Żenczykowski #define RAH_AV					0x80000000
10*1b481fc3SMaciej Żenczykowski #define RCTL_RXEN				0x00000002
11*1b481fc3SMaciej Żenczykowski #define RCTL_SBP				0x00000004
12*1b481fc3SMaciej Żenczykowski #define RCTL_UPE				0x00000008
13*1b481fc3SMaciej Żenczykowski #define RCTL_MPE				0x00000010
14*1b481fc3SMaciej Żenczykowski #define RCTL_LPE				0x00000020
15*1b481fc3SMaciej Żenczykowski #define RCTL_LBM				0x000000C0
16*1b481fc3SMaciej Żenczykowski #define RCTL_LBM_PHY				0x00000000
17*1b481fc3SMaciej Żenczykowski #define RCTL_LBM_MAC				0x00000040
18*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL				0x00000300
19*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL_MULTICAST			0x00000000
20*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL_UNICAST			0x00000100
21*1b481fc3SMaciej Żenczykowski #define RCTL_HSEL_BOTH				0x00000200
22*1b481fc3SMaciej Żenczykowski #define RCTL_MO					0x00003000
23*1b481fc3SMaciej Żenczykowski #define RCTL_MO_47_36				0x00000000
24*1b481fc3SMaciej Żenczykowski #define RCTL_MO_43_32				0x00001000
25*1b481fc3SMaciej Żenczykowski #define RCTL_MO_39_28				0x00002000
26*1b481fc3SMaciej Żenczykowski #define RCTL_BAM				0x00008000
27*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE				0x00030000
28*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE_2048				0x00000000
29*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE_1024				0x00010000
30*1b481fc3SMaciej Żenczykowski #define RCTL_BSIZE_512				0x00020000
31*1b481fc3SMaciej Żenczykowski #define RCTL_VFE				0x00040000
32*1b481fc3SMaciej Żenczykowski #define RCTL_CFIEN				0x00080000
33*1b481fc3SMaciej Żenczykowski #define RCTL_CFI				0x00100000
34*1b481fc3SMaciej Żenczykowski #define RCTL_PSP				0x00200000
35*1b481fc3SMaciej Żenczykowski #define RCTL_DPF				0x00400000
36*1b481fc3SMaciej Żenczykowski #define RCTL_PMCF				0x00800000
37*1b481fc3SMaciej Żenczykowski #define RCTL_SECRC				0x04000000
38*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP0QSEL				0x00000003
39*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP0PBSEL			0x00000004
40*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP0V				0x00000008
41*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP1QSEL				0x00000030
42*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP1PBSEL			0x00000040
43*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP1V				0x00000080
44*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP2QSEL				0x00000300
45*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP2PBSEL			0x00000400
46*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP2V				0x00000800
47*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP3QSEL				0x00003000
48*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP3PBSEL			0x00004000
49*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP3V				0x00008000
50*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP4QSEL				0x00030000
51*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP4PBSEL			0x00040000
52*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP4V				0x00080000
53*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP5QSEL				0x00300000
54*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP5PBSEL			0x00400000
55*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP5V				0x00800000
56*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP6QSEL				0x03000000
57*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP6PBSEL			0x04000000
58*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP6V				0x08000000
59*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP7QSEL				0x30000000
60*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP7PBSEL			0x40000000
61*1b481fc3SMaciej Żenczykowski #define VLANPQF_VLANP7V				0x80000000
62*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE				0x0000FFFF
63*1b481fc3SMaciej Żenczykowski #define ETQF_QUEUE				0x00070000
64*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE_LEN				0x01F00000
65*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE_LEN_EN			0x02000000
66*1b481fc3SMaciej Żenczykowski #define ETQF_FILTER_EN				0x04000000
67*1b481fc3SMaciej Żenczykowski #define ETQF_IMMEDIATE_INTR			0x20000000
68*1b481fc3SMaciej Żenczykowski #define ETQF_1588_TIMESTAMP			0x40000000
69*1b481fc3SMaciej Żenczykowski #define ETQF_QUEUE_EN				0x80000000
70*1b481fc3SMaciej Żenczykowski 
71*1b481fc3SMaciej Żenczykowski #define RAH_QSEL_SHIFT				18
72*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP1QSEL_SHIFT			4
73*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP2QSEL_SHIFT			8
74*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP3QSEL_SHIFT			12
75*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP4QSEL_SHIFT			16
76*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP5QSEL_SHIFT			20
77*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP6QSEL_SHIFT			24
78*1b481fc3SMaciej Żenczykowski #define VLANPQF_VP7QSEL_SHIFT			28
79*1b481fc3SMaciej Żenczykowski #define ETQF_QUEUE_SHIFT			16
80*1b481fc3SMaciej Żenczykowski #define ETQF_ETYPE_LEN_SHIFT			20
81*1b481fc3SMaciej Żenczykowski 
bit_to_boolean(u32 val)82*1b481fc3SMaciej Żenczykowski static const char *bit_to_boolean(u32 val)
83*1b481fc3SMaciej Żenczykowski {
84*1b481fc3SMaciej Żenczykowski 	return val ? "yes" : "no";
85*1b481fc3SMaciej Żenczykowski }
86*1b481fc3SMaciej Żenczykowski 
bit_to_enable(u32 val)87*1b481fc3SMaciej Żenczykowski static const char *bit_to_enable(u32 val)
88*1b481fc3SMaciej Żenczykowski {
89*1b481fc3SMaciej Żenczykowski 	return val ? "enabled" : "disabled";
90*1b481fc3SMaciej Żenczykowski }
91*1b481fc3SMaciej Żenczykowski 
bit_to_prio(u32 val)92*1b481fc3SMaciej Żenczykowski static const char *bit_to_prio(u32 val)
93*1b481fc3SMaciej Żenczykowski {
94*1b481fc3SMaciej Żenczykowski 	return val ? "low" : "high";
95*1b481fc3SMaciej Żenczykowski }
96*1b481fc3SMaciej Żenczykowski 
igc_dump_regs(struct ethtool_drvinfo * info __maybe_unused,struct ethtool_regs * regs)97*1b481fc3SMaciej Żenczykowski int igc_dump_regs(struct ethtool_drvinfo *info __maybe_unused,
98*1b481fc3SMaciej Żenczykowski 		  struct ethtool_regs *regs)
99*1b481fc3SMaciej Żenczykowski {
100*1b481fc3SMaciej Żenczykowski 	u32 reg;
101*1b481fc3SMaciej Żenczykowski 	int offset, i;
102*1b481fc3SMaciej Żenczykowski 	u32 *regs_buff = (u32 *)regs->data;
103*1b481fc3SMaciej Żenczykowski 	u8 version = (u8)(regs->version >> 24);
104*1b481fc3SMaciej Żenczykowski 
105*1b481fc3SMaciej Żenczykowski 	if (version != 2)
106*1b481fc3SMaciej Żenczykowski 		return -1;
107*1b481fc3SMaciej Żenczykowski 
108*1b481fc3SMaciej Żenczykowski 	for (offset = 0; offset < 24; offset++) {
109*1b481fc3SMaciej Żenczykowski 		reg = regs_buff[offset];
110*1b481fc3SMaciej Żenczykowski 		printf("%04d: 0x%08X\n", offset, reg);
111*1b481fc3SMaciej Żenczykowski 	}
112*1b481fc3SMaciej Żenczykowski 
113*1b481fc3SMaciej Żenczykowski 	offset = 24;
114*1b481fc3SMaciej Żenczykowski 
115*1b481fc3SMaciej Żenczykowski 	reg = regs_buff[offset];
116*1b481fc3SMaciej Żenczykowski 	printf("%04d: RCTL (Receive Control Register)              \n"
117*1b481fc3SMaciej Żenczykowski 	       "    Receiver:                                    %s\n"
118*1b481fc3SMaciej Żenczykowski 	       "    Stop Bad Packets:                            %s\n"
119*1b481fc3SMaciej Żenczykowski 	       "    Unicast Promiscuous:                         %s\n"
120*1b481fc3SMaciej Żenczykowski 	       "    Multicast Promiscuous:                       %s\n"
121*1b481fc3SMaciej Żenczykowski 	       "    Long Packet Reception:                       %s\n"
122*1b481fc3SMaciej Żenczykowski 	       "    Loopback Model:                              %s\n"
123*1b481fc3SMaciej Żenczykowski 	       "    Hash Select for MTA:                         %s\n"
124*1b481fc3SMaciej Żenczykowski 	       "    Multicast/Unicast Table Offset:              %s\n"
125*1b481fc3SMaciej Żenczykowski 	       "    Broadcast Accept Mode:                       %s\n"
126*1b481fc3SMaciej Żenczykowski 	       "    Receive Buffer Size:                         %s\n"
127*1b481fc3SMaciej Żenczykowski 	       "    VLAN Filter:                                 %s\n"
128*1b481fc3SMaciej Żenczykowski 	       "    Canonical Form Indicator:                    %s\n"
129*1b481fc3SMaciej Żenczykowski 	       "    Canonical Form Indicator Bit:                %s\n"
130*1b481fc3SMaciej Żenczykowski 	       "    Pad Small Receive Packets:                   %s\n"
131*1b481fc3SMaciej Żenczykowski 	       "    Discard Pause Frames:                        %s\n"
132*1b481fc3SMaciej Żenczykowski 	       "    Pass MAC Control Frames:                     %s\n"
133*1b481fc3SMaciej Żenczykowski 	       "    Strip Ethernet CRC:                          %s\n",
134*1b481fc3SMaciej Żenczykowski 	       offset,
135*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_RXEN),
136*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_SBP),
137*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_UPE),
138*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_MPE),
139*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_LPE),
140*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_LBM) == RCTL_LBM_PHY ? "PHY" :
141*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_LBM) == RCTL_LBM_MAC ? "MAC" :
142*1b481fc3SMaciej Żenczykowski 	       "undefined",
143*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_HSEL) == RCTL_HSEL_MULTICAST ? "multicast only" :
144*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_HSEL) == RCTL_HSEL_UNICAST ? "unicast only" :
145*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_HSEL) == RCTL_HSEL_BOTH ? "multicast and unicast" :
146*1b481fc3SMaciej Żenczykowski 	       "reserved",
147*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_MO) == RCTL_MO_47_36 ? "bits [47:36]" :
148*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_MO) == RCTL_MO_43_32 ? "bits [43:32]" :
149*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_MO) == RCTL_MO_39_28 ? "bits [39:28]" :
150*1b481fc3SMaciej Żenczykowski 	       "bits [35:24]",
151*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_BAM),
152*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_BSIZE) == RCTL_BSIZE_2048 ? "2048 bytes" :
153*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_BSIZE) == RCTL_BSIZE_1024 ? "1024 bytes" :
154*1b481fc3SMaciej Żenczykowski 	       (reg & RCTL_BSIZE) == RCTL_BSIZE_512 ? "512 bytes" :
155*1b481fc3SMaciej Żenczykowski 	       "256 bytes",
156*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_VFE),
157*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_CFIEN),
158*1b481fc3SMaciej Żenczykowski 	       reg & RCTL_CFI ? "discarded" : "accepted",
159*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_PSP),
160*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_DPF),
161*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_PMCF),
162*1b481fc3SMaciej Żenczykowski 	       bit_to_enable(reg & RCTL_SECRC));
163*1b481fc3SMaciej Żenczykowski 
164*1b481fc3SMaciej Żenczykowski 	for (offset = 25; offset < 172; offset++) {
165*1b481fc3SMaciej Żenczykowski 		reg = regs_buff[offset];
166*1b481fc3SMaciej Żenczykowski 		printf("%04d: 0x%08X\n", offset, reg);
167*1b481fc3SMaciej Żenczykowski 	}
168*1b481fc3SMaciej Żenczykowski 
169*1b481fc3SMaciej Żenczykowski 	offset = 172;
170*1b481fc3SMaciej Żenczykowski 
171*1b481fc3SMaciej Żenczykowski 	for (i = 0; i < 16; i++) {
172*1b481fc3SMaciej Żenczykowski 		reg = regs_buff[offset + i];
173*1b481fc3SMaciej Żenczykowski 		printf("%04d: RAL (Receive Address Low %02d)               \n"
174*1b481fc3SMaciej Żenczykowski 		       "    Receive Address Low:                       %08X\n",
175*1b481fc3SMaciej Żenczykowski 		       offset + i, i,
176*1b481fc3SMaciej Żenczykowski 		       reg);
177*1b481fc3SMaciej Żenczykowski 	}
178*1b481fc3SMaciej Żenczykowski 
179*1b481fc3SMaciej Żenczykowski 	offset = 188;
180*1b481fc3SMaciej Żenczykowski 
181*1b481fc3SMaciej Żenczykowski 	for (i = 0; i < 16; i++) {
182*1b481fc3SMaciej Żenczykowski 		reg = regs_buff[offset + i];
183*1b481fc3SMaciej Żenczykowski 		printf("%04d: RAH (Receive Address High %02d)              \n"
184*1b481fc3SMaciej Żenczykowski 		       "    Receive Address High:                      %04X\n"
185*1b481fc3SMaciej Żenczykowski 		       "    Address Select:                            %s\n"
186*1b481fc3SMaciej Żenczykowski 		       "    Queue Select:                              %d\n"
187*1b481fc3SMaciej Żenczykowski 		       "    Queue Select Enable:                       %s\n"
188*1b481fc3SMaciej Żenczykowski 		       "    Address Valid:                             %s\n",
189*1b481fc3SMaciej Żenczykowski 		       offset + i, i,
190*1b481fc3SMaciej Żenczykowski 		       reg & RAH_RAH,
191*1b481fc3SMaciej Żenczykowski 		       reg & RAH_ASEL ? "source" : "destination",
192*1b481fc3SMaciej Żenczykowski 		       (reg & RAH_QSEL) >> RAH_QSEL_SHIFT,
193*1b481fc3SMaciej Żenczykowski 		       bit_to_boolean(reg & RAH_QSEL_EN),
194*1b481fc3SMaciej Żenczykowski 		       bit_to_boolean(reg & RAH_AV));
195*1b481fc3SMaciej Żenczykowski 	}
196*1b481fc3SMaciej Żenczykowski 
197*1b481fc3SMaciej Żenczykowski 	offset = 204;
198*1b481fc3SMaciej Żenczykowski 
199*1b481fc3SMaciej Żenczykowski 	reg = regs_buff[offset];
200*1b481fc3SMaciej Żenczykowski 	printf("%04d: VLANPQF (VLAN Priority Queue Filter)       \n"
201*1b481fc3SMaciej Żenczykowski 	       "    Priority 0                                   \n"
202*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
203*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
204*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n"
205*1b481fc3SMaciej Żenczykowski 	       "    Priority 1                                   \n"
206*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
207*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
208*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n"
209*1b481fc3SMaciej Żenczykowski 	       "    Priority 2                                   \n"
210*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
211*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
212*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n"
213*1b481fc3SMaciej Żenczykowski 	       "    Priority 3                                   \n"
214*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
215*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
216*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n"
217*1b481fc3SMaciej Żenczykowski 	       "    Priority 4                                   \n"
218*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
219*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
220*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n"
221*1b481fc3SMaciej Żenczykowski 	       "    Priority 5                                   \n"
222*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
223*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
224*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n"
225*1b481fc3SMaciej Żenczykowski 	       "    Priority 6                                   \n"
226*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
227*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
228*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n"
229*1b481fc3SMaciej Żenczykowski 	       "    Priority 7                                   \n"
230*1b481fc3SMaciej Żenczykowski 	       "        Queue:                                 %d\n"
231*1b481fc3SMaciej Żenczykowski 	       "        Packet Buffer:                         %s\n"
232*1b481fc3SMaciej Żenczykowski 	       "        Valid:                                 %s\n",
233*1b481fc3SMaciej Żenczykowski 	       offset,
234*1b481fc3SMaciej Żenczykowski 	       reg & VLANPQF_VP0QSEL,
235*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP0PBSEL),
236*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP0V),
237*1b481fc3SMaciej Żenczykowski 	       (reg & VLANPQF_VP1QSEL) >> VLANPQF_VP1QSEL_SHIFT,
238*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP1PBSEL),
239*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP1V),
240*1b481fc3SMaciej Żenczykowski 	       (reg & VLANPQF_VP2QSEL) >> VLANPQF_VP2QSEL_SHIFT,
241*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP2PBSEL),
242*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP2V),
243*1b481fc3SMaciej Żenczykowski 	       (reg & VLANPQF_VP3QSEL) >> VLANPQF_VP3QSEL_SHIFT,
244*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP3PBSEL),
245*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP3V),
246*1b481fc3SMaciej Żenczykowski 	       (reg & VLANPQF_VP4QSEL) >> VLANPQF_VP4QSEL_SHIFT,
247*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP4PBSEL),
248*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP4V),
249*1b481fc3SMaciej Żenczykowski 	       (reg & VLANPQF_VP5QSEL) >> VLANPQF_VP5QSEL_SHIFT,
250*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP5PBSEL),
251*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP5V),
252*1b481fc3SMaciej Żenczykowski 	       (reg & VLANPQF_VP6QSEL) >> VLANPQF_VP6QSEL_SHIFT,
253*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP6PBSEL),
254*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP6V),
255*1b481fc3SMaciej Żenczykowski 	       (reg & VLANPQF_VP7QSEL) >> VLANPQF_VP7QSEL_SHIFT,
256*1b481fc3SMaciej Żenczykowski 	       bit_to_prio(reg & VLANPQF_VP7PBSEL),
257*1b481fc3SMaciej Żenczykowski 	       bit_to_boolean(reg & VLANPQF_VLANP7V));
258*1b481fc3SMaciej Żenczykowski 
259*1b481fc3SMaciej Żenczykowski 	offset = 205;
260*1b481fc3SMaciej Żenczykowski 
261*1b481fc3SMaciej Żenczykowski 	for (i = 0; i < 8; i++) {
262*1b481fc3SMaciej Żenczykowski 		reg = regs_buff[offset + i];
263*1b481fc3SMaciej Żenczykowski 		printf("%04d: ETQF (EType Queue Filter %d)                 \n"
264*1b481fc3SMaciej Żenczykowski 		       "    EType:                                     %04X\n"
265*1b481fc3SMaciej Żenczykowski 		       "    EType Length:                              %d\n"
266*1b481fc3SMaciej Żenczykowski 		       "    EType Length Enable:                       %s\n"
267*1b481fc3SMaciej Żenczykowski 		       "    Queue:                                     %d\n"
268*1b481fc3SMaciej Żenczykowski 		       "    Queue Enable:                              %s\n"
269*1b481fc3SMaciej Żenczykowski 		       "    Immediate Interrupt:                       %s\n"
270*1b481fc3SMaciej Żenczykowski 		       "    1588 Time Stamp:                           %s\n"
271*1b481fc3SMaciej Żenczykowski 		       "    Filter Enable:                             %s\n",
272*1b481fc3SMaciej Żenczykowski 		       offset + i, i,
273*1b481fc3SMaciej Żenczykowski 		       reg & ETQF_ETYPE,
274*1b481fc3SMaciej Żenczykowski 		       (reg & ETQF_ETYPE_LEN) >> ETQF_ETYPE_LEN_SHIFT,
275*1b481fc3SMaciej Żenczykowski 		       bit_to_boolean(reg & ETQF_ETYPE_LEN_EN),
276*1b481fc3SMaciej Żenczykowski 		       (reg & ETQF_QUEUE) >> ETQF_QUEUE_SHIFT,
277*1b481fc3SMaciej Żenczykowski 		       bit_to_boolean(reg & ETQF_QUEUE_EN),
278*1b481fc3SMaciej Żenczykowski 		       bit_to_enable(reg & ETQF_IMMEDIATE_INTR),
279*1b481fc3SMaciej Żenczykowski 		       bit_to_enable(reg & ETQF_1588_TIMESTAMP),
280*1b481fc3SMaciej Żenczykowski 		       bit_to_boolean(reg & ETQF_FILTER_EN));
281*1b481fc3SMaciej Żenczykowski 	}
282*1b481fc3SMaciej Żenczykowski 
283*1b481fc3SMaciej Żenczykowski 	return 0;
284*1b481fc3SMaciej Żenczykowski }
285