Documentation/fSDN/eNetFpgaTutorial: netfpga-session-2011.03.10-from-scratch-NetFPGA-Openflow.txt

File netfpga-session-2011.03.10-from-scratch-NetFPGA-Openflow.txt, 952.9 KB (added by nkiran, 8 years ago)
Line 
1 INFO exp: Progress(0/0/1): 10/10/10 min(n_1_1)/avg/max (78) - Timeout: 670 sec.
2 INFO exp: Progress(0/0/1): 10/10/10 min(n_1_1)/avg/max (78) - Timeout: 660 sec.
3 INFO exp: Progress(0/0/1): 20/20/20 min(n_1_1)/avg/max (78) - Timeout: 650 sec.
4 INFO exp: Progress(0/0/1): 20/20/20 min(n_1_1)/avg/max (78) - Timeout: 640 sec.
5 INFO exp: Progress(0/0/1): 20/20/20 min(n_1_1)/avg/max (78) - Timeout: 630 sec.
6 INFO exp: Progress(0/0/1): 30/30/30 min(n_1_1)/avg/max (78) - Timeout: 620 sec.
7 INFO exp: Progress(0/0/1): 30/30/30 min(n_1_1)/avg/max (78) - Timeout: 610 sec.
8 INFO exp: Progress(0/0/1): 30/30/30 min(n_1_1)/avg/max (78) - Timeout: 600 sec.
9 INFO exp: Progress(0/0/1): 40/40/40 min(n_1_1)/avg/max (78) - Timeout: 590 sec.
10 INFO exp: Progress(0/0/1): 40/40/40 min(n_1_1)/avg/max (78) - Timeout: 580 sec.
11 INFO exp: Progress(0/0/1): 40/40/40 min(n_1_1)/avg/max (78) - Timeout: 570 sec.
12 INFO exp: Progress(0/0/1): 50/50/50 min(n_1_1)/avg/max (78) - Timeout: 560 sec.
13 INFO exp: Progress(0/0/1): 50/50/50 min(n_1_1)/avg/max (78) - Timeout: 550 sec.
14 INFO exp: Progress(0/0/1): 50/50/50 min(n_1_1)/avg/max (78) - Timeout: 540 sec.
15 INFO exp: Progress(0/0/1): 60/60/60 min(n_1_1)/avg/max (78) - Timeout: 530 sec.
16 INFO exp: Progress(0/0/1): 60/60/60 min(n_1_1)/avg/max (78) - Timeout: 520 sec.
17 INFO exp: Progress(0/0/1): 60/60/60 min(n_1_1)/avg/max (78) - Timeout: 510 sec.
18 INFO exp: Progress(0/0/1): 70/70/70 min(n_1_1)/avg/max (78) - Timeout: 500 sec.
19 INFO exp: Progress(0/0/1): 70/70/70 min(n_1_1)/avg/max (78) - Timeout: 490 sec.
20 INFO exp: Progress(0/0/1): 70/70/70 min(n_1_1)/avg/max (78) - Timeout: 480 sec.
21 INFO exp: Progress(0/0/1): 80/80/80 min(n_1_1)/avg/max (78) - Timeout: 470 sec.
22 INFO exp: Progress(0/0/1): 80/80/80 min(n_1_1)/avg/max (78) - Timeout: 460 sec.
23 INFO exp: Progress(0/0/1): 80/80/80 min(n_1_1)/avg/max (78) - Timeout: 450 sec.
24 INFO exp: Progress(0/0/1): 90/90/90 min(n_1_1)/avg/max (78) - Timeout: 440 sec.
25 INFO exp: Progress(0/0/1): 90/90/90 min(n_1_1)/avg/max (78) - Timeout: 430 sec.
26 INFO exp: Progress(0/0/1): 90/90/90 min(n_1_1)/avg/max (78) - Timeout: 420 sec.
27 INFO exp: Progress(1/0/1): 100/100/100 min()/avg/max (78) - Timeout: 410 sec.
28 INFO exp:  -----------------------------
29 INFO exp:  Imaging Process Done
30 INFO exp:  - 1 node(s) successfully imaged - See the topology file: '/tmp/sb9.orbit-lab.org_2011_03_10_09_21_13_topo_active.rb'
31 INFO exp:  -----------------------------
32 INFO Experiment: DONE!
33 INFO NodeHandler: Shutting down experiment, please wait...
34 INFO NodeHandler: Shutdown flag is set - Turning Off the resources
35 INFO run: Experiment sb9.orbit-lab.org_2011_03_10_09_21_13 finished after 6:31
36nkiran@console:~$ omf stat
37 INFO NodeHandler: init OMF Experiment Controller 5.2.408
38-----------------------------------------------
39 INFO Topology: Loading topology 'system:topo:all'.
40 Testbed : sb9.orbit-lab.org
41 Node n_1_1 - State: POWEROFF
42 Node n_1_2 - State: POWERON
43 Node n_1_3 - State: POWERON
44 Node n_1_4 - State: POWERON
45 Node n_1_5 - State: POWEROFF
46 Node n_1_6 - State: POWEROFF
47 Node n_1_7 - State: NODE NOT AVAILABLE
48 Node n_1_8 - State: NODE NOT AVAILABLE
49-----------------------------------------------
50nkiran@console:~$ omf stat[K[K[K[Ktell on "1,1"
51 
52 INFO NodeHandler: init OMF Experiment Controller 5.2.408
53---------------------------------------------------
54 Testbed : sb9.orbit-lab.org - Command: on
55 Node n_1_1 - Ok
56---------------------------------------------------
57nkiran@console:~$ ssh 1
58ssh: connect to host node1-1 port 22: No route to host
59nkiran@console:~$ ssh 1
60Last login: Wed Mar  9 20:17:28 2011 from consolec.sb9.orbit-lab.org
61]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# ifconfig -a
62control   Link encap:Ethernet  HWaddr 00:15:17:d6:da:4b 
63          inet addr:10.19.1.1  Bcast:10.19.255.255  Mask:255.255.0.0
64          inet6 addr: fe80::215:17ff:fed6:da4b/64 Scope:Link
65          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
66          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
67          TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
68          collisions:0 txqueuelen:1000
69          RX bytes:10638 (10.6 KB)  TX bytes:11396 (11.3 KB)
70          Memory:febe0000-fec00000
71
72exp0      Link encap:Ethernet  HWaddr 00:15:17:d6:da:4a 
73          BROADCAST MULTICAST  MTU:1500  Metric:1
74          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
75          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
76          collisions:0 txqueuelen:1000
77          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
78          Memory:feb80000-feba0000
79
80lo        Link encap:Local Loopback 
81          inet addr:127.0.0.1  Mask:255.0.0.0
82          inet6 addr: ::1/128 Scope:Host
83          UP LOOPBACK RUNNING  MTU:16436  Metric:1
84          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
85          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
86          collisions:0 txqueuelen:0
87          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
88
89nf2c0     Link encap:Ethernet  HWaddr 00:4e:46:32:43:00 
90          BROADCAST MULTICAST  MTU:1500  Metric:1
91          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
92          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
93          collisions:0 txqueuelen:1000
94          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
95          Interrupt:16
96
97nf2c1     Link encap:Ethernet  HWaddr 00:4e:46:32:43:01 
98          BROADCAST MULTICAST  MTU:1500  Metric:1
99          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
100          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
101          collisions:0 txqueuelen:1000
102          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
103          Interrupt:16
104
105nf2c2     Link encap:Ethernet  HWaddr 00:4e:46:32:43:02 
106          BROADCAST MULTICAST  MTU:1500  Metric:1
107          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
108          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
109          collisions:0 txqueuelen:1000
110          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
111          Interrupt:16
112
113nf2c3     Link encap:Ethernet  HWaddr 00:4e:46:32:43:03 
114          BROADCAST MULTICAST  MTU:1500  Metric:1
115          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
116          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
117          collisions:0 txqueuelen:1000
118          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
119          Interrupt:16
120
121]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# [Kroot@node1-1:~# ls
122[0m[01;31momf-common-5.2_ubuntu2_all.deb[0m
123[m]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# exit
124logout
125Connection to node1-1 closed.
126nkiran@console:~$ ssh 1n1e1t1f1p1g1a1@1
127netfpga@node1-1's password:
128Last login: Wed Mar  9 18:24:12 2011 from consolec.sb9.orbit-lab.org
129]0;netfpga@node1-1: ~netfpga@node1-1:~$ cl[K[Kls
130[0m[01;34mnetfpga[0m  [01;34mpkgs[0m
131[m]0;netfpga@node1-1: ~netfpga@node1-1:~$ clear
132[H[2J]0;netfpga@node1-1: ~netfpga@node1-1:~$ ls
133[0m[01;34mnetfpga[0m  [01;34mpkgs[0m
134[m]0;netfpga@node1-1: ~netfpga@node1-1:~$ pwd
135/home/netfpga
136]0;netfpga@node1-1: ~netfpga@node1-1:~$ ls
137[0m[01;34mnetfpga[0m  [01;34mpkgs[0m
138[m]0;netfpga@node1-1: ~netfpga@node1-1:~$ [K]0;netfpga@node1-1: ~netfpga@node1-1:~$ /usr/local/sbin/cpci_reprogram.pl --all
139Error: /usr/local/sbin/cpci_reprogram.pl must be run as root at /usr/local/sbin/cpci_reprogram.pl line 36.
140]0;netfpga@node1-1: ~netfpga@node1-1:~$ /usr/local/sbin/cpci_reprogram.pl --all[1@s[1@u[1@d[1@o[1@
141Loading the CPCI Reprogrammer on NetFPGA 0
142Loading the CPCI on NetFPGA 0
143CPCI on NetFPGA 0 has been successfully reprogrammed
144]0;netfpga@node1-1: ~netfpga@node1-1:~$ vi /usr/local/netfpga/[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[Kvi /etc/rc.local
145[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"/etc/rc.local" [readonly] 14L, 306C[>c[1;1H[34m#!/bin/sh -e
146#
147# rc.local
148#
149# This script is executed at the end of each multiuser runlevel.
150# Make sure that the script will "exit 0" on success or any other
151# value on error.
152#
153# In order to enable or disable this script just change the execution
154# bits.
155#
156# By default this script does nothing.[m
157
158[33mexit[m [31m0[m
159[1m[34m~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;63H1,1[11CAll[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m#!/bin/sh -e
160#
161# rc.local
162#
163# This script is executed at the end of each multiuser runlevel.
164# Make sure that the script will "exit 0" on success or any other
165# value on error.
166#
167# In order to enable or disable this script just change the execution
168# bits.
169#
170# By default this script does nothing.[m
171
172[38;5;130mexit[m [31m0[m
173[94m~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;63H1,1[11CAll "/etc/rc.local" [readonly] 14L, 306C[24;63H[K[24;63H1,1[11CAll[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2[12;1H[?12l[?25h[?25l[24;64H3,0-1[13;1H[?12l[?25h[?25l[24;64H4,1  [14;1H[?12l[?25h[?25l[24;64H3,0-1[13;1H[?12l[?25h[?25l[24;64H2,1  [12;1H[?12l[?25h[?25l[24;1H[31mW10: Warning: Changing a readonly file[m[24;63H[K[24;1H[1m-- INSERT --[m[24;13H[K[24;63H13,1[10CTop[13;23r[13;1H[L[1;24r[24;63H[K[24;63H13,1[10CAll[13;1H[?12l[?25h[24;1H[K[13;1H[?25l[24;63H13,0-1[8CAll[13;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hq[?25l[?12l[?25h![?25l[?12l[?25h [?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l]0;netfpga@node1-1: ~netfpga@node1-1:~$ vi /etc/rc.local [1@s[1@u[1@d[1@o[1@
174[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"/etc/rc.local" 14L, 306C[>c[1;1H[34m#!/bin/sh -e
175#
176# rc.local
177#
178# This script is executed at the end of each multiuser runlevel.
179# Make sure that the script will "exit 0" on success or any other
180# value on error.
181#
182# In order to enable or disable this script just change the execution
183# bits.
184#
185# By default this script does nothing.[m
186
187[33mexit[m [31m0[m
188[1m[34m~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;63H1,1[11CAll[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m#!/bin/sh -e
189#
190# rc.local
191#
192# This script is executed at the end of each multiuser runlevel.
193# Make sure that the script will "exit 0" on success or any other
194# value on error.
195#
196# In order to enable or disable this script just change the execution
197# bits.
198#
199# By default this script does nothing.[m
200
201[38;5;130mexit[m [31m0[m
202[94m~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;63H1,1[11CAll "/etc/rc.local" 14L, 306C[24;63H[K[24;63H1,1[11CAll[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[24;1H[K[24;1H:[?12l[?25h$[?25l[?12l[?25h [?25l[62C14,1[10CAll[14;1H[?12l[?25h[?25l[24;64H3,0-1[13;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;63H[K[24;63H13,1[10CAll[13;1H[?12l[?25h[?25l  /usr/local/netfpga/lib/scripts/cpci_reprogram/cpci[24;66H53[13;53H[?12l[?25h[?25li_reprogram.pl [35m--all[m[24;66H7[13;73H[?12l[?25h[24;1H[K[13;72H[?25l[24;63H13,72[9CAll[13;72H[?12l[?25h[?25l[24;66H3 [13;3H[?12l[?25h[?25l[24;66H2[13;2H[?12l[?25h[?25l[24;66H1[13;1H[?12l[?25h[?25l/usr/local/netfpga/lib/scripts/cpci_reprogram/cpci_reprogram.pl [35m--all[m [13;71H[K[13;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hw[?25l[?12l[?25h [?25l"/etc/rc.local" 14L, 376C written[29C13,1[10CAll[24;63H[K[24;63H13,1[10CAll[13;1H[?12l[?25h[?25l[?12l[?25h[?25l[24;64H2[12;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2[12;1H[?12l[?25h[?25l[24;64H3[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l[?12l[?25hq[?25l[?12l[?25h [?25l"/etc/rc.local" 14L, 376C written
203[?1l>[?12l[?25h[?1049l]0;netfpga@node1-1: ~netfpga@node1-1:~$  for i in `seq 0 3`; do ifconfig nf2c$i up; done
204Command 'ifconfig' is available in '/sbin/ifconfig'
205The command could not be located because '/sbin' is not included in the PATH environment variable.
206This is most likely caused by the lack of administrative priviledges associated with your user account.
207ifconfig: command not found
208Command 'ifconfig' is available in '/sbin/ifconfig'
209The command could not be located because '/sbin' is not included in the PATH environment variable.
210This is most likely caused by the lack of administrative priviledges associated with your user account.
211ifconfig: command not found
212Command 'ifconfig' is available in '/sbin/ifconfig'
213The command could not be located because '/sbin' is not included in the PATH environment variable.
214This is most likely caused by the lack of administrative priviledges associated with your user account.
215ifconfig: command not found
216Command 'ifconfig' is available in '/sbin/ifconfig'
217The command could not be located because '/sbin' is not included in the PATH environment variable.
218This is most likely caused by the lack of administrative priviledges associated with your user account.
219ifconfig: command not found
220]0;netfpga@node1-1: ~netfpga@node1-1:~$ sudo vi /etc/rc.local ^[[B [C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[9Pvi /etc/rc.local [K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[K[Ksudos [K[K su -
221]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# exit
222logout
223]0;netfpga@node1-1: ~netfpga@node1-1:~$ sudo bash
224]0;root@node1-1: ~root@node1-1:~#  for i in `seq 0 3`; do ifconfig nf2c$i up; done
225]0;root@node1-1: ~root@node1-1:~# ifconfig
226control   Link encap:Ethernet  HWaddr 00:15:17:d6:da:4b 
227          inet addr:10.19.1.1  Bcast:10.19.255.255  Mask:255.255.0.0
228          inet6 addr: fe80::215:17ff:fed6:da4b/64 Scope:Link
229          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
230          RX packets:759 errors:0 dropped:0 overruns:0 frame:0
231          TX packets:503 errors:0 dropped:0 overruns:0 carrier:0
232          collisions:0 txqueuelen:1000
233          RX bytes:86985 (86.9 KB)  TX bytes:74292 (74.2 KB)
234          Memory:febe0000-fec00000
235
236lo        Link encap:Local Loopback 
237          inet addr:127.0.0.1  Mask:255.0.0.0
238          inet6 addr: ::1/128 Scope:Host
239          UP LOOPBACK RUNNING  MTU:16436  Metric:1
240          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
241          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
242          collisions:0 txqueuelen:0
243          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
244
245nf2c0     Link encap:Ethernet  HWaddr 00:4e:46:32:43:00 
246          UP BROADCAST MULTICAST  MTU:1500  Metric:1
247          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
248          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
249          collisions:0 txqueuelen:1000
250          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
251          Interrupt:16
252
253nf2c1     Link encap:Ethernet  HWaddr 00:4e:46:32:43:01 
254          UP BROADCAST MULTICAST  MTU:1500  Metric:1
255          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
256          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
257          collisions:0 txqueuelen:1000
258          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
259          Interrupt:16
260
261nf2c2     Link encap:Ethernet  HWaddr 00:4e:46:32:43:02 
262          UP BROADCAST MULTICAST  MTU:1500  Metric:1
263          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
264          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
265          collisions:0 txqueuelen:1000
266          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
267          Interrupt:16
268
269nf2c3     Link encap:Ethernet  HWaddr 00:4e:46:32:43:03 
270          UP BROADCAST MULTICAST  MTU:1500  Metric:1
271          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
272          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
273          collisions:0 txqueuelen:1000
274          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
275          Interrupt:16
276
277]0;root@node1-1: ~root@node1-1:~# ls
278[0m[01;34mnetfpga[0m  [01;34mpkgs[0m
279[m]0;root@node1-1: ~root@node1-1:~# ~[K
280]0;root@node1-1: ~root@node1-1:~# netfpga/projects/selftest/sw/selftest -n
281Found net device: nf2c0
282Error: Incorrect bitfile loaded. Found 'cpci_reprogrammer' (CPCI Reprogrammer), expecting: 'selftest'
283]0;root@node1-1: ~root@node1-1:~# nf_dwo[K[Kownload netfpga/bn[Kitfiles/selftest.bit
284Found net device: nf2c0
285Bit file built from: nf2_top_par.ncd;HW_TIMEOUT=FALSE
286Part: 2vp50ff1152
287Date: 2011/ 1/20
288Time: 14:36:45
289Error Registers: 0
290Good, after resetting programming interface the FIFO is empty
291Download completed -  2377668 bytes. (expected 2377668).
292DONE went high - chip has been successfully programmed.
293CPCI Information
294----------------
295Version: 4 (rev 1)
296
297Device (Virtex) Information
298---------------------------
299Project directory: selftest
300Project name: Selftest
301Project description: NetFPGA selftest -- exercises all major subsystems of the board
302
303Device ID: 5
304Version: 1.1.0
305Built against CPCI version: 4 (rev 1)
306
307Virtex design compiled against active CPCI version
308]0;root@node1-1: ~root@node1-1:~#
309]0;root@node1-1: ~root@node1-1:~#   ~/netfpga/projects/selftest/sw/selftest -n [C[C[C[C[1P[1P[1P[1P
310Found net device: nf2c0
311CPCI Information
312----------------
313Version: 4 (rev 1)
314
315Device (Virtex) Information
316---------------------------
317Project directory: selftest
318Project name: Selftest
319Project description: NetFPGA selftest -- exercises all major subsystems of the board
320
321Device ID: 5
322Version: 1.1.0
323Built against CPCI version: 4 (rev 1)
324
325NetFPGA selftest 1.00 alpha
326Running..... FAILED. Failing tests: PHY interface
327]0;root@node1-1: ~root@node1-1:~# less netfpga/projects/selftest/sw/selftest
328"netfpga/projects/selftest/sw/selftest" may be a binary file.  See it anyway?
329[?1049h[?1h= [7m^?[27mELF[7m^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@[27m@[7m<96>^D^H[27m4[7m^@^@^@[27ml[7m<E1>^@^@^@^@^@^@[27m4
330[7m^@[27m [7m^@^H^@[27m([7m^@[27m&[7m^@[27m#[7m^@^F^@^@^@[27m4[7m^@^@^@[27m4[7m<80>^D^H[27m4[7m<80>^D^H^@^A^@^@^@^A^@^@^E^@^@^@^D^@[27m
331[7m^@^@^C^@^@^@[27m4[7m^A^@^@[27m4[7m<81>^D^H[27m4[7m<81>^D^H^S^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A^@^@^@^@[27m
332[7m^@^@^@^@<80>^D^H^@<80>^D^H^P[27mf[7m^@^@^P[27mf[7m^@^@^E^@^@^@^@^P^@^@^A^@^@^@<B4>[27mn[7m^@^@<B4>[27m
333[7m<FE>^D^H<B4><FE>^D^H[27mP[7m^M^@^@<BC>^N^@^@^F^@^@^@^@^P^@^@^B^@^@^@<C8>[27mn[7m^@^@<C8><FE>^D[27m[7m^H<C8><FE>^D^H<D8>^@^@^@<D8>^@^@^@^F^@^@^@^D^@^@^@^D^@^@^@[27mH[7m^A^@^@[27mH[7m<81>^D^H[27mH[7m<81>[27m
334[7m^D^H[27mD[7m^@^@^@[27mD[7m^@^@^@^D^@^@^@^D^@^@^@[27mQ[7m<E5>[27mtd[7m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[27m
335[7m^@^F^@^@^@^D^@^@^@[27mR[7m<E5>[27mtd[7m<B4>[27mn[7m^@^@<B4><FE>^D^H<B4><FE>^D^H[27mL[7m^A^@^@[27mL[7m^A^@^@^D^@^@^@[27m[7m^A^@^@^@[27m/lib/ld-linux.so.2[7m^@^@^D^@^@^@^P^@^@^@^A^@^@^@[27mGNU[7m^@^@^@^@^@^B^@^@^@^F^@[27m
336[7m^@^@^O^@^@^@^D^@^@^@^T^@^@^@^C^@^@^@[27mGNU[7m^@<8B>[27mgW[7m<9B>[27m^[7m<CE>[27mHR[7m<FB>[27mC[7m<A1><C0><A3><D2>[27m2[7m^_[27mR[7m<DD><FE><86>[27mC[7m^@^@^@[27m^[7m^@^@^@^@^@^@^@^K^@^@^@[27m%[7m^@^@^@^@^@^@^@[27mN[7m^@^@^@^@^@^@^@^@^@[27m
337[7m^@^@[27m6[7m^@^@^@[27m'[7m^@^@^@^@^@^@^@[27mR[7m^@^@^@[27m][7m^@^@^@^]^@^@^@[27m=[7m^@^@^@[27m@[7m^@^@^@[27m9[7m^@^@^@[27m;[7m^@^@^@^@^@[27m[7m^@^@^@^@^@^@^@^@^@^@^@^@^@^@[27m-[7m^@^@^@[27m([7m^@^@^@[27mZ[7m^@^@^@^Q^@^@^@[27m/[7m^@^@^@[27mB[7m^@^@^@[27mK[7m^@^@^@[27m0
338[7m^@^@^@[27mL[7m^@^@^@^M^@^@^@^@^@^@^@^P^@^@^@[27m)[7m^@^@^@[27m1[7m^@^@^@[27m[[7m^@^@^@[27m*[7m^@^@^@^@^@^@^@^S^@^@[27m
339[7m^@[27m8[7m^@^@^@^A^@^@^@[27m2[7m^@^@^@[27m?[7m^@^@^@^X^@^@^@^@^@^@^@[27m"[7m^@^@^@^@^@^@^@[27m4[7m^@^@^@[27m<[7m^@^@^@[27mH[7m^@[27m
340[7m^@^@^E^@^@^@[27mW[7m^@^@^@[27m3[7m^@^@^@[27mY[7m^@^@^@[27m5[7m^@^@^@^@^@^@^@[27m7[7m^@^@^@^@^@^@^@^@^@^@^@[27m:[7m^@^@^@[27mG
341[7m^@^@^@^Z^@^@^@^O^@^@^@^V^@^@^@[27m.[7m^@^@^@[27mJ[7m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[27m[7m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^G^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^B^@[27m[7m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[27m  [7m^@^@^@^H^@^@^@^@^@^@^@^@^@^@^@^@^@[27m[7m^@^@^@^@^@^@^@^@^@^@[27m>[7m^@^@^@^F^@^@^@^U^@^@^@[27mO[7m^@^@^@^Y^@^@^@^C^@^@^@^@^@^@^@^@^@^@[27m[7m^@^_^@^@^@[27m![7m^@^@^@^@^@^@^@[27mC[7m^@^@^@^@^@^@^@[27mA[7m^@^@^@^@^@^@^@[27mE[7m^@^@^@^@^@^@^@ESC^@^@^@[27m#[7m^@^@^@^@^@^@^@[27mT[7m^@^@^@[27m+[7m^@^@^@^R^@^@^@^@^@^@^@^@^@^@^@^^^@^@^@^@^@^@^@^@^@^@^@[27m&[7m^@[27m
342[7m^@^@[27m,[7m^@^@^@[27mI[7m^@^@^@[27m [7m^@^@^@^W^@^@^@[27mV[7m^@^@^@[27m\[7m^@^@^@^@^@^@^@^@^@^@^@[27mD[7m^@^@^@[27mX[7m^@^@^@^@[27m
343[7mnetfpga/projects/selftest/sw/selftest [27m[K [K[7m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[27mQ[7m^@^@^@^@^@^@^@^@^@^@^@^N^@^@^@[27mM[7m^@^@^@^@^@[27m[7m^@^@[27m$[7m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^T^@^@^@[27mP[7m^@^@^@[27mF[7m^@^@^@^@^@^@^@^@^@^@[27m
344[7m^@^@^@^@^@^L^@^@^@[27mS[7m^@^@^@[27mU[7m^@^@^@^@^@^@^@[27m
345[7m^@^@^@^D^@^@^@^\^@^@^@^Q^@^@^@[27m=[7m^@^@^@^H^@^@^@^H^@^@^@<80>[27m
346`@I     [7m^D[27m")[7m^R^D^W^A[27m@[7m^@^B^A[27m [7m^L[27m([7m^D<89>[27mj8[7m^^^Q<C8>^D<8C>[27m@=[7m^@^@^@[27m>[7m^@^@^@[27mA[7m^@^@^@[27mC[7m^@^@[27m[7m^@[27mI[7m^@^@^@[27mM[7m^@^@^@[27mO[7m^@^@^@[27mQ[7m^@^@^@[27mS[7m^@^@^@[27mT[7m^@^@^@[27mU[7m^@^@^@^@^@^@^@[27mX[7m^@^@^@^@^@^@^@[27mY[7m^@^@[27m
347[7m^@[27m[[7m^@^@^@[27m][7m^@^@^@[27m+[7m<86><EA><85><EA><D3><EF>^N<BE><B2><85><F7><91>[27m]r[7m<B1><D8>[27m+[7m<8C>^\[27m¹[7m<B9><8D><F1>^N<D4>[27mm[7m<A1><96><86>[27m+[7m<E3><C2>[27mXz[7m<BC><B7><C4>[27m\J[7m^_[27m [7m<A3><87>^M<D9>[27mqX[7m^\[27m
348[7m<AC>[27mK[7m<E3><C0>[27mx[7m^@<D1>[27mu[7m^^^R<BB><E3><92>[27m|
349[7m<DE><F7>^R<E7><BE>[27mH|@[7m<9C>^U^T<C7>[27mLt[7m<B1>[27m8[7m<F2><8B>^\[27mCE[7m<D5><EC><C1><B3><F7>^R<C3>[27m
350[7m<F2>[27mD[7m^_<E2>[27m&@7[7m^V[27m'[7m<83>[27m|[7m<B3><A2><F7>^R[27mS[7m<C9>[27mH[7m^_[27mX[7m<CC>[27m[7o[7m<F9>[27mb[7m<CB><F6><E3>[27m_[7m<8F><F3>[27mҊ
351[7m<AD>[27m)[7m^]<8C>^\^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<C4>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m
352[7m<EF>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27mM[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@ESC^B^@^@^@^@^@[27m[7m^@^@^@^@^@^R^@^@^@[27mu[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<93>^@^@^@^@^@^@^@^@^@^@^@^R^@[27m
353[7m^@^@[27mn[7m^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^\^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m7[7m^B^@^@^@^@^@[27m[7m^@^@^@^@^@^R^@^@^@^Q^@^@^@^@^@^@^@^@^@^@^@[27m [7m^@^@^@[27m [7m^@^@^@^@^@^@^@^@^@^@^@[27m [7m^@^@^@[27m
354[7m^D^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m`[7m^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^T^A^@^@^@^@^@^@[27m
355[7m^@^@^@^@^R^@^@^@[27m>[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@^U^B^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m}[7m^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^C^B^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m"[7m^B^@^@^@^@^@^@^@[27m
356[7m^@^@^@^R^@^@^@<E9>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<A0>^@^@^@^@^@^@^@^@^@^@^@^R^@^@[27m[7m^@[27m@[7m^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27ma[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<FD>^@^@^@^@^@^@[27m[7m^@^@^@^@^@^R^@^@^@<CB>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<D2>^A^@^@^@^@^@^@^@^@^@^@^R[27m[7m^@^@^@<D7>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<B7>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<D0>^@[27m:[K [K[7m^@^@^@^@^@^@^@^@^@^@^R^@^@^@<A7>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m([7m^B^@^@^@^@^@^@^@[27m
357[7m^@^@^@^R^@^@^@[27mn[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<85>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27mU[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<F7>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27mO[7m^@^@^@^@^@^@^@[27m
358[7m^@^@^@^@^R^@^@^@[27mH[7m^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<EE>^A^@^@^@^@^@^@^@^@^@^@^R^@^@[27m
359[7m^@[27m\[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27mf[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27mF[7m^A^@^@^@^@^@^@[27m
360[7m^@^@^@^@^R^@^@^@<B0>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<E7>^A^@^@^@^@^@^@^@^@^@^@^R^@[27m[7m^@^@<ED>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m([7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m-[7m^A^@^@^@^@[27m[7m^@^@^@^@^@^@^R^@^@^@<CC>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<9C>^A^@^@^@^@^@^@^@^@^@^@[27m[7m^R^@^@^@[27m#[7m^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<91>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<84>^@[27m
361[7m^@^@^@^@^@^@^@^@^@^@^R^@^@^@<8C>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<A3>^A^@^@^@^@^@^@[27m[7m^@^@^@^@^R^@^@^@<E3>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[27m.[7m^B^@^@^@^@^@^@^@^@^@^@^R^@^@[27m
362[7m^@[27mY[7m^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<FC>^A^@^@^@^@^@^@^@^@^@^@^R^@^@^@<DE>^@^@^@^@[27m
363[7m^@^@^@^@^@^@^@^R^@^@^@[27mt[7m^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<DF>^A^@^@^@^@^@^@^@^@^@^@[27m
364[7m^R^@^@^@[27m1[7m^C^@^@^@^B^E^H[27md[7m^@^@^@^Q^@^X^@[27m4[7m^@^@^@[27m,[7m<D9>^D^H^@^@^@^@^R^@^O^@<F9>^B^@^@[27m[7m<E8>^A^E^H^D^@^@^@^Q^@^X^@[27mQ[7m^C^@^@<F0>^A^E^H^D^@^@^@^Q^@^X^@[27mg[7m^@^@^@[27m [7m^L^E^H^D^@^@[27m
365[7m^@^Q^@^Y^@[27m:[7m^@^@^@[27mD[7m<92>^D^H^@^@^@^@^R^@^L^@[27mW[7m^B^@^@<D9>^L^E^H^A^@^@^@^Q^@^Y^@[27mi[7m^B^@[27m[7m^@<80>^K^E^H^D^@^@^@^Q^@^X^@<A0>^B^@^@<80>^G^E^H^@^D^@^@^Q^@^X^@<BF>^B^@^@<C0>^B[27m[7m^E^H[27m@[7m^@^@^@^Q^@^X^@<9A>^@^@^@[27m@[7m^L^E^H^D^@^@^@^Q^@^Y^@[27mF[7m^B^@^@^D^L^E^H^@^@^@^@^P^@[27m
366[7m<F1><FF><C1>^@^@^@[27mL[7m<D9>^D^H^D^@^@^@^Q^@^P^@<DA>^B^@^@<D8>^L^E^H^A^@^@^@^Q^@^Y^@[27m
367[7m^W^C^@^@<E0>^A^E^H^D^@^@^@^Q^@^X^@[27mR[7m^B^@^@[27mp[7m^M^E^H^@^@^@^@^P^@<F1><FF><BD>^A^@^@[27m(
368[7m^L^E^H^D^@^@^@^Q^@^Y^@[27m$[7m^C^@^@<EC>^A^E^H^D^@^@^@^Q^@^X^@<97>^B^@^@[27m@[7m^M^E^H[27m0[7m^@^@^@[27m
369[7m^Q^@^Y^@<B0>^B^@^@<80>^C^E^H^@^D^@^@^Q^@^X^@<B0>^A^@^@[27m,[7m^L^E^H^D^@^@^@^Q^@^Y^@[27m?[7m^B[27m[7m^@^@^D^L^E^H^@^@^@^@^P^@<F1><FF><F5>^A^@^@[27md[7m^L^E^H^D^@^@^@^Q^@^Y^@<89>^B^@^@^@^C[27m
370:[K [K[7m^E^H[27md[7m^@^@^@^Q^@^X^@<CD>^B^@^@<80>^B^E^H[27m@[7m^@^@^@^Q^@^X^@<8E>^@^@^@[27mD[7m^L^E^H^D^@^@^@[27m
371[7m^Q^@^Y^@<A9>^A^@^@<80>^L^E^H^D^@^@^@^Q^@^Y^@[27mB[7m^C^@^@<A0>^K^E^H[27md[7m^@^@^@^Q^@^X^@<EC>[27m[7m^B^@^@<84>^K^E^H^D^@^@^@^Q^@^X^@^S^C^@^@<F4>^A^E^H^D^@^@^@^Q^@^X^@[27mw[7m^B^@^@<F8>^A[27m
372[7m^E^H^D^@^@^@^Q^@^X^@[27m{[7m^B^@^@<E4>^A^E^H^D^@^@^@^Q^@^X^@[27m~[7m^A^@^@[27m`[7m^L^E^H^D^@^@^@^Q^@[27m
373[7m^Y^@^@[27mlibncurses.so.5[7m^@[27m__gmon_start__[7m^@[27m_Jv_RegisterClasses[7m^@[27m_fini[7m^@[27m_init[7m^@[27minitscrr[7m^@[27mcbreak[7m^@[27mhalfdelay[7m^@[27mnoecho[7m^@[27mendwin[7m^@[27mstdscr[7m^@[27mwmove[7m^@[27mwattr_on[7m^@[27mprintw[7m^@[27mwattr_off[7m^@[27mCOLS[7m^@[27mwaddch[7m^@[27mLINES[7m^@[27mwerase[7m^@[27mwrefresh[7m^@[27mwgetch[7m^@[27mlibc.so.6[7m^@[27m_IO_stdin_used[7m^@[27msockeet[7m^@[27mfflush[7m^@[27mexit[7m^@[27mhtonl[7m^@[27mhtons[7m^@[27msprintf[7m^@[27mfopen[7m^@[27mperror[7m^@[27m__isoc99_sscanf[7m^@[27mstrncpy[7m^@[27msignal[7m^@[27mputs[7m^@[27mtime[7m^@[27m__stack_chk_fail[7m^@[27mputchar[7m^@[27mselect[7m^@[27misprint[7m^@[27mstrlen[7m^@[27mbind[7m^@[27mrread[7m^@[27mlrand48[7m^@[27mgetopt[7m^@[27mshutdown[7m^@[27mstdout[7m^@[27mmemcpy[7m^@[27mrand[7m^@[27msetsockopt[7m^@[27mstrcat[7m^@[27mbzero[7m^@[27moptarg[7m^@[27mstderr[7m^@[27mioctl[7m^@[27moptopt[7m^@[27mfileno[7m^@[27musleep[7m^@[27mgettimeofday[7m^@[27mgeteuid[7m^@[27mclose[7m^@[27mfpprintf[7m^@[27mopterr[7m^@[27mstrcmp[7m^@[27m__libc_start_main[7m^@[27mwrite[7m^@[27mrandom[7m^@[27mntohl[7m^@[27mntohs[7m^@[27msnprintf[7m^@[27m__xstat[7m^@[27m_edata[7m^@[27m__bss_start[7m^@[27m_end[7m^@[27mvirtex_programmed[7m^@[27mnf2_device_id[7m^@[27mnf2_cpci__revision[7m^@[27mnf2_proj_desc[7m^@[27mprev_dev[7m^@[27mnf2_version_err[7m^@[27mnf2device_info[7m^@[27mnf2_proj_namme[7m^@[27mnf2_proj_dir[7m^@[27mhave_version_info[7m^@[27mnf2_revision[7m^@[27mnf2_dev_id_module_version[7m^@[27mnf22_cpci_version[7m^@[27mnf2device_id[7m^@[27mnf2_proj_name_v1[7m^@[27mnf2_device_str[7m^@[27mnf2_version[7m^@[27mGLIBBC_2.4[7m^@[27mGLIBC_2.1[7m^@[27mGLIBC_2.7[7m^@[27mGLIBC_2.0[7m^@^@^@^@^B^@^B^@^B^@^B^@^B^@^@^@^@^@^B^@[27m
374[7m^B^@^@^@^@^@^C^@^@^@^B^@^B^@^B^@^@^@^B^@^B^@^B^@^@^@^@^@^B^@^B^@^B^@^B^@^B^@^B^@[27m[7m^B^@^@^@^B^@^B^@^B^@^B^@^D^@^@^@^@^@^B^@^B^@^B^@^B^@^@^@^B^@^B^@^B^@^E^@^B^@^B^@[27m[7m^B^@^B^@^@^@^B^@^B^@^B^@^B^@^@^@^B^@^B^@^@^@^B^@^A^@^A^@^A^@^A^@^@^@^A^@^A^@^A^@[27m[7m^A^@^A^@^@^@^A^@^A^@^A^@^A^@^A^@^B^@^A^@^A^@^A^@^B^@^A^@^B^@^A^@^A^@^@^@^B^@^A^@[27m[7m^A^@^A^@^A^@^A^@^B^@^@^@^A^@^D^@<B7>^@^@^@^P^@^@^@^@^@^@^@^T[27mii[7m^M^@^@^E^@[27m][7m^C^@^@[27m
375[7m^P^@^@^@^Q[27mii[7m^M^@^@^D^@[27mg[7m^C^@^@^P^@^@^@^W[27mii[7m^M^@^@^C^@[27mq[7m^C^@^@^P^@^@^@^P[27mii[7m^M^@^@^B^@[27m{:[K [K{[7m^C^@^@^@^@^@^@<A0><FF>^D^H^F[27mC[7m^@^@<A4><FF>^D^H^F[27m
376[7m^@^@<A8><FF>^D^H^F[27mD[7m^@^@<AC><FF>^D^H^F[27m[[7m^@^@<B0><FF>^D^H^F[27mT[7m^@^@<B4><FF>^D^H^F[27mO[7m^@^@[27mž[7m<B8><FF>^D^H^F[27mE[7m^@^@<BC><FF>^D^H^F[27mQ[7m^@^@[27m,[7m^L^E^H^E[27mQ[7m^@^@<C0><FF>^D^H^F[27mP[7m^@^@<C4><FF>[27m
377[7m^D^H^F[27mF[7m^@^@<C8><FF>^D^H^F[27mU[7m^@^@<CC><FF>^D^H^F[27mJ[7m^@^@<D0><FF>^D^H^F[27m\[7m^@^@<D4><FF>^D^H[27m[7m^F[27mK[7m^@^@<D8><FF>^D^H^F[27mY[7m^@^@<DC><FF>^D^H^F[27m?[7m^@^@<E0><FF>^D^H^F[27mZ[7m^@^@<E4><FF>^D^H^F[27mN
378[7m^@^@<E8><FF>^D^H^F[27m=[7m^@^@<EC><FF>^D^H^F[27mX[7m^@^@<F0><FF>^D^H^F[27m@[7m^@^@[27m [7m^L^E^H^E[27mA[7m^@^@[27m([7m^L^E[27m[7m^H^E[27mM[7m^@^@[27m@[7m^L^E^H^E[27mG[7m^@^@[27mD[7m^L^E^H^E[27mV[7m^@^@[27m`[7m^L^E^H^E[27m][7m^@^@[27md[7m^L^E^H^E[27mS[7m^@^@<80>^L^E^H^E[27mW[7m^@[27m[7m^@^@^@^E^H^G^A^@^@^D^@^E^H^G^B^@^@^H^@^E^H^G^C^@^@^L^@^E^H^G^D^@^@^P^@^E^H^G^E^@[27m[7m^@^T^@^E^H^G^F^@^@^X^@^E^H^G^G^@^@^\^@^E^H^G^H^@^@[27m [7m^@^E^H^G[27m       [7m^@^@[27m$[7m^@^E^H^G[27m
379[7m^@^@[27m([7m^@^E^H^G^L^@^@[27m,[7m^@^E^H^G^M^@^@[27m0[7m^@^E^H^G^N^@^@[27m4[7m^@^E^H^G^O^@^@[27m8[7m^@^E^H^G^P^@^@[27m<[7m^@^E^H^G^Q^@^@[27m@[7m^@^E^H^G^R^@^@[27mD[7m^@^E^H^G^S^@^@[27mH[7m^@^E^H^G^T^@^@[27mL[7m^@^E^H^G^U^@^@[27mP[7m^@^E[27m
380[7m^H^G^V^@^@[27mT[7m^@^E^H^G^W^@^@[27mX[7m^@^E^H^G^X^@^@[27m\[7m^@^E^H^G^Y^@^@[27m`[7m^@^E^H^G^Z^@^@[27md[7m^@^E^H^G[27m
381[7mESC^@^@[27mh[7m^@^E^H^G^\^@^@[27ml[7m^@^E^H^G^]^@^@[27mp[7m^@^E^H^G^^^@^@[27mt[7m^@^E^H^G^_^@^@[27mx[7m^@^E^H^G[27m [7m^@[27m
382[7m^@[27m|[7m^@^E^H^G[27m![7m^@^@<80>^@^E^H^G[27m"[7m^@^@<84>^@^E^H^G[27m#[7m^@^@<88>^@^E^H^G[27m$[7m^@^@<8C>^@^E^H^G[27m%[7m^@^@<90>^@^E^H^G[27m&[7m^@^@<94>^@^E^H^G[27m'[7m^@^@<98>^@^E^H^G[27m([7m^@^@<9C>^@^E^H^G[27m)[7m^@^@<A0>^@^E[27m[7m^H^G[27m*[7m^@^@<A4>^@^E^H^G[27m+[7m^@^@<A8>^@^E^H^G[27m,[7m^@^@<AC>^@^E^H^G[27m-[7m^@^@<B0>^@^E^H^G[27m.[7m^@^@[27m
383[7m<B4>^@^E^H^G[27m/[7m^@^@<B8>^@^E^H^G[27m0[7m^@^@<BC>^@^E^H^G[27m1[7m^@^@<C0>^@^E^H^G[27m2[7m^@^@<C4>^@^E^H^G[27m33[7m^@^@<C8>^@^E^H^G[27m4[7m^@^@<CC>^@^E^H^G[27m5[7m^@^@<D0>^@^E^H^G[27m6[7m^@^@<D4>^@^E^H^G[27m7[7m^@^@<D8>^@[27m
384[7m^E^H^G[27m8[7m^@^@<DC>^@^E^H^G[27m9[7m^@^@<E0>^@^E^H^G[27m:[7m^@^@<E4>^@^E^H^G[27m;[7m^@^@<E8>^@^E^H^G[27m<[7m^@^@[27mU‰[7m<89><E5>[27mS[7m<83><EC>^D<E8>^@^@^@^@[27m[[7m<81>[27mÀm[7m^@^@<8B><93><B0><FF><FF><FF><85><D2>[27mt[7m^E[27m
385[7m<E8><AE>^@^@^@<E8>[27me[7m^D^@^@<E8><90>[27mF[7m^@^@[27mX[[7m<C9><C3><FF>[27m5[7m<F8><FF>^D^H<FF>[27m%[7m<FC><FF>^D[27m[7m^H^@^@^@^@<FF>[27m%[7m^@^@^E^H[27mh[7m^@^@^@^@<E9><E0><FF><FF><FF><FF>[27m%[7m^D^@^E^H^@^@^@<E9><D0>[27m
386[7m<FF><FF><FF><FF>^@^E^H[27mh[7m^P^@^@^@<E9><C0><FF><FF><FF><FF>[27m%[7m^L^@^E^H[27mh[7m^X^@^@^@<E9>[27m
387:[K [K[7m<B0><FF><FF><FF><FF>[27m%[7m^P^@^E^H[27mh [7m^@^@^@<E9><A0><FF><FF><FF><FF>[27m%[7m^T^@^E^H[27mh([7m^@^@^@[27m
388[7m<E9><90><FF><FF><FF><FF>[27m%[7m^X^@^E^H[27mh0[7m^@^@^@<E9><80><FF><FF><FF><FF>[27m%[7m^\^@^E^H[27mh8[7m^@^@[27m[7m^@<E9>[27mp[7m<FF><FF><FF><FF>[27m% [7m^@^E^H[27mh@[7m^@^@^@<E9>[27m`[7m<FF><FF><FF><FF>[27m%$[7m^@^E^H[27mhH[7m^@^@^@<E9>[27mPP[7m<FF><FF><FF><FF>[27m%([7m^@^E^H[27mhP[7m^@^@^@<E9>[27m@[7m<FF><FF><FF><FF>[27m%,[7m^@^E^H[27mhX[7m^@^@^@<E9>[27m0[7m<FF>[27m
389[7m<FF><FF><FF>[27m%0[7m^@^E^H[27mh`[7m^@^@^@<E9>[27m [7m<FF><FF><FF><FF>[27m%4[7m^@^E^H[27mhh[7m^@^@^@<E9>^P<FF><FF>[27m
390[7m<FF><FF>[27m%8[7m^@^E^H[27mhp[7m^@^@^@<E9>^@<FF><FF><FF><FF>[27m%<[7m^@^E^H[27mhx[7m^@^@^@<E9><F0><FE><FF>[27m
391[7m<FF><FF>[27m%@[7m^@^E^H[27mh[7m<80>^@^@^@<E9><E0><FE><FF><FF><FF>[27m%D[7m^@^E^H[27mh[7m<88>^@^@^@<E9><D0>[27m
392[7m<FE><FF><FF><FF>[27m%H[7m^@^E^H[27mh[7m<90>^@^@^@<E9><C0><FE><FF><FF><FF>[27m%L[7m^@^E^H[27mh[7m<98>^@^@^@[27m
393[7m<E9><B0><FE><FF><FF><FF>[27m%P[7m^@^E^H[27mh[7m<A0>^@^@^@<E9><A0><FE><FF><FF><FF>[27m%T[7m^@^E^H[27mh[7m<A8>[27m[7m^@^@^@<E9><90><FE><FF><FF><FF>[27m%X[7m^@^E^H[27mh[7m<B0>^@^@^@<E9><80><FE><FF><FF><FF>[27m%\[7m^@^E[27m
394[7m^H[27mh[7m<B8>^@^@^@<E9>[27mp[7m<FE><FF><FF><FF>[27m%`[7m^@^E^H[27mh[7m<C0>^@^@^@<E9>[27m`[7m<FE><FF><FF><FF>[27m%d[7m^@^E[27m[7m^H[27mh[7m<C8>^@^@^@<E9>[27mP[7m<FE><FF><FF><FF>[27m%h[7m^@^E^H[27mh[7m<D0>^@^@^@<E9>[27m@[7m<FE><FF><FF><FF>[27m%l[7m^@^E[27m[7m^H[27mh[7m<D8>^@^@^@<E9>[27m0[7m<FE><FF><FF><FF>[27m%p[7m^@^E^H[27mh[7m<E0>^@^@^@<E9>[27m [7m<FE><FF><FF><FF>[27m%t[7m^@^E[27m[7m^H[27mh[7m<E8>^@^@^@<E9>^P<FE><FF><FF><FF>[27m%x[7m^@^E^H[27mh[7m<F0>^@^@^@<E9>^@<FE><FF><FF><FF>[27m%|[7m^@[27m[7m^E^H[27mh[7m<F8>^@^@^@<E9><F0><FD><FF><FF><FF>[27m%[7m<80>^@^E^H[27mh[7m^@^A^@^@<E9><E0><FD><FF><FF>[27m
395[7m<FF>[27m%[7m<84>^@^E^H^A^@^@<E9><D0><FD><FF><FF><FF>[27m%[7m<88>^@^E^H[27mh[7m^P^A^@^@<E9><C0><FD>[27m
396[7m<FF><FF><FF>[27m%[7m<8C>^@^E^H[27mh[7m^X^A^@^@<E9><B0><FD><FF><FF><FF>[27m%[7m<90>^@^E^H[27mh [7m^A^@^@<E9>[27m
397[7m<A0><FD><FF><FF><FF>[27m%[7m<94>^@^E^H[27mh([7m^A^@^@<E9><90><FD><FF><FF><FF>[27m%[7m<98>^@^E^H[27mh0[7m^A^@[27m[7m^@<E9><80><FD><FF><FF><FF>[27m%[7m<9C>^@^E^H[27mh8[7m^A^@^@<E9>[27mp[7m<FD><FF><FF><FF>[27m%[7m<A0>^@^E^H[27mh@
398[7m^A^@^@<E9>[27m`[7m<FD><FF><FF><FF>[27m%[7m<A4>^@^E^H[27mhH[7m^A^@^@<E9>[27mP[7m<FD><FF><FF><FF>[27m%[7m<A8>^@^E^H[27mhP[7m^A^@^@<E9>[27m@[7m<FD><FF><FF><FF>[27m%[7m<AC>^@^E^H[27mhX[7m^A^@^@<E9>[27m0[7m<FD><FF><FF><FF>[27m%[7m<B0>^@^E^H[27mh`[7m^A^@^@<E9>[27m [7m<FD><FF><FF><FF>[27m%[7m<B4>^@^E^H[27mhh[7m^A^@^@<E9>^P<FD><FF><FF><FF>[27m%[7m<B8>^@^E^H[27mhpp[7m^A^@^@<E9>^@<FD><FF><FF><FF>[27m%[7m<BC>^@^E^H[27mhx[7m^A^@^@<E9><F0><FC><FF><FF><FF>[27m%[7m<C0>^@[27m
399:[K [K[7m^E^H[27mh[7m<80>^A^@^@<E9><E0><FC><FF><FF><FF>[27m%[7m<C4>^@^E^H[27mh[7m<88>^A^@^@<E9><D0><FC><FF>[27m
400[7m<FF><FF>[27m%[7m<C8>^@^E^H[27mh[7m<90>^A^@^@<E9><C0><FC><FF><FF><FF>[27m%[7m<CC>^@^E^H[27mh[7m<98>^A^@^@<E9>[27mü[7m<B0><FC><FF><FF><FF>[27m%[7m<D0>^@^E^H[27mh[7m<A0>^A^@^@<E9><A0><FC><FF><FF><FF>[27m%[7m<D4>^@^E^H[27mh
401[7m<A8>^A^@^@<E9><90><FC><FF><FF><FF>[27m%[7m<D8>^@^E^H[27mh[7m<B0>^A^@^@<E9><80><FC><FF><FF><FF>[27m%%[7m<DC>^@^E^H[27mh[7m<B8>^A^@^@<E9>[27mp[7m<FC><FF><FF><FF>[27m%[7m<E0>^@^E^H[27mh[7m<C0>^A^@^@<E9>[27m`[7m<FC><FF>[27m
402[7m<FF><FF>[27m%[7m<E4>^@^E^H[27mh[7m<C8>^A^@^@<E9>[27mP[7m<FC><FF><FF><FF>[27m%[7m<E8>^@^E^H[27mh[7m<D0>^A^@^@<E9>[27m@
403[7m<FC><FF><FF>^@^@^@^@^@^@^@^@^@^@^@^@[27m1[7m<ED>[27m^[7m<89><E1><83><E4><F0>[27mPTRh0[7m<D8>^D^H[27mh@
404[7m<D8>^D^H[27mQVh[7m<F4><96>^D^H<E8>[27m#[7m<FD><FF><FF><U+110410><90><90><90><90><90><90><90>[27m
405[7m<90><90><90><90>[27mU[7m<89><E5>[27mS[7m<83><EC>^D<80>[27m=[7m<84>^L^E^H^@[27mu?[7m<A1><88>^L^E^H<BB><C0>[27m
406[7m<FE>^D^H<81><EB><BC><FE>^D^H<C1><FB>^B<83><EB>^A[27m9[7m<D8>[27ms[7m^^<8D><B6>^@^@^@^@<83><C0>[27m[7m^A<A3><88>^L^E^H<FF>^T<85><BC><FE>^D^H<A1><88>^L^E^H[27m9[7m<D8>[27mr[7m<E8><C6>^E<84>^L^E^H^A[27mƒ[7m<83><C4>^D[27m[]Ít&[7m^@<8D><BC>[27m'[7m^@^@^@^@[27mU[7m<89><E5><83><EC>^X<A1><C4><FE>^D^H<85><C0>[27mt[7m^R[27mž[7m<B8>^@^@^@^@<85><C0>[27mt    [7m<C7>^D[27m$[7m<C4><FE>^D^H<FF><D0><C9>[27mÐU[7m<89><E5><83><E4><F0>[27m
407[7m<83><EC>[27m [7m<C7>^E^@^M^E^H<CB><D9>^D^H<8B>[27mE[7m^L<89>[27mD$[7m^D<8B><89>^D[27m$[7m<E8>^]^G^@^@<C7>^D[27m$[7m^@^M^E^H<E8><EF>[27m+[7m^@^@<85><C0>[27mt[7m^L<C7>^D[27m$[7m^A^@^@^@<E8><CF><FE><FF><FF><C7>^D[27m$[7m^@^M^E[27m[7m^H<E8><97>[27m-[7m^@^@<85><C0>[27mt[7m^L<C7>^D[27m$[7m^A^@^@^@<E8><B3><FE><FF><FF><C7>[27mD$[7m^\<FF><FF>[27m
408[7m<FF><FF><C7>[27mD$[7m^X^A^@^@^@<C7>[27mD$[7m^T^A^@^@^@<C7>[27mD$[7m^P<FF><FF><FF><FF><C7>[27mD$[7m^L^A^@^@^@[27mD[7m<C7>[27mD[7m^A^@^@^@<C7>[27mD$[7m^D<D1><D9>^D^H<C7>^D[27m$[7m^@^M^E^H<E8>[27mK:[7m^@^@<85><C0>[27mu,[7m<E8><EE>[27m?[7m^@[27m
409[7m^@<B9><DA><D9>^D^H<8B>^U[27m,[7m^L^E^H<89>[27mD[7m<89>L[27m$[7m^D<89>^T[27m$[7m<E8>[27mk[7m<FD><FF><FF><C7>^D[27m$[7m^A^@[27m
410[7m^@^@<E8>[27m?[7m<FE><FF><FF><C7>^D[27m$[7m^@^M^E^H<E8>^?[27m6[7m^@^@<89>^D[27m$[7m<E8><EB><FC><FF><FF><C7>[27mD$[7m^D[27mC[7m<9C>^D^H<C7>^D[27m$[7m^B^@^@^@<E8>^G<FB><FF><FF><E8>^W^\^@^@<A1><90>^L^E^H<85><C0>[27mt
411[7m^G<E8>[27m#[7m^@^@^@<EB>^N<A1>[27m [7m^A^E^H<85><C0>[27mt[7m^E<E8>[27mJ[7m^@^@^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m|.[7m^@^@[27m
412[7m<B8>^@^@^@^@<C9><C3>[27mU[7m<89><E5><83><EC>^X<E8><96><FB><FF><FF><A3><E0>^L^E^H<E8>[27m|
413:[K [K[7m<FC><FF><FF><C7>^D[27m$[7m^A^@^@^@<E8>[27m`[7m<FC><FF><FF><E8><9B><FD><FF><FF><E8><F3>^A^@^@[27m
414[7m<E8>[27mY[7m^D^@^@<E8><DC><FA><FF><FF><C9><C3>[27mU[7m<89><E5><83><EC>[27m([7m<C7>[27mE[7m<F0>^@^@^@^@<E8>[27m
415[7m<96>^C^@^@<E8>^K^D^@^@<B8><DE><D9>^D^H<C7>[27mD$[7m^D<F3><D9>^D^H<89>^D[27m$[7m<E8>[27m>[7m<FC><FF>[27m
416[7m<FF><B8><FE><D9>^D^H<89>^D[27m$[7m<E8>[27m1[7m<FC><FF><FF><A1>[27m`[7m^L^E^H<89>^D[27m$[7m<E8>[27mt[7m<FB><FF><FF>[27m
417[7m<C7>[27mE[7m<F4>^@^@^@^@<EB>[27m)[7m<C7>^D[27m$[7m^A^@^@^@<E8><9F><FC><FF><FF><C7>^D[27m$.[7m^@^@^@<E8><93>[27m
418[7m<FA><FF><FF><A1>[27m`[7m^L^E^H<89>^D[27m$[7m<E8>[27mF[7m<FB><FF><FF><83>[27mE[7m<F4>^A<83>[27m}[7m<F4>^D[27m~[7m<D1><C7>^D[27m$$ [7m^@^@^@<E8>[27mp[7m<FA><FF><FF><C7>[27mE[7m<F4>^@^@^@^@<EB>[27ma[7m<8B>[27mU[7m<F4><89><D0><C1><E0>^B^A<D0>[27mà[7m<C1><E0>^B<8B><80>[27mP[7m^A^E^H<FF>[27mЅ[7m<C0>[27muD[7m<83>[27m}[7m<F0>^@[27mu[7m^O<B8>^F<DA>^D^H<89>^D[27m$[7m<E8><AB>[27m
419[7m<FB><FF><FF><EB>^M<B8>^^<DA>^D^H<89>^D[27m$[7m<E8><9C><FB><FF><FF><8B>[27mU[7m<F4><89><D0><C1>[27m[7m<E0>^B^A<D0><C1><E0>^B<8B><80>[27m@[7m^A^E^H<89>^D[27m$[7m<E8><81><FB><FF><FF><C7>[27mE[7m<F0>^A^@^@[27m
420[7m^@<83>[27mE[7m<F4>^A<83>[27m}[7m<F4>^G[27m~[7m<99><E8>[27mS[7m^C^@^@<83>[27m}[7m<F0>^@[27mu[7m^N<C7>^D[27m$![7m<DA>^D^H<E8>[27m      ÿ[7m<FC><FF><FF><EB>^L<C7>^D[27m$
421[7m^@^@^@<E8><DB><F9><FF><FF><C9><C3>[27mU[7m<89><E5><83><EC>^X<A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@[27m
422[7m<C7>[27mD$[7m^D^@^@^@^@<89>^D[27m$[7m<E8>[27mF[7m<F9><FF><FF><A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^@^@^D^@[27m‰[7m<89>^D[27m$[7m<E8>[27mY[7m<FC><FF><FF><E8>[27mP[7m^@^@^@<A1>[27m [7m^L^E^H<C7>[27mD[7m^D^@^@^@<C7>[27mD$[7m^D^@^@^@^@<89>[27m
423[7m^D[27m$[7m<E8>^G<F9><FF><FF><C7>[27mD$[7m^D<F3><D9>^D^H<C7>^D[27m$([7m<DA>^D^H<E8><83><F9><FF><FF>[27m
424[7m<A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^@^@^D^@<89>^D[27m$[7m<E8><86><FB><FF><FF><C9><C3>[27mU[7m<89>[27mì[7m<E5><83><EC>[27m([7m<A1>[27mD[7m^L^E^H<89>[27mE[7m<F4><EB>^Y<A1>[27m [7m^L^E^H<C7>[27mD$[7m^D[27m [7m^@^@^@<89>^D[27m$[7m<E8><9F>[27mÿ[7m<F8><FF><FF><83>[27mm[7m<F4>^A<83>[27m}[7m<F4>^@^?<E1><C9><C3>[27mU[7m<89><E5><83><EC>[27m8[7m<C7>[27mE[7m<F4><FF>[27m
425[7m<FF><FF><FF><E8><AF>^A^@^@<E8>[27m$[7m^B^@^@<EB>^A<90><A1>[27m@[7m^L^E^H<89>[27mE[7m<EC><A1>[27mD[7m^L^E^H[27m
426[7m<89>[27mE[7m<E8><A1>[27m [7m^L^E^H<89>^D[27m$[7m<E8>[27m<[7m<F9><FF><FF><A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^@^@[27m[7m^@^@<89>^D[27m$[7m<E8>[27mO[7m<F8><FF><FF><E8><E1><FE><FF><FF><A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D[27m[7m^B^@^@^@<89>^D[27m$[7m<E8>[27m-[7m<F8><FF><FF><C7>[27mE[7m<E4>^@^@^@^@<EB>^Y<8B>[27mU[7m<E4><89><D0><C1><E0>[27m:[K [K[7m^B^A<D0><C1><E0>^B<8B><80>[27mH[7m^A^E^H<FF>[27mЃE[7m<E4>^A<83>[27m}[7m<E4>^G[27m~[7m<E1><A1>[27m@[7m^L^E^H<8D>[27mP
427[7m<FF><A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<89>[27mT$[7m^D<89>^D[27m$[7m<E8><E4><F7><FF><FF><E8>^K<FF><FF>[27m
428[7m<FF><A1>[27m@[7m^L^E^H<8D>[27mP[7m<FF><A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<89>[27mT$[7m^D<89>^D[27m$[7m<E8><BE><F7><FF>[27m
429[7m<FF><A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^@^@^D^@<89>^D[27m$[7m<E8><D1><FA><FF><FF><C7>^D[27m$=
430[7m<DA>^D^H<E8>[27m%[7m<F8><FF><FF><A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^@^@^D^@<89>^D[27m$[7m<E8>[27m(
431[7m<FA><FF><FF><C7>^D[27m$?[7m<DA>^D^H<E8><FC><F7><FF><FF><A1>[27m@[7m^L^E^H<8D>[27mP[7m<FE><A1>[27m [7m^L^E^H[27m
432[7m<C7>[27mD[7m^@^@^@^@<89>[27mT$[7m^D<89>^D[27m$[7m<E8>[27mK[7m<F7><FF><FF><A1>[27m [7m^L^E^H<89>^D[27m$[7m<E8><9E><F8><FF>[27m
433[7m<FF><C7>[27mE[7m<F0>^@^@^@^@<C7>[27mE[7m<F4><FF><FF><FF><FF><EB>^T<A1>[27m [7m^L^E^H<89>^D[27m$[7m<E8>[27mA[7m<F9>[27m
434[7m<FF><FF><89>[27mE[7m<F4><83>[27mE[7m<F0>^A<83>[27m}[7m<F0>[27m   [7m^?[27m [7m<83>[27m}[7m<F4>[27mqt[7m^Z<83>[27m}[7m<F4>[27mQt[7m^T<A1>[27m@[7m^L^E^H[27m99E[7m<EC>[27mu
435[7m<A1>[27mD[7m^L^E^H[27m9E[7m<E8>[27mtƃ}[7m<F4>[27mqt
436[7m<83>[27m}[7m<F4>[27mQ[7m^O<85>[27mZ[7m<FE><FF><FF><C9><C3>[27mU[7m<89><E5><83><EC>[27m([7m<8D>[27mE[7m<F4><89>[27mD[7m<C7>[27mD$[7m^D^H[27m
437[7m^@^@^@<C7>^D[27m$[7m^@^M^E^H<E8><F9>[27m#[7m^@^@<8B>[27mE[7m<F4><80><CC>^A<89>[27mD[7m<C7>D[27m$[7m^D^H^@^@^@<C7>^D[27m$$[7m^@^M^E^H<E8>[27m_%[7m^@^@<C9><C3>[27mU[7m<89><E5><83><EC>^X<83>^B[27mu+[7m<E8><E0><F6><FF><FF><A1>[27m
438[7m<90>^L^E^H<85><C0>[27mt[7m^E<E8>[27mJ[7m^@^@^@<C7>^D[27m$E[7m<DA>^D^H<E8>^F<F9><FF><FF><C7>^D[27m$[7m^@^@^@[27m
439[7m^@<E8><8A><F9><FF><FF><C9><C3>[27mU[7m<89><E5><83><EC>^X<C7>[27mE[7m<F4>^@^@^@^@<EB>^Y<8B>[27mU
440[7m<F4><89><D0><C1><E0>^B^A<D0><C1><E0>^B<8B><80>[27mD[7m^A^E^H<FF>[27mЃE[7m<F4>^A<83>[27m}[7m<F4>^G[27m~
441[7m<E1><C9><C3>[27mU[7m<89><E5><83><EC>^X<C7>[27mE[7m<F4>^@^@^@^@<EB>^Y<8B>[27mU[7m<F4><89><D0><C1><E0>[27m
442[7m^B^A<D0><C1><E0>^B<8B><80>[27mL[7m^A^E^H<FF>[27mЃE[7m<F4>^A<83>[27m}[7m<F4>^G[27m~[7m<E1><C9><C3>[27mU[7m<89><E5>[27m
443[7m<83><EC>[27m([7m<A1>[27m [7m^L^E^H<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D[27m
444[7m^@^@^@<89>^D[27m$[7m<E8><E5><F5><FF><FF><E8><E0><F7><FF><FF><89>[27mE[7m<EC><E8><D8><F7><FF>[27m
445[7m<FF><89>[27mE[7m<E8><8B>[27mE[7m<EC><83><E0>^O<89>[27mD[7m<C7>D[27m$[7m^D^\^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27ms$[7m^@^@[27m‹[7m<8B>[27mE[7m<E8><89>[27mD[7m<C7>D[27m$[7m^D[27m [7m^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mX$[7m^@^@<C7>[27mD[7m^_^@^C^@<C7>[27mD$[7m^D^T[27m
446:[K [K[7m^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m<$[7m^@^@<C7>[27mD[7m^_^@^@^@<C7>[27mD$[7m^D^T^@<98>^@<C7>^D[27m$[7m^@^M^E^H[27m
447[7m<E8>[27m $[7m^@^@<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^X^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8>^D[27m$[7m^@^@<C7>^D[27m$[7m<A0>[27m
448[7m<86>^A^@<E8>[27mL[7m<F6><FF><FF><C7>[27mD[7m^B^@^@^@<C7>[27mD$[7m^D^X^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8><DC>[27m#[7m^@^@<C7>[27mD[7m^A^@^@^@<C7>[27mD$[7m^D^@^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><C0>[27m#[7m^@^@<C7>[27mD[7m^@^@^@^@<C7>[27mDD$[7m^D^@^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><A4>[27m#[7m^@^@<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^H^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><88>[27m#[7m^@^@<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D[27m [7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27ml#[7m^@^@<C9>[27mU[7m<C3>[27mU[7m<89><E5><83><EC>[27m([7m<C7>^E<8C>^L^E^H^@^@^@^@<C7>^E[27md[7m^L^E^H^@^@^@^@<E9><E2>^@^@[27m
449[7m^@^O<BE>[27mE[7m<F7><83><F8>[27mitU[7m<83><F8>[27mi[7m^?^O<83><F8>[27m?tc[7m<83><F8>[27mct[7m^T<E9><AC>^@^@^@<83>[27m
450[7m<F8>[27mntH[7m<83><F8>[27mst[7m^^<E9><9D>^@^@^@<C7>^E<90>^L^E^H^A^@^@^@<C7>^E[27m [7m^A^E^H^@^@^@^@[27m
451[7m<E9><9D>^@^@^@<C7>^E[27m [7m^A^E^H^A^@^@^@<C7>^E<90>^L^E^H^@^@^@^@<E9><84>^@^@^@<A1>[27m
452[7m<80>^L^E^H<A3>^@^M^E^H<EB>[27mx[7m<C7>^E<94>^L^E^H^A^@^@^@<EB>[27ml[7m<A1>[27m([7m^L^E^H<89>^D[27m$[7m<E8>[27m
453[7m<CC><F3><FF><FF><85><C0>[27mt"[7m<8B>^M[27m([7m^L^E^H<BA>[27m_[7m<DA>^D^H<A1>[27m,[7m^L^E^H<89>[27mL[7m<89>T[27m$[7m^D<89>[27m[7m^D[27m$[7m<E8>[27m([7m<F6><FF><FF><EB>[27m [7m<8B>^M[27m([7m^L^E^H<BA>[27mx[7m<DA>^D^H<A1>[27m,[7m^L^E^H<89>[27mL[7m<89>T[27m$[7m^D<89>[27m
454[7m^D[27m$[7m<E8>^F<F6><FF><FF><8B>[27mE[7m^L<8B>^@<89>^D[27m$[7m<E8>[27m5[7m^@^@^@<C7>^D[27m$[7m^A^@^@^@<E8><CD><F6>[27m
455[7m<FF><FF><C7>[27mD[7m<9A><DA>^D^H<8B>[27mE[7m^L<89>[27mD$[7m^D<8B><89>^D[27m$[7m<E8>^S<F5><FF><FF><88>[27mE[7m<F7>[27m
456[7m<80>[27m}[7m<F7><FF>^O<85><F7><FE><FF><FF><C9><C3>[27mU[7m<89><E5><83><EC>^X<B8><A0><DA>^D^H[27m
457[7m<8B><89>T[27m$[7m^D<89>^D[27m$[7m<E8>[27mJ[7m<F5><FF><FF><C7>^D[27m$[7m<D4><DA>^D^H<E8><EE><F5><FF><FF><C7>[27m
458[7m^D[27m$[7m^@<DB>^D^H<E8><E2><F5><FF><FF><C7>^D[27m$&[7m<DB>^D^H<E8><D6><F5><FF><FF><C7>^D[27m$@
459[7m<DB>^D^H<E8><CA><F5><FF><FF><C7>^D[27m$_[7m<DB>^D^H<E8><BE><F5><FF><FF><C7>^D[27m$[7m<80><DB>[27m
460[7m^D^H<E8><B2><F5><FF><FF><C9><C3>[27mU[7m<89><E5><83><EC>^X<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^X^@<98>[27m[7m^@<C7>^D[27m$[7m^@^M^E^H<E8><BA>[27m![7m^@^@<C7>^D[27m$[7m<A0><86>^A^@<E8>^B<F4><FF><FF><C7>[27mD[7m^_^@^@^@[27mD[7m<C7>[27mD$[7m^D^T^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8><92>[27m![7m^@^@<C7>^D[27m$[7m^@^@^@^@<E8>^Z<F5><FF><FF>[27m
461[7m<A3><98>^L^E^H<C7>[27mD[7m^B^@^@^@<C7>[27mD$[7m^D^X^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27me![7m^@^@<C9><C3>[27mU
462:[K [K[7m<89><E5>[27mS[7m<83><EC>[27md[7m<C7>[27mE[7m<F0>^H^@^@^@<8D>[27mE[7m<EC><89>[27mD[7m<C7>D[27m$[7m^D^D^@<98>^@<C7>^D[27m$[7m^@^M^E[27m[7m^H<E8><B6>^_^@^@<8D>[27mE[7m<E4><89>[27mD[7m<C7>D[27m$[7m^D^H^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8><9B>^_^@^@[27m
463[7m<8D>[27mE[7m<E8><89>[27mD[7m<C7>[27m[1m[7mD[27m[0m$[7m^D^L^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8><80>^_^@^@<C7>^D[27m$[7m^@^@^@^@<E8>[27mô[7m<8C><F4><FF><FF><89>[27mE[7m<E0><8D>[27mE܉D[7m<C7>[27m[1m[7mD[27m[0m$[7m^D^T^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mV[7m^_^@^@<8B>[27mEE܈E[7m<F7><C7>[27mE[7m<D4>^@^@^@^@<C7>[27mE[7m<D8>^@^@^@^@<EB>^^^O<B6>[27mU[7m<F7><8B>[27mE[7m<U+0609>[27mӉ[7m<C1><D3>[27mØ[7m<FB><89>[27m؃[7m<E0>^A<84><C0>[27mt[7m^D<83>[27mE[7m<D4>^A<83>[27mE[7m<D8>^A<83>[27m}[7m<D8>^G[27m~܋E[7m<EC>^E<FF><FF><FF>[27m[7m^C<C1><E0>^F<BA>^@^@^@^@<89>[27mE[7m<C0><89>[27mU[7m<C4><DF>[27mm[7m<C0><DD>[27m]ȋE[7m<D4>^A<C0><BA>^@^@^@^@[27m‰[7m<89>[27mE[7m<C0><89>[27mU[7m<C4><DF>[27mm[7m<C0><DD>[27mE[7m<C8><DE><C9><DD>[27m]È¡[7m<98>^L^E^H<8B>[27mU[7m<E0><89><D1>[27m)
464[7m<C1><89>[27mȉE[7m<BC><DB>[27mE[7m<BC><DD>[27mE[7m<C8><DE><F1><DD>[27m][7m<C8><DD>[27mE[7m<C8><DD>^E<F0><DB>^D^H<DE>[27mÝ[7m<C9><DD>[27m]ȋM[7m<E4><8B>[27mU[7m<E8><8B>[27mE[7m<EC><DD>[27mE[7m<C8><DD>[27m\$[7m^P<89>[27mL$[7m^L<89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$
465[7m<A8><DB>^D^H<E8><EB><F1><FF><FF><8B>[27mE[7m<E8><85><C0>[27mt[7m^N<8B>[27mE[7m<E4><85><C0>[27mu[7m^G<B8>^A^@[27m[7m^@^@<EB>^E<B8>^@^@^@^@<83><C4>[27md[][7m<C3>[27mU[7m<89><E5><83><EC>^X<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^X[27m
466[7m^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8><D5>^_^@^@<C9><C3>[27mU[7m<89><E5><83><EC>[27m([7m<8D>[27mE[7m<F0><89>[27mD
467[7m<C7>D[27m$[7m^D^H^@<98>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m.[7m^^^@^@<8D>[27mE[7m<F4><89>[27mD[7m<C7>[27mD$[7m^D^L^@<98>^@<C7>[27m[7m^D[27m$[7m^@^M^E^H<E8>^S^^^@^@<8B>[27mE[7m<F4><85><C0>[27mt[7m^N<8B>[27mE[7m<F0><85><C0>[27mu[7m^G<B8>^A^@^@^@<EB>[27m
468[7m^E<B8>^@^@^@^@<C9>[27mÐ[7m<90><90>[27mU[7m<89><E5><83><EC>^X<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^X^@<90>^@[27m
469[7m<C7>^D[27m$[7m^@^M^E^H<E8>[27mV[7m^_^@^@<C7>^D[27m$[7m<A0><86>^A^@<E8><9E><F1><FF><FF><C7>[27mD[7m^_^@^C^@[27m
470[7m<C7>[27mD$[7m^D^T^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m.[7m^_^@^@<C7>^D[27m$[7m^@^@^@^@<E8><B6><F2><FF><FF>[27m
471[7m<A3><9C>^L^E^H<C7>[27mD[7m^B^@^@^@<C7>[27mD$[7m^D^X^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>^A^_^@^@<C9><C3>[27mUU[7m<89><E5>[27mS[7m<83><EC>[27md[7m<C7>[27mE[7m<F0>^H^@^@^@<8D>[27mE[7m<EC><89>[27mD[7m<C7>D[27m$[7m^D^D^@<90>^@<C7>^D[27m$[7m^@^M[27m
472[7m^M^E^H<E8>[27mR[7m^]^@^@<8D>[27mE[7m<E4><89>[27mD[7m<C7>D[27m$[7m^D^H^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m7[7m^]^@^@<8D>[27mED[7m<E8><89>[27mD[7m<C7>D[27m$[7m^D^L^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>^\^]^@^@<C7>^D[27m$[7m^@^@^@^@<E8>[27m([7m<F2>[27m
473[7m<FF><FF><89>[27mE[7m<E0><8D>[27mE܉D[7m<C7>D[27m$[7m^D^T^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8><F2>^\^@^@<8B>[27mE[7m<DC>[27mè:[K [K[7m<C1><E8>^P<83><E0>^C<88>[27mE[7m<F6><8B>[27mE܈E[7m<F7><C7>[27mE[7m<D4>^@^@^@^@<C7>[27mE[7m<D8>^@^@^@^@<EB>^^[27m[7m^O<B6>[27mU[7m<F7><8B>[27mE[7m<U+0609>[27mӉ[7m<C1><D3><FB><89>[27m؃[7m<E0>^A<84><C0>[27mt[7m^D<83>[27mE[7m<D4>^A<83>[27mE[7m<D8>[27m
474[7m^A<83>[27m}[7m<D8>^G[27m~[7m<DC>^O<B6>[27mE[7m<F6><83><F8>^B[27mt[7m^S<83><F8>^C[27mt[7m^W<83><F8>^A[27mu[7mESC<C7>[27mE[7m<D0>^A[27m[7m^@^@^@<EB>^Y<C7>[27mE[7m<D0>^A^@^@^@<EB>^P<C7>[27mE[7m<D0>^B^@^@^@<EB>^G<C7>[27mE[7m<D0>^@^@^@^@<8B>[27mE[7m<EC>^E<FF><FF><FF>^?^A<C0><BA>^@^@^@^@<89>[27mE[7m<C0><89>[27mU[7m<C4><DF>[27mm[7m<C0><DD>[27m]ȋE[7m<D0>^O[27m
475[7m<AF>[27mE[7m<D4>^A<C0><BA>^@^@^@^@<89>[27mE[7m<C0><89>[27mU[7m<C4><DF>[27mm[7m<C0><DD>[27mE[7m<C8><DE><C9><DD>[27m]È¡
476[7m<9C>^L^E^H<8B>[27mU[7m<E0><89><D1>[27m)[7m<C1><89>[27mȉE[7m<BC><DB>[27mE[7m<BC><DD>[27mE[7m<C8><DE><F1><DD>[27m][7m<C8>[27m
477[7m<DD>[27mE[7m<C8><DD>^E[27m@[7m<DC>^D^H<DE><C9><DD>[27m]ȋM[7m<E4><8B>[27mU[7m<E8><8B>[27mE[7m<EC><DD>[27mE[7m<C8><DD>[27m\$[7m^P[27m
478[7m<89>[27mL$[7m^L<89>[27mT[7m<89>[27m[1m[7mD[27m[0m$[7m^D<C7>^D[27m$[7m<F8><DB>^D^H<E8>[27mC[7m<EF><FF><FF><8B>[27mE[7m<E8><85><C0>[27mt[7m^N[27m
479[7m<8B>[27mE[7m<E4><85><C0>[27mu[7m^G<B8>^A^@^@^@<EB>^E<B8>^@^@^@^@<83><C4>[27md[][7m<C3>[27mU[7m<89><E5><83>[27m
480[7m<EC>^X<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^X^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m-[7m^]^@^@<C9><C3>[27mU[7m<89><E5>[27mì[7m<83><EC>[27m([7m<8D>[27mE[7m<F0><89>[27mD[7m<C7>D[27m$[7m^D^H^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8><86>ESC^@^@<8D>[27mE[7m<F4>[27mD[7m<89>[27mD[7m<C7>D[27m$[7m^D^L^@<90>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mk[7mESC^@^@<8B>[27mE[7m<F4><85><C0>[27mt[7m^N<8B>[27mE[7m<F0>[27m
481[7m<85><C0>[27mu[7m^G<B8>^A^@^@^@<EB>^E<B8>^@^@^@^@<C9>[27mÐ[7m<90><90>[27mU[7m<89><E5><83><EC>^X<C7>[27mD[7m^A[27m[7m^@^@^@<C7>[27mD$[7m^D^@^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><AE>^\^@^@<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^@^@[27m
482[7m<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><92>^\^@^@<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^H^@<8C>^@<C7>^D[27m$[7m^@^M^E[27m
483[7m^H<E8>[27mv[7m^\^@^@<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D[27m [7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mZ[7m^\^@^@<C9><C3>[27mU
484[7m<89><E5><83><EC>[27m8[7m<A1><94>^L^E^H<83><F8>^A[27mu[7m^V<C7>^D[27m$H[7m<DC>^D^H<E8>^P<EE><FF><FF>[27m
485[7m<B8>^@^@^@^@<E9><A5>^D^@^@<C7>[27mD[7m^B^@^@^@<C7>[27mD$[7m^D^@^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>^V^\[27m[7m^@^@<8D>[27mE[7m<F0><89>[27mD[7m<C7>D[27m$[7m^D^L^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mw[7m^Z^@^@<8D>[27mE[7m<EC><89>[27mD[7m<C7>[27mD[7mD[27m$[7m^D[27m$[7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m\[7m^Z^@^@<8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D^D^@<8C>^@<C7>^D[27m$[7m^@[27m[7m^M^E^H<E8>[27mA[7m^Z^@^@<8B>[27mE[7m<F4><83><E0>^D<85><C0>^O<95><C0>^O<B6>[27mȋE[7m<F0><83><E0>^A<84>[27mt[7m<C0>[27mt/[7m<8B>[27mE[7m<F0><83><E0>^B<85><C0>[27mt%[7m<8B>[27mE[7m<EC><83><E0>^A<84><C0>[27mt[7mESC<8B>[27mE[7m<EC><83>[27m
486:[K [K[7m<E0>^B<85><C0>[27mt[7m^Q<8B>[27mE[7m<F4><83><E0>^A<84><C0>[27mt[7m^G<BA>^A^@^@^@<EB>^E<BA>^@^@^@^@[27m
487[7m<8B>[27mE[7m<F4><83><E0>^A<84><C0>[27mt[7m^Q<8B>[27mE[7m<F4><83><E0>^D<85><C0>[27mt[7m^G<B8>[27m\[7m<DC>^D^H<EB>^E[27m
488[7m<B8>[27ma[7m<DC>^D^H<89>[27mL$[7m^L<89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$h[7m<DC>^D^H<E8>^U<ED><FF><FF><8D>[27mE[7m<F4>[27m
489[7m<89>[27mD[7m<C7>D[27m$[7m^D^L^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><A2>^Y^@^@<8B>[27mE[7m<F4><83><E0>^D<85><C0>[27m
490[7m^O<95><C0>^O<B6>[27mȋE[7m<F4><83><E0>^B<85><C0>^O<95><C0>^O<B6>[27mЋE[7m<F4><83><E0>^A<85><C0>[27m[7m^O<95><C0>^O<B6><C0><89>[27mL$[7m^L<89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$[7m<98><DC>^D^H<E8><B8><EC><FF><FF>[27m‹[7m<8B>[27mE[7m<F4><83><E0>^A<85><C0>[27mu[7m^X<8B>[27mE[7m<F4><83><E0>^B<85><C0>[27mu[7m^N<C7>^D[27m$[7m<F0><DC>^D^H[27m
491[7m<E8><98><EC><FF><FF><EB>^L<C7>^D[27m$[7m^\<DD>^D^H<E8><8A><EC><FF><FF><8B>[27mE[7m<F4>[27m%[7m^@<FF>[27m
492[7m<FF>^@<89><C1><C1><E9>^H<8B>[27mE[7m<F4><83><E0>^P<85><C0>^O<95><C0>^O<B6>[27mЋE[7m<F4><83>[27m
493[7m<E0>^H<85><C0>^O<95><C0>^O<B6><C0><89>[27mL$[7m^L<89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$ [7m<DD>^D^H<E8>[27mI[7m<EC>[27mÿ[7m<FF><FF><8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D^P^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><D6>^X^@^@<8B>[27mE[7m<F4>[27m
494[7m<BA>^@^@^@^@<89>[27mE[7m<E0><89>[27mU[7m<E4><8B>[27mE[7m<E0><8B>[27mU[7m<E4><89>[27mž[7m^@^@^@^@<89>[27mE[7m<E0><89>[27mU[7m<E4>[27m
495[7m<8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D^T^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><9A>^X^@^@<8B>[27mE[7m<F4><BA>^@^@^@[27m[7m^@^A[27mE[7m<E0>^Q[27mU[7m<E4><8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D^X^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mq[7m^X^@^@<8B>[27mE
496[7m<F4><BA>^@^@^@^@<89>[27mE[7m<U+0609>[27mU܋E؋U܉¾[7m^@^@^@^@<89>[27mE[7m<U+0609>[27mU܍E[7m<F4><89>[27mD[7m<C7>[27mD$[7m^D^\[27m
497[7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m5[7m^X^@^@<8B>[27mE[7m<F4><BA>^@^@^@^@^A[27mE[7m<D8>^Q[27mU܋E[7m<E0><8B>[27mU[7m<E4>[27mD[7m<89>[27mD$[7m^D<89>[27mT[7m<C7>^D[27m$x[7m<DD>^D^H<E8>[27me[7m<EB><FF><FF><8B>[27mE؋U܉D$[7m^D<89>[27mT[7m<C7>^D[27m$[7m<C1><DD>^D[27m[7m^H<E8>[27mK[7m<EB><FF><FF><8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D[27m$[7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><D8>^W^@^@[27m
498[7m<8B>[27mE[7m<F4><83><E0>^D<85><C0>^O<95><C0>^O<B6>[27mȋE[7m<F4><83><E0>^B<85><C0>^O<95><C0>^O[27m
499[7m<B6>[27mЋE[7m<F4><83><E0>^A<85><C0>^O<95><C0>^O<B6><C0><89>[27mL$[7m^L<89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$[7m<C8>[27m[7m<DD>^D^H<E8><EE><EA><FF><FF><8B>[27mE[7m<F4><83><E0>^A<85><C0>[27mu[7m^X<8B>[27mE[7m<F4><83><E0>^B[27m
500[7m<85><C0>[27mu[7m^N<C7>^D[27m$[7m<F0><DC>^D^H<E8><CE><EA><FF><FF><EB>^L<C7>^D[27m$[7m^\<DD>^D^H<E8>[27m
501[7m<C0><EA><FF><FF><8B>[27mE[7m<F4>[27m%[7m^@<FF><FF>^@<89><C1><C1><E9>^H<8B>[27mE[7m<F4><83><E0>^P<85>[27m
502:[K [K[7m<C0>^O<95><C0>^O<B6>[27mЋE[7m<F4><83><E0>^H<85><C0>^O<95><C0>^O<B6><C0><89>[27mL$[7m^L<89>[27mT
503[7m<89>D[27m$[7m^D<C7>^D[27m$ [7m<DD>^D^H<E8>^?<EA><FF><FF><8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D[27m([7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>^L^W^@^@<8B>[27mE[7m<F4><BA>^@^@^@^@<89>[27mE[7m<E0><89>[27mU[7m<E4><8B>[27mE[7m<E0><8B>[27mU[7m<E4>[27m
504[7m<89>[27mž[7m^@^@^@^@<89>[27mE[7m<E0><89>[27mU[7m<E4><8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D[27m,[7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H[27m
505[7m<E8><D0>^V^@^@<8B>[27mE[7m<F4><BA>^@^@^@^@^A[27mE[7m<E0>^Q[27mU[7m<E4><8D>[27mE[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D[27m0[7m^@<8C>^@[27m[7m<C7>^D[27m$[7m^@^M^E^H<E8><A7>^V^@^@<8B>[27mE[7m<F4><BA>^@^@^@^@<89>[27mE[7m<U+0609>[27mU܋E؋U܉¾[7m^@^@^@^@[27m
506[7m<89>[27mE[7m<U+0609>[27mU܍E[7m<F4><89>[27mD[7m<C7>D[27m$[7m^D[27m4[7m^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mk[7m^V^@^@<8B>[27mE[7m<F4>[27m
507[7m<BA>^@^@^@^@^A[27mE[7m<D8>^Q[27mU܋E[7m<E0><8B>[27mU[7m<E4><89>[27mD$[7m^D<89>[27mT[7m<C7>^D[27m$ [7m<DE>^D^H<E8><9B><E9>[27m
508[7m<FF><FF><8B>[27mE؋U܉D$[7m^D<89>[27mT[7m<C7>^D[27m$[7m<C1><DD>^D^H<E8><81><E9><FF><FF><8B>[27mE[7m<F4><83>[27m
509[7m<E0>^A<84><C0>[27mt[7m^Q<8B>[27mE[7m<F4><83><E0>^D<85><C0>[27mt[7m^G<B8>^A^@^@^@<EB>^E<B8>^@^@^@^@[27m
510[7m<C9><C3>[27mU[7m<89><E5><83><EC>^X<C7>[27mD[7m^@^@^@^@<C7>[27mD$[7m^D^@^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27mi[7m^W[27m[7m^@^@<C9><C3>[27mU[7m<89><E5><83><EC>[27m([7m<A1><94>^L^E^H<83><F8>^A^O<84><9B>^@^@^@<8D>[27mE[7m<F4>[27m
511[7m<89>[27mD[7m<C7>D[27m$[7m^D^D^@<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><B4>^U^@^@<8D>[27mE[7m<F0><89>[27mD[7m<C7>D[27m$[7m^D^L^@[27m
512[7m<8C>^@<C7>^D[27m$[7m^@^M^E^H<E8><99>^U^@^@<8D>[27mE[7m<EC><89>[27mD[7m<C7>D[27m$[7m^D[27m$[7m^@<8C>^@<C7>^D[27m$[7m^@^M^E[27m
513[7m^H<E8>[27m~[7m^U^@^@<8B>[27mE[7m<F0><83><E0>^A<84><C0>[27mt9[7m<8B>[27mE[7m<F0><83><E0>^B<85><C0>[27mt/[7m<8B>[27mE[7m<EC>[27mà[7m<83><E0>^A<84><C0>[27mt%[7m<8B>[27mE[7m<EC><83><E0>^B<85><C0>[27mt[7mESC<8B>[27mE[7m<F4><83><E0>^A<84><C0>[27mt
514[7m^Q<8B>[27mE[7m<F4><83><E0>^B<85><C0>[27mt[7m^G<B8>^A^@^@^@<EB>^E<B8>^@^@^@^@<EB>^E<B8>^A^@^@^@[27mÃ[7m<C9>[27mÐU[7m<89><E5><83><EC>[27m([7m<C7>[27mE[7m<F4>^@^@^@^@<EB>[27m [7m<8B>[27mE[7m<F4><C7>^D<85><A0>^L^E^H^@^@^@[27m[7m^@<8B>[27mE[7m<F4><C7>^D<85><B0>^L^E^H^@^@^@^@<83>[27mE[7m<F4>^A<83>[27m}[7m<F4>^C[27m~[7m<DA><C7>[27mD[7m^@^@^@^@[27m
515[7m<C7>[27mD$[7m^D^D^@<9C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m_[7m^V^@^@<C7>^D[27m$[7m^A^@^@^@<E8>^G<EA><FF><FF>[27m
516[7m<C7>[27mD[7m^_^@^@^@<C7>[27mD$[7m^D^L^@<9C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m7[7m^V^@^@<C7>[27mD[7m^B^@^@^@<C7>[27mD$[7m^D^D[27m[7m^@<9C>^@<C7>^D[27m$[7m^@^M^E^H<E8>ESC^V^@^@<C9><C3>[27mU[7m<89><E5><83><EC>[27m8[7m<C7>[27mE[7m<D8>^A^@^@^@[27m
517[7m<A1>[27m [7m^L^E^H<85><C0>[27mt[7m^K<A1>[27m [7m^L^E^H^O<B7>^@<98><EB>^E<B8><FF><FF><FF><FF><89>[27mEÜ¡ [7m^L[27m:[K [K[7m^E^H<85><C0>[27mt[7m^L<A1>[27m [7m^L^E^H^O<B7>[27m@[7m^B<98><EB>^E<B8><FF><FF><FF><FF><89>[27mE[7m<E0><8B>[27mE܍HH[7m^A<A1>[27m [7m^L^E^H<8B>[27mU[7m<E0><89>[27mT[7m<89>[27mL$[7m^D<89>^D[27m$[7m<E8><F9><E6><FF><FF><C7>[27mE[7m<E4>^@^@^@^@[27mó[7m<E9><F3>^@^@^@<8B>[27mE[7m<E4><83><C0>^A<89>[27mD$[7m^D<C7>^D[27m$i[7m<DE>^D^H<E8>[27mg[7m<E7><FF><FF><8B>[27mE
518[7m<E4><C1><E0>^O<8D><90>^@[27m [7m<9E>^@<8D>[27mE[7m<F0><89>[27mD[7m<89>T[27m$[7m^D<C7>^D[27m$[7m^@^M^E^H<E8><EC>^S^@[27m[7m^@<8B>[27mE[7m<F0>[27m%[7m^@^A^@^@<85><C0>[27mt[7m^]<8B>[27mE[7m<F0>[27m%[7m^@^@^O^@<C1><E8>^P<89>[27mD$[7m^D<C7>^D[27m$u[7m<DE>[27m
519[7m^D^H<E8>^]<E7><FF><FF><EB>^S<C7>^D[27m$[7m<81><DE>^D^H<E8>^O<E7><FF><FF><C7>[27mE[7m<D8>^@^@^@[27m[7m^@<8B>[27mE[7m<E4><C1><E0>^O<8D><90>^D[27m [7m<9E>^@<8D>[27mE[7m<EC><89>[27mD[7m<89>T[27m$[7m^D<C7>^D[27m$[7m^@^M^E^H<E8>[27m
520[7m<8D>^S^@^@<8B>[27mE[7m<E4><C1><E0>^O<8D><90>^H[27m [7m<9E>^@<8D>[27mE[7m<E8><89>[27mD[7m<89>T[27m$[7m^D<C7>^D[27m$[7m^@^M[27m
521[7m^M^E^H<E8>[27mj[7m^S^@^@<8B>[27mU[7m<E8><8B>[27mE[7m<EC><89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$[7m<8A><DE>^D^H<E8><A8><E6>[27m
522[7m<FF><FF><C7>^D[27m$[7m<9E><DE>^D^H<E8><9C><E6><FF><FF><8B>[27mE[7m<E8><85><C0>[27mt[7m^G<C7>[27mE[7m<D8>^@^@[27m[7m^@^@<83>[27mE[7m<E4>^A<83>[27m}[7m<E4>^C^O<8E>^C<FF><FF><FF><A1>[27m [7m^L^E^H<8B>[27mU[7m<E0><89>[27mT[7m<8B>U[27m܉T$
523[7m^D<89>^D[27m$[7m<E8><D5><E5><FF><FF><83>[27m}[7m<D8>^@[27mt[7m^G<B8><A0><DE>^D^H<EB>^E<B8><A5><DE>^D[27m
524[7m^H<89>[27mD$[7m^D<C7>^D[27m$[7m<AA><DE>^D^H<E8>[27mC[7m<E6><FF><FF><8B>[27mE܍H[7m^E<A1>[27m [7m^L^E^H<8B>[27mU[7m<E0><89>[27mT$[7m<89>L[27m$[7m^D<89>^D[27m$[7m<E8><95><E5><FF><FF><8B>[27mE[7m<D8><C9><C3>[27mU[7m<89><E5><83><EC>^X<C7>[27mD[7m^@^@[27m[7m^@^@<C7>[27mD$[7m^D^D^@<9C>^@<C7>^D[27m$[7m^@^M^E^H<E8>[27m*[7m^T^@^@<C9><C3>[27mU[7m<89><E5><83><EC>[27m8[7m<C7>[27mE
525[7m<E0>^A^@^@^@<C7>[27mE[7m<E4>^@^@^@^@<E9><8E>^@^@^@<8B>[27mE[7m<E4><C1><E0>^O<8D><90>^@[27m [7m<9E>^@[27m
526[7m<8D>[27mE[7m<F0><89>[27mD[7m<89>T[27m$[7m^D<C7>^D[27m$[7m^@^M^E^H<E8>[27mh[7m^R^@^@<8B>[27mE[7m<F0>[27m%[7m^@^A^@^@<85><C0>[27mu[7m^G[27m
527[7m<C7>[27mE[7m<E0>^@^@^@^@<8B>[27mE[7m<E4><C1><E0>^O<8D><90>^D[27m [7m<9E>^@<8D>[27mE[7m<EC><89>[27mD[7m<89>T[27m$[7m^D<C7>[27m
528[7m^D[27m$[7m^@^M^E^H<E8>[27m2[7m^R^@^@<8B>[27mE[7m<E4><C1><E0>^O<8D><90>^H[27m [7m<9E>^@<8D>[27mE[7m<E8><89>[27mD[7m<89>T[27m$[7m^D[27m[7m<C7>^D[27m$[7m^@^M^E^H<E8>^O^R^@^@<8B>[27mE[7m<E8><85><C0>[27mt[7m^G<C7>[27mE[7m<E0>^@^@^@^@<83>[27mE[7m<E4>^A<83>[27m}[7m<E4>^C^O<8E>[27mh[7m<FF><FF><FF><8B>[27mE[7m<E0><C9>[27mÐ[7m<90>[27mU[7m<89><E5>[27m][7m<C3>[27mU[7m<89><E5><83><EC>[27mh[7m<C7>[27mE[7m<F0>^H^@^@^@<C7>[27mE[7m<BC>^A^@^@^@<A1>[27m [7m^L^E^H<85><C0>[27mt[7m^K<A1>[27m [7m^L^E^H^O<B7>^@<98><EB>^E[27mž[7m<B8><FF><FF><FF><FF><89>[27mE[7m<C0><A1>[27m [7m^L^E^H<85><C0>[27mt[7m^L<A1>[27m [7m^L^E^H^O<B7>[27m@[7m^B<98><EB>[27m
529:[K [K[7m^E<B8><FF><FF><FF><FF><89>[27mEċE[7m<C0><8D>[27mH[7m^A<A1>[27m [7m^L^E^H<8B>[27mUĉT[7m<89>L[27m$[7m^D<89>^D[27m$[7m<E8>[27mD
530[7m<E4><FF><FF><C7>[27mE[7m<D8>^@^@^@^@<E9><A4>^A^@^@<C7>[27mD$[7m^D^H^@[27mD[7m^@<8B>[27mE[7m<U+0609>^D[27m$[7m<E8>[27m
531[7m<FB>^A^@^@<89>[27mE[7m<D4><C7>[27mD$[7m^D^L^@[27mD[7m^@<8B>[27mE[7m<U+0609>^D[27m$[7m<E8><E5>^A^@^@<89>[27mEЋE[7m<D4><C1>[27m
532[7m<E0>^P^K[27mEЉE[7m<CC><C7>[27mD$[7m^D[27md[7m^@[27mD[7m^@<8B>[27mE[7m<U+0609>^D[27m$[7m<E8><C3>^A^@^@<89>[27mEȋE؃[7m<C0>^A<89>[27mD$
533[7m^D<C7>^D[27m$[7m<B8><DE>^D^H<E8>[27md[7m<E4><FF><FF><83>[27m}[7m<D4>^@[27mx[7m^F<83>[27m}[7m<D0>^@[27my[7m^U<C7>^D[27m$[7m<C5>[27m
534[7m<DE>^D^H<E8>[27mL[7m<E4><FF><FF><C7>[27mE[7m<BC>^@^@^@^@<EB>[27m?[7m<8B>[27mẼ[7m<E0><F0>[27m=[7m<B0>[27m` [7m^@[27mt[7m^\<8B>[27mẺD$
535[7m^D<C7>^D[27m$[7m<E3><DE>^D^H<E8>[27m#[7m<E4><FF><FF><C7>[27mE[7m<BC>^@^@^@^@<EB>^V<8B>[27mẼ[7m<E0>^O<89>[27mD$[7m^D[27m[7m<C7>^D[27m$[7m<FB><DE>^D^H<E8>^D<E4><FF><FF><83>[27m}[7m<C8>^@[27my[7m^Q<C7>^D[27m$[7m^C<DF>^D^H<E8><F2><E3>[27mÿ[7m<FF><FF><E9><B9>^@^@^@<C7>^D[27m$[7m^X<DF>^D^H<E8><E1><E3><FF><FF><8B>[27mEȃ[7m<E0>^D<85><C0>[27mt[7m^G<B8>ESC<DF>^D^H<EB>^E<B8>^^<DF>^D^H<89>[27mD$[7m^D<C7>^D[27m$#[7m<DF>^D^H<E8><BB><E3><FF>[27m
536[7m<FF><8B>[27mE[7m<C8>[27m%[7m^@^G^@^@<C1><F8>^H<83><F8>^G[27mww[7m<8B>^D<85><C4><DF>^D^H<FF><E0><C7>^D[27m$$'[7m<DF>^D^H<E8><96><E3><FF><FF><EB>[27m`[7m<C7>^D[27m$1[7m<DF>^D^H<E8><88><E3><FF><FF><EB>[27mR[7m<C7>[27m[7m^D[27m$A[7m<DF>^D^H<E8>[27mz[7m<E3><FF><FF><EB>[27mD[7m<C7>^D[27m$Q[7m<DF>^D^H<E8>[27ml[7m<E3><FF><FF><EB>[27m6[7m<C7>^D[27m$c[7m<DF>^D^H<E8>[27m^[7m<E3><FF><FF><EB>[27m([7m<C7>^D[27m$p[7m<DF>^D^H<E8>[27mP[7m<E3><FF><FF><EB>^Z<C7>^D[27m$[7m<82>[27m[7m<DF>^D^H<E8>[27mB[7m<E3><FF><FF><EB>^L<C7>^D[27m$[7m<95><DF>^D^H<E8>[27m4[7m<E3><FF><FF><C7>^D[27m$[7m<A8>[27m
537[7m<DF>^D^H<E8>[27m([7m<E3><FF><FF><83>[27mE[7m<D8>^A<83>[27m}[7m<D8>^C^O<8E>[27mR[7m<FE><FF><FF><A1>[27m [7m^L^E^H[27m
538[7m<8B>[27mUĉT[7m<8B>[27mU[7m<C0><89>[27mT$[7m^D<89>^D[27m$[7m<E8>[27mo[7m<E2><FF><FF><83>[27m}[7m<BC>^@[27mt[7m^G<B8><AA><DF>^D^H[27m
539[7m<EB>^E<B8><AF><DF>^D^H<89>[27mD$[7m^D<C7>^D[27m$[7m<B4><DF>^D^H<E8><DD><E2><FF><FF><8B>[27mE[7m<C0>[27m
540[7m<8D>[27mH[7m^E<A1>[27m [7m^L^E^H<8B>[27mUĉT[7m<89>L[27m$[7m^D<89>^D[27m$[7m<E8>[27m/[7m<E2><FF><FF><8B>[27mE[7m<BC><C9><C3>[27mU[7m<89>[27m
541[7m<E5><83><EC>[27m([7m<C7>[27mE[7m<F0>^T^@^@^@<8B><C1><E0>^G^C[27mE[7m^L<8D>[27mU[7m<F4><89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$[7m^@[27m[7m^M^E^H<E8>[27m5[7m^O^@^@<83>[27mm[7m<F0>^A<C7>^D[27m$[7m<E8>^C^@^@<E8><FD><E2><FF><FF><83>[27m}[7m<F0>^@[27m~[7m^G[27m
542[7m<8B>[27mE[7m<F4><85><C0>[27mxËE[7m<F4><85><C0>[27my[7m^G<B8><FF><FF><FF><FF><EB>^H<8B>[27mE[7m<F4>[27m%[7m<FF><FF>[27m
543[7m^@^@<C9><C3>[27mU[7m<89><E5><83><EC>^X<8B>[27mE[7m^P^O<B7>[27mЋ[7m<C1><E0>^G^C[27mE[7m^L<89>[27mT[7m<89>D[27m$[7m^D<C7>^D[27m$:[K [K[?1l>[?1049l]0;root@node1-1: ~root@node1-1:~# ls
544[0m[01;34mnetfpga[0m  [01;34mpkgs[0m
545[m]0;root@node1-1: ~root@node1-1:~# cd netfpga/projects/selftest/sw/
546]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# ls
547[0m[01;32mbad_pkt_dump[0m     or_utils.o       selftest_dram.h  selftest_reg.c
548bad_pkt_dump.c   [01;32mselftest[0m         selftest_dram.o  selftest_reg.h
549bad_pkt_dump.o   selftest.c       selftest.h       selftest_reg.o
550Makefile         selftest_clk.c   selftest_mdio.c  selftest_serial.c
551or_data_types.h  selftest_clk.h   selftest_mdio.h  selftest_serial.h
552or_ip.c          selftest_clk.o   selftest_mdio.o  selftest_serial.o
553or_ip.h          selftest_dma.c   selftest.o       selftest_sram.c
554or_ip.o          selftest_dma.h   selftest_phy.c   selftest_sram.h
555or_utils.c       selftest_dma.o   selftest_phy.h   selftest_sram.o
556or_utils.h       selftest_dram.c  selftest_phy.o
557[m]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# vi selftest_phy.c
558[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"selftest_phy.c" 157L, 3955C[>c[1;1H[34m/* ****************************************************************************
559 * vim:set shiftwidth=2 softtabstop=2 expandtab:
560 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
561 *
562 * Module: selftest_phy.c
563 * Project: NetFPGA selftest
564 * Description: SATA selftest module
565 *
566 * Change history:
567 *
568 */[m
569
570[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
571[35m#include [m[31m"selftest.h"[m
572[35m#include [m[31m"selftest_phy.h"[m
573[35m#include [m[31m<curses.h>[m
574[35m#include [m[31m<time.h>[m
575
576[35m#define NUM_PORTS [m[31m4[m
577
578[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
579[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m/* ****************************************************************************
580 * vim:set shiftwidth=2 softtabstop=2 expandtab:
581 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
582 *
583 * Module: selftest_phy.c
584 * Project: NetFPGA selftest
585 * Description: SATA selftest module
586 *
587 * Change history:
588 *
589 */[m
590
591[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
592[35m#include [m[31m"selftest.h"[m
593[35m#include [m[31m"selftest_phy.h"[m
594[35m#include [m[31m<curses.h>[m
595[35m#include [m[31m<time.h>[m
596
597[35m#define NUM_PORTS [m[31m4[m
598
599[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
600[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop "selftest_phy.c" 157L, 3955C[24;63H[K[24;63H1,1[11CTop[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8,0-1[18;1H[?12l[?25h[?25l[24;64H9,1  [19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;64H1,1  [21;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H3,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
601[1;24r[23;1H[34m/*[m[24;1H[K[24;63H24,1[11C0%[23;1H[?12l[?25h[?25l[1;23r[23;1H
602[1;24r[23;1H[34m * Reset the interface and configure it for continuous operation[m[24;63H[K[24;63H25,1[11C1%[23;1H[?12l[?25h[?25l[1;23r[23;1H
603[1;24r[23;1H[34m */[m[24;63H[K[24;63H26,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
604[1;24r[23;1H[32mvoid[m phyResetContinuous([32mvoid[m) {[24;63H[K[24;63H27,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
605[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H28,1[11C3%[23;1H[?12l[?25h[?25l[1;23r[23;1H
606[1;24r[24;63H[K[24;63H29,0-1[9C4%[23;1H[?12l[?25h[?25l[1;23r[23;1H
607[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H30,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
608[1;24r[23;4H prev_good_pkts[i] = [31m0[m;[24;63H[K[24;63H31,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
609[1;24r[23;4H prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,1[11C6%[23;1H[?12l[?25h[?25l[1;23r[23;1H
610[1;24r[23;2H }[24;63H[K[24;63H33,1[11C7%[23;1H[?12l[?25h[?25l[1;23r[23;1H
611[1;24r[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
612[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[11C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
613[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[11C9%[23;1H[?12l[?25h[?25l[1;23r[23;1H
614[1;24r[23;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C10%[23;1H[?12l[?25h[?25l[1;23r[23;1H
615[1;24r[24;63H[K[24;63H38,0-1[8C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
616[1;24r[23;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
617[1;24r[24;63H[K[24;63H40,0-1[8C12%[23;1H[?12l[?25h[?25l[1;23r[23;1H
618[1;24r[23;2H [34m// Start the test[m[24;63H[K[24;63H41,1[10C13%[23;1H[?12l[?25h[?25l[1;23r[23;1H
619[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);[24;63H[K[24;63H42,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
620[1;24r[7;31H[106m{[23;1H}[m [34m// phyResetContinuous[m[24;63H[K[24;63H43,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
621[1;24r[6;31H{[22;1H}[24;63H[K[24;63H44,0-1[8C15%[23;1H[?12l[?25h[?25l[1;23r[23;1H
622[1;24r[23;1H[34m/*[m[24;63H[K[24;63H45,1[10C16%[23;1H[?12l[?25h[?25l[1;23r[23;1H
623[1;24r[23;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
624[1;24r[23;1H[34m *[m[24;63H[K[24;63H47,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
625[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,1[10C18%[23;1H[?12l[?25h[?25l[1;23r[23;1H
626[1;24r[23;1H[34m */[m[24;63H[K[24;63H49,1[10C19%[23;1H[?12l[?25h[?25l[1;23r[23;1H
627[1;24r[23;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
628[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H51,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
629[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,1[10C21%[23;1H[?12l[?25h[?25l[1;23r[23;1H
630[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,1[10C22%[23;1H[?12l[?25h[?25l[1;23r[23;1H
631[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,1[10C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
632[1;24r[24;63H[K[24;63H55,0-1[8C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
633[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H56,1[10C24%[23;1H[?12l[?25h[?25l[1;23r[23;1H
634[1;24r[24;63H[K[24;63H57,0-1[8C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
635[1;24r[23;2H [32mint[m x, y;[24;63H[K[24;63H58,1[10C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
636[1;24r[24;63H[K[24;63H59,0-1[8C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
637[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,1[10C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
638[1;24r[24;63H[K[24;63H61,0-1[8C28%[23;1H[?12l[?25h[?25l[1;23r[23;1H
639[1;24r[23;2H [34m// Store the current screen position[m[24;63H[K[24;63H62,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
640[1;24r[23;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
641[1;24r[24;63H[K[24;63H64,0-1[8C30%[23;1H[?12l[?25h[?25l[1;23r[23;1H
642[1;24r[23;2H [34m// Move down a line[m[24;63H[K[24;63H65,1[10C31%[23;1H[?12l[?25h[?25l[1;23r[23;1H
643[1;24r[23;2H move(y + [31m1[m, x);[24;63H[K[24;63H66,1[10C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
644[1;24r[24;63H[K[24;63H67,0-1[8C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
645[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H68,1[10C33%[23;1H[?12l[?25h[?25l[1;23r[23;1H
646[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H69,1[10C34%[23;1H[?12l[?25h[?25l[1;23r[23;1H
647[1;24r[23;4H printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[24;63H[K[24;63H70,1[10C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
648[1;24r[24;63H[K[24;63H71,0-1[8C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
649[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H72,1[10C36%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H73,1[10C37%[22;1H[?12l[?25h[?25l[1;23r[23;1H
650[1;24r[23;4H [38;5;130mif[m (port_status & [31m0x100[m) {[24;63H[K[24;63H74,1[10C38%[23;1H[?12l[?25h[?25l[1;23r[23;1H
651[1;24r[23;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,1[10C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
652[1;24r[23;4H }[24;63H[K[24;63H76,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
653[1;24r[23;4H [38;5;130melse[m {[24;63H[K[24;63H77,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
654[1;24r[23;6H printw([31m" no link"[m);[24;63H[K[24;63H78,1[10C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
655[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H79,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
656[1;24r[23;4H }[24;63H[K[24;63H80,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
657[1;24r[24;63H[K[24;63H81,0-1[8C43%[23;1H[?12l[?25h[?25l[1;23r[23;1H
658[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H82,1[10C44%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H83,1[10C45%[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &bad_pkts);[24;63H[K[24;63H84,1[10C46%[22;1H[?12l[?25h[?25l[1;23r[23;1H
659[1;24r[23;4H printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[24;63H[K[24;63H85,1[10C47%[23;1H[?12l[?25h[?25l[1;23r[23;1H
660[1;24r[24;63H[K[24;63H86,0-1[8C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
661[1;24r[23;4H printw([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H87,1[10C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
662[1;24r[24;63H[K[24;63H88,0-1[8C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
663[1;24r[23;4H [34m// Verify if we should reset the counters[m[24;63H[K[24;63H89,1[10C50%[23;1H[?12l[?25h[?25l[1;23r[23;1H
664[1;24r[23;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,1[10C51%[23;1H[?12l[?25h[?25l[1;23r[23;1H
665[1;24r[23;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,1[10C51%[23;1H[?12l[?25h[?25l[1;23r[23;1H
666[1;24r[23;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,1[10C52%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
667        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST_[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H93,1[10C53%[22;1H[?12l[?25h[?25l[1;23r[23;1H
668[1;24r[22;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[23;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,1[10C54%[22;1H[?12l[?25h[?25l[1;23r[23;1H
669[1;24r[23;1H[34m      }[m[24;63H[K[24;63H95,1[10C54%[23;1H[?12l[?25h[?25l[1;23r[23;1H
670[1;24r[24;63H[K[24;63H96,0-1[8C55%[23;1H[?12l[?25h[?25l[1;23r[23;1H
671[1;24r[23;1H[34m      // Update the counters[m[24;63H[K[24;63H97,1[10C56%[23;1H[?12l[?25h[?25l[1;23r[23;1H
672[1;24r[23;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[24;63H[K[24;63H98,1[10C56%[23;1H[?12l[?25h[?25l[1;23r[23;1H
673[1;24r[23;1H[34m      prev_good_pkts[i] = good_pkts;[m[24;63H[K[24;63H99,1[10C57%[23;1H[?12l[?25h[?25l[1;23r[23;1H
674[1;24r[23;1H[34m    }*/[m[24;63H[K[24;63H100,1[9C58%[23;1H[?12l[?25h[?25l[1;23r[23;1H
675[1;24r[24;63H[K[24;63H101,0-1[7C59%[23;1H[?12l[?25h[?25l[1;23r[23;1H
676[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H102,1[9C59%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H[K[24;63H103,1[9C61%[22;1H[?12l[?25h[?25l[24;65H4[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;2H }[24;63H[K[24;63H105,1[9C62%[22;1H[?12l[?25h[?25l[24;65H6,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
677[1;24r[23;2H [34m// Print overall success/failure[m[24;63H[K[24;63H107,1[9C62%[23;1H[?12l[?25h[?25l[1;23r[23;1H
678[1;24r[23;2H move(y, x);[24;63H[K[24;63H108,1[9C63%[23;1H[?12l[?25h[?25l[1;23r[23;1H
679[1;24r[23;2H printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[24;63H[K[24;63H109,1[9C64%[23;1H[?12l[?25h[?25l[1;23r[23;1H
680[1;24r[23;2H move(y + [31m1[m + NUM_PORTS, x);[24;63H[K[24;63H110,1[9C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
681[1;24r[24;63H[K[24;63H111,0-1[7C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
682[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H112,1[9C66%[23;1H[?12l[?25h[?25l[1;23r[23;1H
683[1;24r[23;1H} [34m// phyShowStatusContinuous[m[24;63H[K[24;63H113,1[9C67%[23;1H[?12l[?25h[?25l[1;23r[23;1H
684[1;24r[24;63H[K[24;63H114,0-1[7C68%[23;1H[?12l[?25h[?25l[1;23r[23;1H
685[1;24r[23;1H[34m/*[m[24;63H[K[24;63H115,1[9C68%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m * Stop the interface
686 */[m[24;63H[K[24;63H116,1[9C70%[22;1H[?12l[?25h[?25l[24;65H7[23;1H[?12l[?25h[?25l[1;23r[23;1H
687[1;24r[23;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,1[9C70%[23;1H[?12l[?25h[?25l[1;23r[23;1H
688[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H119,1[9C71%[23;1H[?12l[?25h[?25l[1;23r[23;1H
689[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);[24;63H[K[24;63H120,1[9C72%[23;1H[?12l[?25h[?25l[1;23r[23;1H
690[1;24r[20;30H[106m{
691
692
693}[m [34m// phyStopContinuous[m[24;63H[K[24;63H121,1[9C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
694[1;24r[19;30H{
695
696
697}[24;63H[K[24;63H122,0-1[7C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
698[1;24r[23;1H[34m/*[m[24;63H[K[24;63H123,1[9C74%[23;1H[?12l[?25h[?25l[1;23r[23;1H
699[1;24r[23;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,1[9C75%[23;1H[?12l[?25h[?25l[1;23r[23;1H
700[1;24r[23;1H[34m *[m[24;63H[K[24;63H125,1[9C76%[23;1H[?12l[?25h[?25l[1;23r[23;1H
701[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H126,1[9C76%[23;1H[?12l[?25h[?25l[1;23r[23;1H
702[1;24r[23;1H[34m */[m[24;63H[K[24;63H127,1[9C77%[23;1H[?12l[?25h[?25l[1;23r[23;1H
703[1;24r[23;1H[32mint[m phyGetResult([32mvoid[m) {[24;63H[K[24;63H128,1[9C78%[23;1H[?12l[?25h[?25l[1;23r[23;1H
704[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,1[9C79%[23;1H[?12l[?25h[?25l[1;23r[23;1H
705[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,1[9C79%[23;1H[?12l[?25h[?25l[1;23r[23;1H
706[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,1[9C80%[23;1H[?12l[?25h[?25l[1;23r[23;1H
707[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,1[9C81%[23;1H[?12l[?25h[?25l[1;23r[23;1H
708[1;24r[24;63H[K[24;63H133,0-1[7C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
709[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H134,1[9C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
710[1;24r[24;63H[K[24;63H135,0-1[7C83%[23;1H[?12l[?25h[?25l[1;23r[23;1H
711[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,1[9C84%[23;1H[?12l[?25h[?25l[1;23r[23;1H
712[1;24r[24;63H[K[24;63H137,0-1[7C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
713[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H138,1[9C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
714[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H139,1[9C86%[23;1H[?12l[?25h[?25l[1;23r[23;1H
715[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H140,1[9C87%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H141,1[9C88%[22;1H[?12l[?25h[?25l[1;23r[23;1H
716[1;24r[23;4H [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {[24;63H[K[24;63H142,1[9C88%[23;1H[?12l[?25h[?25l[1;23r[23;1H
717[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H143,1[9C89%[23;1H[?12l[?25h[?25l[1;23r[23;1H
718[1;24r[23;4H }[24;63H[K[24;63H144,1[9C90%[23;1H[?12l[?25h[?25l[1;23r[23;1H
719[1;24r[24;63H[K[24;63H145,0-1[7C91%[23;1H[?12l[?25h[?25l[1;23r[23;1H
720[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H146,1[9C91%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H147,1[9C92%[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts);[24;63H[K[24;63H148,1[9C93%[22;1H[?12l[?25h[?25l[1;23r[23;1H
721[1;24r[24;63H[K[24;63H149,0-1[7C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
722[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H150,1[9C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
723[1;24r[23;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[24;63H[K[24;63H151,1[9C95%[23;1H[?12l[?25h[?25l[1;23r[23;1H
724[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H152,1[9C96%[23;1H[?12l[?25h[?25l[1;23r[23;1H
725[1;24r[23;4H }[24;63H[K[24;63H153,1[9C97%[23;1H[?12l[?25h[?25l[1;23r[23;1H
726[1;24r[23;2H }[24;63H[K[24;63H154,1[9C97%[23;1H[?12l[?25h[?25l[1;23r[23;1H
727[1;24r[24;63H[K[24;63H155,0-1[7C98%[23;1H[?12l[?25h[?25l[1;23r[23;1H
728[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H156,1[9C99%[23;1H[?12l[?25h[?25l[1;23r[23;1H
729[1;24r[23;1H} [34m// phyGetResult[m[24;63H[K[24;63H157,1[9CBot[23;1H[?12l[?25h[?25l[24;65H6[22;1H[?12l[?25h[?25l[24;65H5,0-1[21;1H[?12l[?25h[?25l[24;65H4,1  [20;1H[?12l[?25h[?25l[24;65H3[19;1H[?12l[?25h[?25l[24;65H2[18;1H[?12l[?25h[?25l[24;65H1[17;1H[?12l[?25h[?25l[24;65H0[16;1H[?12l[?25h[?25l[24;64H49,0-1[15;1H[?12l[?25h[?25l[24;65H8,1  [13;1H[?12l[?25h[?25l[24;65H7[11;1H[?12l[?25h[?25l[24;65H6[10;1H[?12l[?25h[?25l[24;65H5,0-1[9;1H[?12l[?25h[?25l[24;65H4,1  [8;1H[?12l[?25h[?25l[24;65H3[7;1H[?12l[?25h[?25l[24;65H2[6;1H[?12l[?25h[?25l[24;65H1[4;1H[?12l[?25h[?25l[24;65H0[3;1H[?12l[?25h[?25l[24;64H39[2;1H[?12l[?25h[?25l[24;65H8[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H137,0-1[7C99%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,1[9C98%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H135,0-1[7C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H134,1[9C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H133,0-1[7C96%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,1[9C95%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,1[9C94%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,1[9C94%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,1[9C93%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mint[m phyGetResult([32mvoid[m) {[23;1H[94m@                                                                               [m[24;63H[K[24;63H128,1[9C92%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H127,1[9C92%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Return -- boolean indicating success[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H126,1[9C91%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H125,1[9C91%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,1[9C91%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H123,1[9C90%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H122,0-1[7C89%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H} [34m// phyStopContinuous[m[24;63H[K[24;63H121,1[9C88%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);[24;63H[K[24;63H120,1[9C88%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Stop the test (and wait for the test to stop)[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H119,1[9C87%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,1[9C87%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H117,1[9C86%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Stop the interface[m[24;63H[K[24;63H116,1[9C85%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H115,1[9C85%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H114,0-1[7C84%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H} [34m// phyShowStatusContinuous[m[24;63H[K[24;63H113,1[9C83%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mreturn[m good;[24;63H[K[24;63H112,1[9C82%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H111,0-1[7C82%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H move(y + [31m1[m + NUM_PORTS, x);[24;63H[K[24;63H110,1[9C81%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[24;63H[K[24;63H109,1[9C80%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H move(y, x);[24;63H[K[24;63H108,1[9C79%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Print overall success/failure[m[24;63H[K[24;63H107,1[9C79%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H106,0-1[7C78%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H }[24;63H[K[24;63H105,1[9C77%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;6H good = [31m0[m;[24;63H[K[24;63H104,1[9C76%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [38;5;130mif[m (bad_pkts != [31m0[m)[24;63H[K[24;63H103,1[9C76%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [34m// Update the good flag[m[24;63H[K[24;63H102,1[9C75%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H101,0-1[7C74%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m    }*/[m[24;63H[K[24;63H100,1[9C73%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      prev_good_pkts[i] = good_pkts;[m[24;63H[K[24;63H99,1[10C73%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[24;63H[K[24;63H98,1[10C72%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      // Update the counters[m[24;63H[K[24;63H97,1[10C71%[1;1H[?12l[?25h[?25l[24;64H8[2;1H[?12l[?25h[?25l[24;64H7[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H96,0-1[8C70%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      }[m[24;63H[K[24;63H95,1[10C70%[1;1H[?12l[?25h[?25l[1;23r[1;1H[2L[1;24r[1;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[2;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,1[10C68%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {[m[24;63H[K[24;63H93,1[10C68%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,1[10C67%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,1[10C66%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,1[10C65%[1;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hq[?25l[?12l[?25h [?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# ls
730[0m[01;32mbad_pkt_dump[0m     or_utils.o       selftest_dram.h  selftest_reg.c
731bad_pkt_dump.c   [01;32mselftest[0m         selftest_dram.o  selftest_reg.h
732bad_pkt_dump.o   selftest.c       selftest.h       selftest_reg.o
733Makefile         selftest_clk.c   selftest_mdio.c  selftest_serial.c
734or_data_types.h  selftest_clk.h   selftest_mdio.h  selftest_serial.h
735or_ip.c          selftest_clk.o   selftest_mdio.o  selftest_serial.o
736or_ip.h          selftest_dma.c   selftest.o       selftest_sram.c
737or_ip.o          selftest_dma.h   selftest_phy.c   selftest_sram.h
738or_utils.c       selftest_dma.o   selftest_phy.h   selftest_sram.o
739or_utils.h       selftest_dram.c  selftest_phy.o
740[m]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# grep PHY | more[K[K[K[K[K[K* | mre[Ko[K[Kore
741bad_pkt_dump.c:   readReg(&nf2, PHY_TEST_PHY_0_RX_LOG_STATUS_REG, &val);
742bad_pkt_dump.c:       readReg(&nf2, PHY_TEST_PHY_0_RX_LOG_EXP_DATA_REG, &val);
743bad_pkt_dump.c:       readReg(&nf2, PHY_TEST_PHY_0_RX_LOG_RX_DATA_REG, &val);
744bad_pkt_dump.c:     writeReg(&nf2, PHY_TEST_PHY_0_RX_LOG_CTRL_REG, 1);
745Binary file selftest matches
746selftest.c:    "PHY interface",
747selftest_mdio.c:  for (phy = 0; phy < MAX_PHY_PORTS; phy++) {
748selftest_mdio.c:    // Read the PHY ID register
749selftest_mdio.c:    phyid_hi = readMDIOReg(phy, MDIO_PHY_0_PHY_ID_HI_REG);
750selftest_mdio.c:    phyid_lo = readMDIOReg(phy, MDIO_PHY_0_PHY_ID_LO_REG);
751selftest_mdio.c:    auxstatus = readMDIOReg(phy, MDIO_PHY_0_AUX_STATUS_REG);
752selftest_mdio.c:      printw(" Invalid PHY Id (Read failed)");
753selftest_mdio.c:    else if ((phyid & 0xfffffff0) != 0x002060B0) { //Invalid PHY
754 Id: 0x007f60b1   up, 1000Base-TX full
755selftest_mdio.c:      printw(" Invalid PHY Id: 0x%08x", phyid);
756selftest_mdio.c:  move(y + 1 + MAX_PHY_PORTS, x);
757selftest_mdio.c:    readReg(&nf2, phy * MDIO_PHY_GROUP_INST_OFFSET + addr, &val)
758;
759selftest_mdio.c:  writeReg(&nf2, phy * MDIO_PHY_GROUP_INST_OFFSET + addr, val &
7600xffff);
761selftest_mdio.c:  for (phy = 0; phy < MAX_PHY_PORTS; phy++) {
762selftest_mdio.c:    // Read the PHY ID register
763selftest_mdio.c:    phyid_hi = readMDIOReg(phy, MDIO_PHY_0_PHY_ID_HI_REG);
764[7m--More--[27m [K]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# vi selftest.c
765[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"selftest.c" 512L, 10370C[>c[1;1H[34m/* ****************************************************************************
766 * vim:set shiftwidth=2 softtabstop=2 expandtab:
767 * $Id: selftest.c 6010 2010-03-14 08:24:50Z grg $
768 *
769 * Module: selftest.c
770 * Project: NetFPGA 2.1
771 * Description: Interface with the self-test modules on the NetFPGA
772 * to help diagnose problems.
773 *
774 * Change history:
775 *
776 */[m
777
778[35m#include [m[31m<stdio.h>[m
779[35m#include [m[31m<stdlib.h>[m
780[35m#include [m[31m<unistd.h>[m
781
782[35m#include [m[31m<sys/types.h>[m
783[35m#include [m[31m<sys/stat.h>[m
784[35m#include [m[31m<sys/socket.h>[m
785[35m#include [m[31m<sys/time.h>[m
786
787[35m#include [m[31m<net/if.h>[m[24;63H1,1[11CTop[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m/* ****************************************************************************
788 * vim:set shiftwidth=2 softtabstop=2 expandtab:
789 * $Id: selftest.c 6010 2010-03-14 08:24:50Z grg $
790 *
791 * Module: selftest.c
792 * Project: NetFPGA 2.1
793 * Description: Interface with the self-test modules on the NetFPGA
794 * to help diagnose problems.
795 *
796 * Change history:
797 *
798 */[m
799
800[35m#include [m[31m<stdio.h>[m
801[35m#include [m[31m<stdlib.h>[m
802[35m#include [m[31m<unistd.h>[m
803
804[35m#include [m[31m<sys/types.h>[m
805[35m#include [m[31m<sys/stat.h>[m
806[35m#include [m[31m<sys/socket.h>[m
807[35m#include [m[31m<sys/time.h>[m
808
809[35m#include [m[31m<net/if.h>[m[24;63H1,1[11CTop "selftest.c" 512L, 10370C[24;63H[K[24;63H1,1[11CTop[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[24;1H[K[24;1H/[?12l[?25hP[?25l[?12l[?25hH[?25l[?12l[?25hY[?25l[?12l[?25h [?25l[27m[m[H[2J[1;4H regStopContinuous,
810    regGetResult,
811  },
812  {
813    [31m"MDIO interface"[m,
814    mdioResetContinuous,
815    mdioShowStatusContinuous,
816    mdioStopContinuous,
817    mdioGetResult,
818  },
819  {
820    [31m"PHY interface"[m,
821    phyResetContinuous,
822    phyShowStatusContinuous,
823    phyStopContinuous,
824    phyGetResult,
825  },
826  {
827    [31m"DRAM controller"[m,
828    dramResetContinuous,
829    dramShowStatusContinuous,
830    dramStopContinuous,
831    dramGetResult,[24;63H110,6[9C20%[12;6H[?12l[?25h[?25l[24;1H/PHY[24;63H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[m[26C110,6[9C20%[24;63H[K[24;63H110,6[9C20%[12;6H[?12l[?25h[?25l[24;65H1[13;6H[?12l[?25h[?25l[24;65H2[14;6H[?12l[?25h[?25l[24;65H3[15;6H[?12l[?25h[?25l[24;65H4[16;6H[?12l[?25h[?25l[24;65H5,4[17;4H[?12l[?25h[?25l[24;65H6,3[18;3H[?12l[?25h[?25l[24;65H7,6[19;6H[?12l[?25h[?25l[24;65H8[20;6H[?12l[?25h[?25l[24;65H9[21;6H[?12l[?25h[?25l[24;64H20[22;6H[?12l[?25h[?25l[24;65H1[23;6H[?12l[?25h[?25l[1;23r[23;1H
832[1;24r[23;2H },[24;1H[K[24;63H122,4[9C20%[23;4H[?12l[?25h[?25l[1;23r[23;1H
833[1;24r[23;2H {[24;63H[K[24;63H123,3[9C20%[23;3H[?12l[?25h[?25l[1;23r[23;1H
834[1;24r[23;4H [31m"SRAM controller"[m,[24;63H[K[24;63H124,6[9C20%[23;6H[?12l[?25h[?25l[1;23r[23;1H
835[1;24r[23;4H sramResetContinuous,[24;63H[K[24;63H125,6[9C20%[23;6H[?12l[?25h[?25l[1;23r[23;1H
836[1;24r[23;4H sramShowStatusContinuous,[24;63H[K[24;63H126,6[9C21%[23;6H[?12l[?25h[?25l[1;23r[23;1H
837[1;24r[23;4H sramStopContinuous,[24;63H[K[24;63H127,6[9C21%[23;6H[?12l[?25h[?25l[1;23r[23;1H
838[1;24r[23;4H sramGetResult,[24;63H[K[24;63H128,6[9C21%[23;6H[?12l[?25h[?25l[1;23r[23;1H
839[1;24r[23;2H },[24;63H[K[24;63H129,4[9C21%[23;4H[?12l[?25h[?25l[1;23r[23;1H
840[1;24r[23;2H {[24;63H[K[24;63H130,3[9C21%[23;3H[?12l[?25h[?25l[1;23r[23;1H
841[1;24r[23;4H [31m"SATA controller"[m,[24;63H[K[24;63H131,6[9C22%[23;6H[?12l[?25h[?25l[1;23r[23;1H
842[1;24r[23;4H serialResetContinuous,[24;63H[K[24;63H132,6[9C22%[23;6H[?12l[?25h[?25l[1;23r[23;1H
843[1;24r[23;4H serialShowStatusContinuous,[24;63H[K[24;63H133,6[9C22%[23;6H[?12l[?25h[?25l[1;23r[23;1H
844[1;24r[23;4H serialStopContinuous,[24;63H[K[24;63H134,6[9C22%[23;6H[?12l[?25h[?25l[1;23r[23;1H
845[1;24r[23;4H serialGetResult,[24;63H[K[24;63H135,6[9C22%[23;6H[?12l[?25h[?25l[1;23r[23;1H
846[1;24r[23;2H },[24;63H[K[24;63H136,4[9C23%[23;4H[?12l[?25h[?25l[1;23r[23;1H
847[1;24r[23;2H {[24;63H[K[24;63H137,3[9C23%[23;3H[?12l[?25h[?25l[1;23r[23;1H
848[1;24r[23;4H [31m"DMA interface"[m,[24;63H[K[24;63H138,6[9C23%[23;6H[?12l[?25h[?25l[1;23r[23;1H
849[1;24r[23;4H dmaResetContinuous,[24;63H[K[24;63H139,6[9C23%[23;6H[?12l[?25h[?25l[1;23r[23;1H
850[1;24r[23;4H dmaShowStatusContinuous,[24;63H[K[24;63H140,6[9C23%[23;6H[?12l[?25h[?25l[1;23r[23;1H
851[1;24r[23;4H dmaStopContinuous,[24;63H[K[24;63H141,6[9C24%[23;6H[?12l[?25h[?25l[1;23r[23;1H
852[1;24r[23;4H dmaGetResult,[24;63H[K[24;63H142,6[9C24%[23;6H[?12l[?25h[?25l[1;23r[23;1H
853[1;24r[23;2H },[24;63H[K[24;63H143,4[9C24%[23;4H[?12l[?25h[?25l[1;23r[23;1H
854[1;24r[23;1H};[24;63H[K[24;63H144,2[9C24%[23;2H[?12l[?25h[?25l[1;23r[23;1H
855[1;24r[24;63H[K[24;63H145,0-1[7C24%[23;1H[?12l[?25h[?25l[1;23r[23;1H
856[1;24r[24;63H[K[24;63H146,0-1[7C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
857[1;24r[23;1H[34m/*[m[24;63H[K[24;63H147,2[9C25%[23;2H[?12l[?25h[?25l[1;23r[23;1H
858[1;24r[23;1H[34m * Main function[m[24;63H[K[24;63H148,6[9C25%[23;6H[?12l[?25h[?25l[1;23r[23;1H
859[1;24r[23;1H[34m */[m[24;63H[K[24;63H149,3[9C25%[23;3H[?12l[?25h[?25l[1;23r[23;1H
860[1;24r[23;1H[32mint[m main([32mint[m argc, [32mchar[m *argv[])[24;63H[K[24;63H150,6[9C25%[23;6H[?12l[?25h[?25l[1;23r[23;1H
861[1;24r[23;1H{[24;63H[K[24;63H151,1[9C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
862[1;24r[23;2H [34m// Set the default device[m[24;63H[K[24;63H152,6[9C26%[23;6H[?12l[?25h[?25l[1;23r[23;1H
863[1;24r[23;2H nf2.device_name = DEFAULT_IFACE;[24;63H[K[24;63H153,6[9C26%[23;6H[?12l[?25h[?25l[1;23r[23;1H
864[1;24r[24;63H[K[24;63H154,0-1[7C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
865[1;24r[23;2H [34m// Process the command line arguments[m[24;63H[K[24;63H155,6[9C26%[23;6H[?12l[?25h[?25l[1;23r[23;1H
866[1;24r[23;2H processArgs(argc, argv);[24;63H[K[24;63H156,6[9C27%[23;6H[?12l[?25h[?25l[1;23r[23;1H
867[1;24r[24;63H[K[24;63H157,0-1[7C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
868[1;24r[23;2H [34m// Check that the interface is valid and open it if possible[m[24;63H[K[24;63H158,6[9C27%[23;6H[?12l[?25h[?25l[1;23r[23;1H
869[1;24r[23;2H [38;5;130mif[m [106m([mcheck_iface(&nf2)[106m)[m[24;63H[K[24;63H159,6[9C27%[23;6H[?12l[?25h[?25l[1;23r[23;1H
870[1;24r[22;6H([17C)
871  {[24;63H[K[24;63H160,3[9C28%[23;3H[?12l[?25h[?25l[1;23r[23;1H
872[1;24r[23;4H exit([31m1[m);[24;63H[K[24;63H161,6[9C28%[23;6H[?12l[?25h[?25l[1;23r[23;1H
873[1;24r[21;3H[106m{[m
874
875  [106m}[m[24;63H[K[24;63H162,3[9C28%[23;3H[?12l[?25h[?25l[1;23r[23;1H
876[1;24r[20;3H{
877
878  }
879  [38;5;130mif[m [106m([mopenDescriptor(&nf2)[106m)[m[24;63H[K[24;63H163,6[9C28%[23;6H[?12l[?25h[?25l[1;23r[23;1H
880[1;24r[22;6H([20C)
881  {[24;63H[K[24;63H164,3[9C28%[23;3H[?12l[?25h[?25l[1;23r[23;1H
882[1;24r[23;4H exit([31m1[m);[24;63H[K[24;63H165,6[9C29%[23;6H[?12l[?25h[?25l[1;23r[23;1H
883[1;24r[21;3H[106m{[m
884
885  [106m}[m[24;63H[K[24;63H166,3[9C29%[23;3H[?12l[?25h[?25l[1;23r[23;1H
886[1;24r[20;3H{
887
888  }[24;63H[K[24;63H167,0-1[7C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
889[1;24r[23;2H [34m// Verify that the correct device is downloaded[m[24;63H[K[24;63H168,6[9C29%[23;6H[?12l[?25h[?25l[1;23r[23;1H
890[1;24r[23;2H [38;5;130mif[m (!checkVirtexBitfile(&nf2, DEVICE_PROJ_DIR,[24;63H[K[24;63H169,6[9C29%[23;6H[?12l[?25h[?25l[1;23r[23;1H
891[1;24r[23;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY,[24;63H[K[24;63H170,1-8[7C30%[23;8H[?12l[?25h[?25l[1;23r[23;1H
892[1;24r[23;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY)) {[24;63H[K[24;63H171,1-8[7C30%[23;8H[?12l[?25h[?25l[1;23r[23;1H
893[1;24r[23;4H fprintf([31mstderr[m, [31m"[m[35m%s\n[m[31m"[m, getVirtexBitfileErr());[24;63H[K[24;63H172,6[9C30%[23;6H[?12l[?25h[?25l[1;23r[23;1H
894[1;24r[23;4H exit([31m1[m);[24;63H[K[24;63H173,6[9C30%[23;6H[?12l[?25h[?25l[1;23r[23;1H
895[1;24r[20;67H[106m{[m[23;2H [106m}[m[24;63H[K[24;63H174,3[9C30%[23;3H[?12l[?25h[?25l[1;23r[23;1H
896[1;24r[19;67H{[22;3H}
897  [38;5;130melse[m {[24;63H[K[24;63H175,6[9C31%[23;6H[?12l[?25h[?25l[1;23r[23;1H
898[1;24r[23;4H printf(getDeviceInfoStr(&nf2));[24;63H[K[24;63H176,6[9C31%[23;6H[?12l[?25h[?25l[1;23r[23;1H
899[1;24r[21;8H[106m{[m
900
901  [106m}[m[24;63H[K[24;63H177,3[9C31%[23;3H[?12l[?25h[?25l[1;23r[23;1H
902[1;24r[20;8H{
903
904  }[24;63H[K[24;63H178,0-1[7C31%[23;1H[?12l[?25h[?25l[1;23r[23;1H
905[1;24r[23;2H [34m// Add a signal handler[m[24;63H[K[24;63H179,6[9C31%[23;6H[?12l[?25h[?25l[1;23r[23;1H
906[1;24r[23;2H signal([31mSIGINT[m, sigint_handler);[24;63H[K[24;63H180,6[9C32%[23;6H[?12l[?25h[?25l[1;23r[23;1H
907[1;24r[24;63H[K[24;63H181,0-1[7C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
908[1;24r[23;2H [34m// Measure the clock rates[m[24;63H[K[24;63H182,6[9C32%[23;6H[?12l[?25h[?25l[1;23r[23;1H
909[1;24r[23;2H measureClocks();[24;63H[K[24;63H183,6[9C32%[23;6H[?12l[?25h[?25l[1;23r[23;1H
910[1;24r[24;63H[K[24;63H184,0-1[7C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
911[1;24r[23;2H [34m// Run the appropriate test[m[24;63H[K[24;63H185,6[9C33%[23;6H[?12l[?25h[?25l[1;23r[23;1H
912[1;24r[23;2H [38;5;130mif[m [106m([mcontinuous[106m)[m {[24;63H[K[24;63H186,6[9C33%[23;6H[?12l[?25h[?25l[1;23r[23;1H
913[1;24r[22;6H([10C)
914    mainContinuous();[24;63H[K[24;63H187,6[9C33%[23;6H[?12l[?25h[?25l[1;23r[23;1H
915[1;24r[21;19H[106m{[m
916
917  [106m}[m[24;63H[K[24;63H188,3[9C33%[23;3H[?12l[?25h[?25l[1;23r[23;1H
918[1;24r[20;19H{
919
920  }
921  [38;5;130melse[m [38;5;130mif[m (shortrun) {[24;63H[K[24;63H189,6[9C33%[23;6H[?12l[?25h[?25l[1;23r[23;1H
922[1;24r[23;4H mainOneShot();[24;63H[K[24;63H190,6[9C34%[23;6H[?12l[?25h[?25l[1;23r[23;1H
923[1;24r[21;22H[106m{[m
924
925  [106m}[m[24;63H[K[24;63H191,3[9C34%[23;3H[?12l[?25h[?25l[1;23r[23;1H
926[1;24r[20;22H{
927
928  }[24;63H[K[24;63H192,0-1[7C34%[23;1H[?12l[?25h[?25l[1;23r[23;1H
929[1;24r[23;2H [34m// Close the network descriptor[m[24;63H[K[24;63H193,6[9C34%[23;6H[?12l[?25h[?25l[1;23r[23;1H
930[1;24r[23;2H closeDescriptor(&nf2);[24;63H[K[24;63H194,6[9C34%[23;6H[?12l[?25h[?25l[1;23r[23;1H
931[1;24r[24;63H[K[24;63H195,0-1[7C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
932[1;24r[23;2H [38;5;130mreturn[m [31m0[m;[24;63H[K[24;63H196,6[9C35%[23;6H[?12l[?25h[?25l[1;23r[23;1H
933[1;24r[23;1H}[24;63H[K[24;63H197,1[9C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
934[1;24r[24;63H[K[24;63H198,0-1[7C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
935[1;24r[23;1H[34m/*[m[24;63H[K[24;63H199,2[9C35%[23;2H[?12l[?25h[?25l[1;23r[23;1H
936[1;24r[23;1H[34m * "Main" function for continuous mode[m[24;63H[K[24;63H200,6[9C36%[23;6H[?12l[?25h[?25l[1;23r[23;1H
937[1;24r[23;1H[34m */[m[24;63H[K[24;63H201,3[9C36%[23;3H[?12l[?25h[?25l[1;23r[23;1H
938[1;24r[23;1H[32mvoid[m mainContinuous([32mvoid[m)[24;63H[K[24;63H202,6[9C36%[23;6H[?12l[?25h[?25l[1;23r[23;1H
939[1;24r[23;1H{[24;63H[K[24;63H203,1[9C36%[23;1H[?12l[?25h[?25l[1;23r[23;1H
940[1;24r[23;2H [34m// Set up curses[m[24;63H[K[24;63H204,6[9C37%[23;6H[?12l[?25h[?25l[1;23r[23;1H
941[1;24r[23;2H w = initscr();[24;63H[K[24;63H205,6[9C37%[23;6H[?12l[?25h[?25l[1;23r[23;1H
942[1;24r[23;2H cbreak();[24;63H[K[24;63H206,6[9C37%[23;6H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25h1[?25l[?12l[?25h [?25l[27m[m[H[2J[1;1H[34m/* ****************************************************************************
943 * vim:set shiftwidth=2 softtabstop=2 expandtab:
944 * $Id: selftest.c 6010 2010-03-14 08:24:50Z grg $
945 *
946 * Module: selftest.c
947 * Project: NetFPGA 2.1
948 * Description: Interface with the self-test modules on the NetFPGA
949 * to help diagnose problems.
950 *
951 * Change history:
952 *
953 */[m
954
955[35m#include [m[31m<stdio.h>[m
956[35m#include [m[31m<stdlib.h>[m
957[35m#include [m[31m<unistd.h>[m
958
959[35m#include [m[31m<sys/types.h>[m
960[35m#include [m[31m<sys/stat.h>[m
961[35m#include [m[31m<sys/socket.h>[m
962[35m#include [m[31m<sys/time.h>[m
963
964[35m#include [m[31m<net/if.h>[m[24;63H1,1[11CTop[1;1H[?12l[?25h[?25l[24;1H/PHY[24;63H[K[24;1H[27m[m[H[2J[1;4H regStopContinuous,
965    regGetResult,
966  },
967  {
968    [31m"MDIO interface"[m,
969    mdioResetContinuous,
970    mdioShowStatusContinuous,
971    mdioStopContinuous,
972    mdioGetResult,
973  },
974  {
975    [31m"PHY interface"[m,
976    phyResetContinuous,
977    phyShowStatusContinuous,
978    phyStopContinuous,
979    phyGetResult,
980  },
981  {
982    [31m"DRAM controller"[m,
983    dramResetContinuous,
984    dramShowStatusContinuous,
985    dramStopContinuous,
986    dramGetResult,[24;63H110,6[9C20%[12;6H[?12l[?25h[?25l[24;65H1[13;6H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hq[?25l[?12l[?25h [?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# vi selftest.cgrep PHY * | morels[Kvi selftest_phy.c
987[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"selftest_phy.c" 157L, 3955C[>c[1;1H[34m/* ****************************************************************************
988 * vim:set shiftwidth=2 softtabstop=2 expandtab:
989 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
990 *
991 * Module: selftest_phy.c
992 * Project: NetFPGA selftest
993 * Description: SATA selftest module
994 *
995 * Change history:
996 *
997 */[m
998
999[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1000[35m#include [m[31m"selftest.h"[m
1001[35m#include [m[31m"selftest_phy.h"[m
1002[35m#include [m[31m<curses.h>[m
1003[35m#include [m[31m<time.h>[m
1004
1005[35m#define NUM_PORTS [m[31m4[m
1006
1007[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1008[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m/* ****************************************************************************
1009 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1010 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
1011 *
1012 * Module: selftest_phy.c
1013 * Project: NetFPGA selftest
1014 * Description: SATA selftest module
1015 *
1016 * Change history:
1017 *
1018 */[m
1019
1020[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1021[35m#include [m[31m"selftest.h"[m
1022[35m#include [m[31m"selftest_phy.h"[m
1023[35m#include [m[31m<curses.h>[m
1024[35m#include [m[31m<time.h>[m
1025
1026[35m#define NUM_PORTS [m[31m4[m
1027
1028[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1029[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop "selftest_phy.c" 157L, 3955C[24;63H[K[24;63H1,1[11CTop[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[27m[m[H[2J[1;1H[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];
1030
1031[34m/*
1032 * Reset the interface and configure it for continuous operation
1033 */[m
1034[32mvoid[m phyResetContinuous([32mvoid[m) {
1035  [32mint[m i;
1036
1037  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
1038    prev_good_pkts[i] = [31m0[m;
1039    prev_bad_pkts[i] = [31m0[m;
1040  }
1041
1042  [34m// Stop the test (and wait for the test to stop)[m
1043  writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);
1044  sleep([31m1[m);
1045
1046  writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);
1047
1048  [34m// Start the test[m
1049  writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);
1050} [34m// phyResetContinuous[m[24;63H22,1[10C15%[1;1H[?12l[?25h[?25l[24;64H3,0-1[2;1H[?12l[?25h[?25l[24;64H4,1  [3;1H[?12l[?25h[?25l[24;64H5[4;1H[?12l[?25h[?25l[24;64H6[5;1H[?12l[?25h[?25l[24;64H7[6;1H[?12l[?25h[?25l[24;64H8[7;1H[?12l[?25h[?25l[24;64H9,0-1[8;1H[?12l[?25h[?25l[24;63H30,1  [9;1H[?12l[?25h[?25l[24;64H1[10;1H[?12l[?25h[?25l[24;64H2[11;1H[?12l[?25h[?25l[24;64H3[12;1H[?12l[?25h[?25l[24;64H4,0-1[13;1H[?12l[?25h[?25l[24;64H5,1  [14;1H[?12l[?25h[?25l[24;64H6[15;1H[?12l[?25h[?25l[24;64H7[16;1H[?12l[?25h[?25l[24;64H8,0-1[17;1H[?12l[?25h[?25l[24;64H9,1  [18;1H[?12l[?25h[?25l[24;63H40,0-1[19;1H[?12l[?25h[?25l[24;64H1,1  [20;1H[?12l[?25h[?25l[24;64H2[21;1H[?12l[?25h[?25l[6;31H[106m{[22;1H}[m[24;64H3[22;1H[?12l[?25h[?25l[6;31H{[22;1H}[24;64H4,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1051[1;24r[23;1H[34m/*[m[24;63H[K[24;63H45,1[10C16%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1052[1;24r[23;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1053[1;24r[23;1H[34m *[m[24;63H[K[24;63H47,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1054[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,1[10C18%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1055[1;24r[23;1H[34m */[m[24;63H[K[24;63H49,1[10C19%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1056[1;24r[23;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1057[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H51,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1058[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,1[10C21%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1059[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,1[10C22%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1060[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,1[10C23%[23;1H[?12l[?25h[?25l[24;64H3[22;1H[?12l[?25h[?25l[24;64H2[21;1H[?12l[?25h[?25l[24;64H1[20;1H[?12l[?25h[?25l[24;64H0[19;1H[?12l[?25h[?25l[24;63H49[18;1H[?12l[?25h[?25l[24;64H8[17;1H[?12l[?25h[?25l[24;64H7[16;1H[?12l[?25h[?25l[24;64H6[15;1H[?12l[?25h[?25l[24;64H5[14;1H[?12l[?25h[?25l[24;64H4,0-1[13;1H[?12l[?25h[?25l[24;64H3,1  [12;1H[?12l[?25h[?25l[24;64H2[11;1H[?12l[?25h[?25l[24;64H1[10;1H[?12l[?25h[?25l[24;64H0,0-1[9;1H[?12l[?25h[?25l[24;63H39,1  [8;1H[?12l[?25h[?25l[24;64H8,0-1[7;1H[?12l[?25h[?25l[24;64H7,1  [6;1H[?12l[?25h[?25l[24;64H6[5;1H[?12l[?25h[?25l[24;64H5[4;1H[?12l[?25h[?25l[24;64H4,0-1[3;1H[?12l[?25h[?25l[24;64H3,1  [2;1H[?12l[?25h[?25l[24;64H2[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H prev_good_pkts[i] = [31m0[m;[24;63H[K[24;63H31,1[10C22%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H30,1[10C21%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H29,0-1[8C20%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H28,1[10C20%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m phyResetContinuous([32mvoid[m) {[24;63H[K[24;63H27,1[10C19%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H26,1[10C18%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Reset the interface and configure it for continuous operation[m[24;63H[K[24;63H25,1[10C17%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H24,1[10C17%[1;1H[?12l[?25h[?25l[24;64H5[2;1H[?12l[?25h[?25l[24;64H6[3;1H[?12l[?25h[?25l[24;64H7[4;1H[?12l[?25h[?25l[24;64H8[5;1H[?12l[?25h[?25l[24;64H9,0-1[6;1H[?12l[?25h[?25l[24;63H30,1  [7;1H[?12l[?25h[?25l[24;64H1[8;1H[?12l[?25h[?25l[24;64H2[9;1H[?12l[?25h[?25l[24;64H3[10;1H[?12l[?25h[?25l[24;64H2[9;1H[?12l[?25h[?25l[24;64H1[8;1H[?12l[?25h[?25l[24;64H0[7;1H[?12l[?25h[?25l[24;63H29,0-1[6;1H[?12l[?25h[?25l[24;64H8,1  [5;1H[?12l[?25h[?25l[24;64H7[4;1H[?12l[?25h[?25l[24;64H6[3;1H[?12l[?25h[?25l[24;64H5[2;1H[?12l[?25h[?25l[24;64H4[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H23,0-1[8C16%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H[K[24;63H22,1[10C15%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];[24;63H[K[24;63H21,1[10C14%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H20,0-1[8C14%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#define NUM_PORTS [m[31m4[m[24;63H[K[24;63H19,1[10C13%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H18,0-1[8C12%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m<time.h>[m[24;63H[K[24;63H17,1[10C11%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m<curses.h>[m[24;63H[K[24;63H16,1[10C11%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m"selftest_phy.h"[m[24;63H[K[24;63H15,1[10C10%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m"selftest.h"[m[24;63H[K[24;63H14,1[11C9%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m[24;63H[K[24;63H13,1[11C8%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H12,0-1[9C8%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H11,1[11C7%[1;1H[?12l[?25h[?25l[24;64H2,0-1[2;1H[?12l[?25h[?25l[24;64H3,1  [3;1H[?12l[?25h[?25l[24;64H4[4;1H[?12l[?25h[?25l[24;64H5[5;1H[?12l[?25h[?25l[24;64H6[6;1H[?12l[?25h[?25l[24;64H7[7;1H[?12l[?25h[?25l[24;64H8,0-1[8;1H[?12l[?25h[?25l[24;64H9,1  [9;1H[?12l[?25h[?25l[24;63H20,0-1[10;1H[?12l[?25h[?25l[24;64H1,1  [11;1H[?12l[?25h[?25l[24;64H2[12;1H[?12l[?25h[?25l[24;64H3,0-1[13;1H[?12l[?25h[?25l[24;64H4,1  [14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8[18;1H[?12l[?25h[?25l[24;64H9,0-1[19;1H[?12l[?25h[?25l[24;63H30,1  [20;1H[?12l[?25h[?25l[24;64H1[21;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H3[23;1H[?12l[?25h[?25l[1;23r[23;1H
1061[1;24r[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1062[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[11C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1063[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[11C9%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1064[1;24r[23;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C10%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1065[1;24r[24;63H[K[24;63H38,0-1[8C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1066[1;24r[23;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1067[1;24r[24;63H[K[24;63H40,0-1[8C12%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1068[1;24r[23;2H [34m// Start the test[m[24;63H[K[24;63H41,1[10C13%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1069[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);[24;63H[K[24;63H42,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1070[1;24r[7;31H[106m{[23;1H}[m [34m// phyResetContinuous[m[24;63H[K[24;63H43,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1071[1;24r[6;31H{[22;1H}[24;63H[K[24;63H44,0-1[8C15%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1072[1;24r[23;1H[34m/*[m[24;63H[K[24;63H45,1[10C16%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1073[1;24r[23;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1074[1;24r[23;1H[34m *[m[24;63H[K[24;63H47,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1075[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,1[10C18%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1076[1;24r[23;1H[34m */[m[24;63H[K[24;63H49,1[10C19%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1077[1;24r[23;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1078[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H51,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1079[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,1[10C21%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1080[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,1[10C22%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1081[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,1[10C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1082[1;24r[24;63H[K[24;63H55,0-1[8C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1083[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H56,1[10C24%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1084[1;24r[24;63H[K[24;63H57,0-1[8C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1085[1;24r[23;2H [32mint[m x, y;[24;63H[K[24;63H58,1[10C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1086[1;24r[24;63H[K[24;63H59,0-1[8C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1087[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,1[10C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1088[1;24r[24;63H[K[24;63H61,0-1[8C28%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1089[1;24r[23;2H [34m// Store the current screen position[m[24;63H[K[24;63H62,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1090[1;24r[23;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1091[1;24r[24;63H[K[24;63H64,0-1[8C30%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1092[1;24r[23;2H [34m// Move down a line[m[24;63H[K[24;63H65,1[10C31%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1093[1;24r[23;2H move(y + [31m1[m, x);[24;63H[K[24;63H66,1[10C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1094[1;24r[24;63H[K[24;63H67,0-1[8C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1095[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H68,1[10C33%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1096[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H69,1[10C34%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1097[1;24r[23;4H printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[24;63H[K[24;63H70,1[10C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1098[1;24r[24;63H[K[24;63H71,0-1[8C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1099[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H72,1[10C36%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H73,1[10C37%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1100[1;24r[23;4H [38;5;130mif[m (port_status & [31m0x100[m) {[24;63H[K[24;63H74,1[10C38%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1101[1;24r[23;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,1[10C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1102[1;24r[23;4H }[24;63H[K[24;63H76,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1103[1;24r[23;4H [38;5;130melse[m {[24;63H[K[24;63H77,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1104[1;24r[23;6H printw([31m" no link"[m);[24;63H[K[24;63H78,1[10C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1105[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H79,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1106[1;24r[23;4H }[24;63H[K[24;63H80,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1107[1;24r[24;63H[K[24;63H81,0-1[8C43%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1108[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H82,1[10C44%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H83,1[10C45%[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &bad_pkts);[24;63H[K[24;63H84,1[10C46%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1109[1;24r[23;4H printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[24;63H[K[24;63H85,1[10C47%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1110[1;24r[24;63H[K[24;63H86,0-1[8C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1111[1;24r[23;4H printw([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H87,1[10C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1112[1;24r[24;63H[K[24;63H88,0-1[8C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1113[1;24r[23;4H [34m// Verify if we should reset the counters[m[24;63H[K[24;63H89,1[10C50%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1114[1;24r[23;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,1[10C51%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1115[1;24r[23;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,1[10C51%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1116[1;24r[23;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,1[10C52%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
1117        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST_[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H93,1[10C53%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1118[1;24r[22;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[23;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,1[10C54%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1119[1;24r[23;1H[34m      }[m[24;63H[K[24;63H95,1[10C54%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1120[1;24r[24;63H[K[24;63H96,0-1[8C55%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1121[1;24r[23;1H[34m      // Update the counters[m[24;63H[K[24;63H97,1[10C56%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1122[1;24r[23;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[24;63H[K[24;63H98,1[10C56%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1123[1;24r[23;1H[34m      prev_good_pkts[i] = good_pkts;[m[24;63H[K[24;63H99,1[10C57%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1124[1;24r[23;1H[34m    }*/[m[24;63H[K[24;63H100,1[9C58%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1125[1;24r[24;63H[K[24;63H101,0-1[7C59%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1126[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H102,1[9C59%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H[K[24;63H103,1[9C61%[22;1H[?12l[?25h[?25l[24;65H4[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;2H }[24;63H[K[24;63H105,1[9C62%[22;1H[?12l[?25h[?25l[24;65H6,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1127[1;24r[23;2H [34m// Print overall success/failure[m[24;63H[K[24;63H107,1[9C62%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1128[1;24r[23;2H move(y, x);[24;63H[K[24;63H108,1[9C63%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1129[1;24r[23;2H printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[24;63H[K[24;63H109,1[9C64%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1130[1;24r[23;2H move(y + [31m1[m + NUM_PORTS, x);[24;63H[K[24;63H110,1[9C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1131[1;24r[24;63H[K[24;63H111,0-1[7C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1132[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H112,1[9C66%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1133[1;24r[23;1H} [34m// phyShowStatusContinuous[m[24;63H[K[24;63H113,1[9C67%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1134[1;24r[24;63H[K[24;63H114,0-1[7C68%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1135[1;24r[23;1H[34m/*[m[24;63H[K[24;63H115,1[9C68%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m * Stop the interface
1136 */[m[24;63H[K[24;63H116,1[9C70%[22;1H[?12l[?25h[?25l[24;65H7[23;1H[?12l[?25h[?25l[1;23r[23;1H
1137[1;24r[23;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,1[9C70%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1138[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H119,1[9C71%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1139[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);[24;63H[K[24;63H120,1[9C72%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1140[1;24r[20;30H[106m{
1141
1142
1143}[m [34m// phyStopContinuous[m[24;63H[K[24;63H121,1[9C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1144[1;24r[19;30H{
1145
1146
1147}[24;63H[K[24;63H122,0-1[7C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1148[1;24r[23;1H[34m/*[m[24;63H[K[24;63H123,1[9C74%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1149[1;24r[23;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,1[9C75%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1150[1;24r[23;1H[34m *[m[24;63H[K[24;63H125,1[9C76%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1151[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H126,1[9C76%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1152[1;24r[23;1H[34m */[m[24;63H[K[24;63H127,1[9C77%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1153[1;24r[23;1H[32mint[m phyGetResult([32mvoid[m) {[24;63H[K[24;63H128,1[9C78%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1154[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,1[9C79%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1155[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,1[9C79%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1156[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,1[9C80%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1157[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,1[9C81%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1158[1;24r[24;63H[K[24;63H133,0-1[7C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1159[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H134,1[9C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1160[1;24r[24;63H[K[24;63H135,0-1[7C83%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1161[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,1[9C84%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1162[1;24r[24;63H[K[24;63H137,0-1[7C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1163[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H138,1[9C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1164[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H139,1[9C86%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1165[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H140,1[9C87%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H141,1[9C88%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1166[1;24r[23;4H [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {[24;63H[K[24;63H142,1[9C88%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1167[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H143,1[9C89%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1168[1;24r[23;4H }[24;63H[K[24;63H144,1[9C90%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1169[1;24r[24;63H[K[24;63H145,0-1[7C91%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1170[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H146,1[9C91%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H147,1[9C92%[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts);[24;63H[K[24;63H148,1[9C93%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1171[1;24r[24;63H[K[24;63H149,0-1[7C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1172[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H150,1[9C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1173[1;24r[23;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[24;63H[K[24;63H151,1[9C95%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1174[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H152,1[9C96%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1175[1;24r[23;4H }[24;63H[K[24;63H153,1[9C97%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1176[1;24r[23;2H }[24;63H[K[24;63H154,1[9C97%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1177[1;24r[24;63H[K[24;63H155,0-1[7C98%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1178[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H156,1[9C99%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1179[1;24r[23;1H} [34m// phyGetResult[m[24;63H[K[24;63H157,1[9CBot[23;1H[?12l[?25h[?25l[24;65H6[22;1H[?12l[?25h[?25l[24;65H5,0-1[21;1H[?12l[?25h[?25l[24;65H4,1  [20;1H[?12l[?25h[?25l[24;65H3[19;1H[?12l[?25h[?25l[24;65H2[18;1H[?12l[?25h[?25l[24;65H1[17;1H[?12l[?25h[?25l[24;65H0[16;1H[?12l[?25h[?25l[24;64H49,0-1[15;1H[?12l[?25h[?25l[24;65H8,1  [13;1H[?12l[?25h[?25l[24;65H7[11;1H[?12l[?25h[?25l[24;65H6[10;1H[?12l[?25h[?25l[24;65H5,0-1[9;1H[?12l[?25h[?25l[24;65H4,1  [8;1H[?12l[?25h[?25l[24;65H3[7;1H[?12l[?25h[?25l[24;65H2[6;1H[?12l[?25h[?25l[24;65H1[4;1H[?12l[?25h[?25l[24;65H0[3;1H[?12l[?25h[?25l[24;64H39[2;1H[?12l[?25h[?25l[24;65H8[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H137,0-1[7C99%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,1[9C98%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H135,0-1[7C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H134,1[9C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H133,0-1[7C96%[1;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25h1[?25l[?12l[?25h [?25l[27m[m[H[2J[1;1H[34m/* ****************************************************************************
1180 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1181 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
1182 *
1183 * Module: selftest_phy.c
1184 * Project: NetFPGA selftest
1185 * Description: SATA selftest module
1186 *
1187 * Change history:
1188 *
1189 */[m
1190
1191[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1192[35m#include [m[31m"selftest.h"[m
1193[35m#include [m[31m"selftest_phy.h"[m
1194[35m#include [m[31m<curses.h>[m
1195[35m#include [m[31m<time.h>[m
1196
1197[35m#define NUM_PORTS [m[31m4[m
1198
1199[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1200[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop[1;1H[?12l[?25h[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8,0-1[18;1H[?12l[?25h[?25l[24;64H9,1  [19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;64H1,1  [21;1H[?12l[?25h[?25l[1;23r[1;1H[9M[1;24r[15;1H[34m/*
1201 * Reset the interface and configure it for continuous operation
1202 */[m
1203[32mvoid[m phyResetContinuous([32mvoid[m) {
1204  [32mint[m i;
1205
1206  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
1207    prev_good_pkts[i] = [31m0[m;
1208    prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,1[11C6%[23;1H[?12l[?25h[?25l[24;64H1[22;1H[?12l[?25h[?25l[24;64H0[21;1H[?12l[?25h[?25l[24;63H29,0-1[20;1H[?12l[?25h[?25l[24;64H8,1  [19;1H[?12l[?25h[?25l[24;64H7[18;1H[?12l[?25h[?25l[24;64H6[17;1H[?12l[?25h[?25l[24;64H5[16;1H[?12l[?25h[?25l[24;64H4[15;1H[?12l[?25h[?25l[24;64H3,0-1[14;1H[?12l[?25h[?25l[24;64H2,1  [13;1H[?12l[?25h[?25l[24;64H1[12;1H[?12l[?25h[?25l[24;66H8[12;8H[?12l[?25h[?25l[24;66H12[12;12H[?12l[?25h[?25l[14C[106m[[9C][m[24;66H26[12;26H[?12l[?25h[?25l[[9C][24;66H12[12;12H[?12l[?25h[?25l[24;1H/\<prev_good_pkts\>[24;63H[K[24;1H[62C31,5[11C6%[22;5H[?12l[?25h[?25l[24;63H[K[24;1H[27m[m[H[2J[1;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[2;1HST_OFFSET, &bad_pkts);
1209    printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[5;4H printw([31m"[m[35m\n[m[31m"[m);[7;4H [34m// Verify if we should reset the counters[m
1210    [34m/*if ((port_status & 0x1100) == 0x1100) {
1211      // Only reset if the number of good packets has incremented but the bad
1212      // packets have remained the same
1213      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
1214        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[13;1HOFFSET, 0x3);
1215      }
1216
1217      // Update the counters
1218      prev_bad_pkts[i] = bad_pkts;
1219      prev_good_pkts[i] = good_pkts;
1220    }*/[m[21;4H [34m// Update the good flag[m
1221    [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H93,56[9C61%[11;56H[?12l[?25h[?25l[24;1H/\<prev_good_pkts\>[24;63H[K[24;1H[62C99,7[10C61%[18;7H[?12l[?25h[?25l[24;63H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H[34m *
1222 */[m
1223
1224[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1225[35m#include [m[31m"selftest.h"[m
1226[35m#include [m[31m"selftest_phy.h"[m
1227[35m#include [m[31m<curses.h>[m
1228[35m#include [m[31m<time.h>[m
1229
1230[35m#define NUM_PORTS [m[31m4[m
1231
1232[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1233[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];
1234
1235[34m/*
1236 * Reset the interface and configure it for continuous operation
1237 */[m
1238[32mvoid[m phyResetContinuous([32mvoid[m) {
1239  [32mint[m i;
1240
1241  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
1242    prev_good_pkts[i] = [31m0[m;
1243    prev_bad_pkts[i] = [31m0[m;[24;63H21,12[10C6% [31msearch hit BOTTOM, continuing at TOP[m[24;63H[K[24;63H21,12[10C6%[12;12H[?12l[?25h[?25l[24;1H/\<prev_good_pkts\>[24;20H[K[24;1H[62C31,5[11C6%[22;5H[?12l[?25h[?25l[24;63H[K[24;1H[27m[m[H[2J[1;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[2;1HST_OFFSET, &bad_pkts);
1244    printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[5;4H printw([31m"[m[35m\n[m[31m"[m);[7;4H [34m// Verify if we should reset the counters[m
1245    [34m/*if ((port_status & 0x1100) == 0x1100) {
1246      // Only reset if the number of good packets has incremented but the bad
1247      // packets have remained the same
1248      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
1249        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[13;1HOFFSET, 0x3);
1250      }
1251
1252      // Update the counters
1253      prev_bad_pkts[i] = bad_pkts;
1254      prev_good_pkts[i] = good_pkts;
1255    }*/[m[21;4H [34m// Update the good flag[m
1256    [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H93,56[9C61%[11;56H[?12l[?25h[?25l[24;1H/\<prev_good_pkts\>[24;63H[K[24;1H[62C99,7[10C61%[18;7H[?12l[?25h[?25l[24;63H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H[34m *
1257 */[m
1258
1259[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1260[35m#include [m[31m"selftest.h"[m
1261[35m#include [m[31m"selftest_phy.h"[m
1262[35m#include [m[31m<curses.h>[m
1263[35m#include [m[31m<time.h>[m
1264
1265[35m#define NUM_PORTS [m[31m4[m
1266
1267[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1268[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];
1269
1270[34m/*
1271 * Reset the interface and configure it for continuous operation
1272 */[m
1273[32mvoid[m phyResetContinuous([32mvoid[m) {
1274  [32mint[m i;
1275
1276  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
1277    prev_good_pkts[i] = [31m0[m;
1278    prev_bad_pkts[i] = [31m0[m;[24;63H21,12[10C6% [31msearch hit BOTTOM, continuing at TOP[m[24;63H[K[24;63H21,12[10C6%[12;12H[?12l[?25h[?25l[24;64H2[13;12H[?12l[?25h[?25l[24;64H3,0-1[14;1H[?12l[?25h[?25l[24;64H4,2  [15;2H[?12l[?25h[?25l[24;64H5,12[16;12H[?12l[?25h[?25l[24;64H6,3 [17;3H[?12l[?25h[?25l[24;64H7,12[18;12H[?12l[?25h[?25l[24;64H8,8 [19;8H[?12l[?25h[?25l[24;64H9,0-1[20;1H[?12l[?25h[?25l[24;63H30,12 [21;12H[?12l[?25h[?25l[24;64H1[22;12H[?12l[?25h[?25l[24;64H2[23;12H[?12l[?25h[?25l[1;23r[23;1H
1279[1;24r[20;35H[106m{[m[23;2H [106m}[m[24;1H[K[24;63H33,3[11C7%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1280[1;24r[19;35H{[22;3H}[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1281[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,12[10C8%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1282[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,12[10C9%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1283[1;24r[23;2H sleep([31m1[m);[24;63H[K[24;63H37,11[9C10%[23;11H[?12l[?25h[?25l[1;23r[23;1H
1284[1;24r[24;63H[K[24;63H38,0-1[8C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1285[1;24r[23;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,12[9C11%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1286[1;24r[24;63H[K[24;63H40,0-1[8C12%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1287[1;24r[23;2H [34m// Start the test[m[24;63H[K[24;63H41,12[9C13%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1288[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);[24;63H[K[24;63H42,12[9C14%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1289[1;24r[23;1H} [34m// phyResetContinuous[m[24;63H[K[24;63H43,12[9C14%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1290[1;24r[24;63H[K[24;63H44,0-1[8C15%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1291[1;24r[23;1H[34m/*[m[24;63H[K[24;63H45,2[10C16%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1292[1;24r[23;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,12[9C17%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1293[1;24r[23;1H[34m *[m[24;63H[K[24;63H47,2[10C17%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1294[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,12[9C18%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1295[1;24r[23;1H[34m */[m[24;63H[K[24;63H49,3[10C19%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1296[1;24r[23;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,12[9C20%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1297[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H51,12[9C20%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1298[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,12[9C21%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1299[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,12[9C22%[23;12H[?12l[?25h[?25l[24;64H2[22;12H[?12l[?25h[?25l[24;64H1[21;12H[?12l[?25h[?25l[24;64H0[20;12H[?12l[?25h[?25l[24;63H49,3 [19;3H[?12l[?25h[?25l[24;64H8,12[18;12H[?12l[?25h[?25l[24;64H7,2 [17;2H[?12l[?25h[?25l[24;64H6,12[16;12H[?12l[?25h[?25l[24;64H5,2 [15;2H[?12l[?25h[?25l[24;64H4,0-1[14;1H[?12l[?25h[?25l[24;64H5,2  [15;2H[?12l[?25h[?25l[24;64H6,12[16;12H[?12l[?25h[?25l[24;64H7,2 [17;2H[?12l[?25h[?25l[24;64H8,12[18;12H[?12l[?25h[?25l[24;64H9,3 [19;3H[?12l[?25h[?25l[24;63H50,12[20;12H[?12l[?25h[?25l[24;64H1[21;12H[?12l[?25h[?25l[24;64H2[22;12H[?12l[?25h[?25l[24;64H3[23;12H[?12l[?25h[?25l[1;23r[23;1H
1300[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,12[9C23%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1301[1;24r[24;63H[K[24;63H55,0-1[8C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1302[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H56,8[10C24%[23;8H[?12l[?25h[?25l[1;23r[23;1H
1303[1;24r[24;63H[K[24;63H57,0-1[8C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1304[1;24r[23;2H [32mint[m x, y;[24;63H[K[24;63H58,11[9C26%[23;11H[?12l[?25h[?25l[1;23r[23;1H
1305[1;24r[24;63H[K[24;63H59,0-1[8C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1306[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,12[9C27%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1307[1;24r[24;63H[K[24;63H61,0-1[8C28%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1308[1;24r[23;2H [34m// Store the current screen position[m[24;63H[K[24;63H62,12[9C29%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1309[1;24r[23;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,12[9C29%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1310[1;24r[24;63H[K[24;63H64,0-1[8C30%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1311[1;24r[23;2H [34m// Move down a line[m[24;63H[K[24;63H65,12[9C31%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1312[1;24r[23;2H move(y + [31m1[m, x);[24;63H[K[24;63H66,12[9C32%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1313[1;24r[24;63H[K[24;63H67,0-1[8C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1314[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H68,12[9C33%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1315[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H69,12[9C34%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1316[1;24r[23;4H printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[24;63H[K[24;63H70,12[9C35%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1317[1;24r[24;63H[K[24;63H71,0-1[8C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1318[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H72,12[9C36%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status[106m)[m;[24;63H[K[24;63H73,12[9C37%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1319[1;24r[21;12H([67CFF[22;1HS[16C)
1320    [38;5;130mif[m (port_status & [31m0x100[m) {[24;63H[K[24;63H74,12[9C38%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1321[1;24r[23;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,12[9C39%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1322[1;24r[21;30H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H76,5[10C40%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1323[1;24r[20;30H{[22;5H}
1324    [38;5;130melse[m {[24;63H[K[24;63H77,10[9C40%[23;10H[?12l[?25h[?25l[1;23r[23;1H
1325[1;24r[23;6H printw([31m" no link"[m);[24;63H[K[24;63H78,12[9C41%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1326[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H79,12[9C42%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1327[1;24r[20;10H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H80,5[10C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1328[1;24r[19;10H{[22;5H}[24;63H[K[24;63H81,0-1[8C43%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1329[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H82,12[9C44%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts[106m)[m;[24;63H[K[24;63H83,12[9C45%[22;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[20;12H([67CNN[21;1HS[20C)
1330    readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &bad_pkts[106m)[m;[24;63H[K[24;63H84,12[9C46%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1331[1;24r[21;12H([67CNN[22;1HS[19C)
1332    printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[24;63H[K[24;63H85,12[9C47%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1333[1;24r[24;63H[K[24;63H86,0-1[8C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1334[1;24r[23;4H printw([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H87,12[9C48%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1335[1;24r[24;63H[K[24;63H88,0-1[8C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1336[1;24r[23;4H [34m// Verify if we should reset the counters[m[24;63H[K[24;63H89,12[9C50%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1337[1;24r[23;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,12[9C51%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1338[1;24r[23;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,12[9C51%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1339[1;24r[23;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,12[9C52%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
1340        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST_[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H93,12[9C53%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1341[1;24r[22;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[23;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,12[9C54%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1342[1;24r[20;75H[34m[106m{[m
1343
1344
1345[34m      [m[34m[106m}[m[24;63H[K[24;63H95,7[10C54%[23;7H[?12l[?25h[?25l[1;23r[23;1H
1346[1;24r[19;75H[34m{[22;7H}[m[24;63H[K[24;63H96,0-1[8C55%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1347[1;24r[23;1H[34m      // Update the counters[m[24;63H[K[24;63H97,12[9C56%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1348[1;24r[23;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[24;63H[K[24;63H98,12[9C56%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1349[1;24r[23;1H[34m      prev_good_pkts[i] = good_pkts;[m[24;63H[K[24;63H99,12[9C57%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1350[1;24r[23;1H[34m    }*/[m[24;63H[K[24;63H100,7[9C58%[23;7H[?12l[?25h[?25l[1;23r[23;1H
1351[1;24r[24;63H[K[24;63H101,0-1[7C59%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1352[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H102,12[8C59%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H[K[24;63H103,12[8C61%[22;12H[?12l[?25h[?25l[24;65H4[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;2H }[24;63H[K[24;63H105,3[9C62%[22;3H[?12l[?25h[?25l[24;65H6,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1353[1;24r[23;2H [34m// Print overall success/failure[m[24;63H[K[24;63H107,12[8C62%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1354[1;24r[23;2H move[106m([my, x[106m)[m;[24;63H[K[24;63H108,12[8C63%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1355[1;24r[22;7H(y, x)
1356  printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[24;63H[K[24;63H109,12[8C64%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1357[1;24r[23;2H move(y + [31m1[m + NUM_PORTS, x);[24;63H[K[24;63H110,12[8C65%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1358[1;24r[24;63H[K[24;63H111,0-1[7C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1359[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H112,12[8C66%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1360[1;24r[23;1H} [34m// phyShowStatusContinuous[m[24;63H[K[24;63H113,12[8C67%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1361[1;24r[24;63H[K[24;63H114,0-1[7C68%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1362[1;24r[23;1H[34m/*[m[24;63H[K[24;63H115,2[9C68%[23;2H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m * Stop the interface
1363 */[m[24;63H[K[24;63H116,12[8C70%[22;12H[?12l[?25h[?25l[24;65H7,3 [23;3H[?12l[?25h[?25l[1;23r[23;1H
1364[1;24r[23;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,12[8C70%[23;12H[?12l[?25h[?25l[24;65H7,3 [22;3H[?12l[?25h[?25l[24;65H6,12[21;12H[?12l[?25h[?25l[24;65H5,2 [20;2H[?12l[?25h[?25l[24;65H4,0-1[19;1H[?12l[?25h[?25l[24;65H3,12 [18;12H[?12l[?25h[?25l[24;65H2[17;12H[?12l[?25h[?25l[24;65H1,0-1[16;1H[?12l[?25h[?25l[24;65H0,12 [15;12H[?12l[?25h[?25l[24;64H09[14;12H[?12l[?25h[?25l[13;7H[106m([my, x[106m)[m[24;65H8[13;12H[?12l[?25h[?25l(y, x)[24;65H7[12;12H[?12l[?25h[?25l[24;65H6,0-1[11;1H[?12l[?25h[?25l[24;65H5,3  [10;3H[?12l[?25h[?25l[24;65H4,12[9;12H[?12l[?25h[?25l[24;65H3[8;12H[?12l[?25h[?25l[24;65H2[7;12H[?12l[?25h[?25l[24;65H1,0-1[6;1H[?12l[?25h[?25l[24;65H0,7  [5;7H[?12l[?25h[?25l[24;63H99,12[4;12H[?12l[?25h[?25l[24;64H8[3;12H[?12l[?25h[?25l[24;64H7[2;12H[?12l[?25h[?25l[24;64H6,0-1[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      }[m[24;63H[K[24;63H95,7[10C70%[1;7H[?12l[?25h[?25l[1;23r[1;1H[2L[1;24r[1;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[2;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,12[9C68%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {[m[24;63H[K[24;63H93,12[9C68%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,12[9C67%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,12[9C66%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,12[9C65%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [34m// Verify if we should reset the counters[m[24;63H[K[24;63H89,12[9C65%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H88,0-1[8C64%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H printw([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H87,12[9C63%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H86,0-1[8C62%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[24;63H[K[24;63H85,12[9C62%[1;12H[?12l[?25h[?25l[1;23r[1;1H[2L[1;24r[1;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[2;1HST_OFFSET, &bad_pkts[106m)[m;[24;63H[K[24;63H84,12[9C61%[1;12H[?12l[?25h[?25l[1;23r[1;1H[2L[1;24r[1;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[2;1HST_OFFSET, &good_pkts[106m)[m;[3;12H([67CNN[4;1HS[19C)[24;63H[K[24;63H83,12[9C59%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [34m// Read the number of good/bad packets[m[2;12H([67CNN[3;1HS[20C)[24;63H[K[24;63H82,12[9C59%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H81,0-1[8C58%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H }[24;63H[K[24;63H80,5[10C57%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;6H good = [31m0[m;[24;63H[K[24;63H79,12[9C56%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;6H printw([31m" no link"[m);[24;63H[K[24;63H78,12[9C56%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [38;5;130melse[m [106m{[4;5H}[m[24;63H[K[24;63H77,10[9C55%[1;10H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H }[2;10H{[5;5H}[24;63H[K[24;63H76,5[10C54%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,12[9C54%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [38;5;130mif[m (port_status & [31m0x100[m) {[23;1H[94m@                                                                               [m[24;63H[K[24;63H74,12[9C53%[1;12H[?12l[?25h[?25l[1;23r[1;1H[2L[1;24r[1;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[2;1HSET, &port_status[106m)[m;[24;63H[K[24;63H73,12[9C52%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [34m// Start with the status register[m[2;12H([67CFF[3;1HS[16C)[24;63H[K[24;63H72,12[9C51%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H71,0-1[8C51%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[24;63H[K[24;63H70,12[9C50%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H69,12[9C49%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Read the individual port registers[m[24;63H[K[24;63H68,12[9C48%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H67,0-1[8C48%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H move(y + [31m1[m, x);[24;63H[K[24;63H66,12[9C47%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Move down a line[m[24;63H[K[24;63H65,12[9C46%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[23;1H[94m@                                                                               [m[24;63H[K[24;63H64,0-1[8C45%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,12[9C45%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Store the current screen position[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H62,12[9C44%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H61,0-1[8C44%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,12[9C43%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H59,0-1[8C42%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m x, y;[24;63H[K[24;63H58,11[9C42%[1;11H[?12l[?25h[?25l[24;64H9,0-1[2;1H[?12l[?25h[?25l[24;63H60,12 [3;12H[?12l[?25h[?25l[24;64H1,0-1[4;1H[?12l[?25h[?25l[24;64H2,12 [5;12H[?12l[?25h[?25l[24;64H3[6;12H[?12l[?25h[?25l[24;64H4,0-1[7;1H[?12l[?25h[?25l[24;64H5,12 [8;12H[?12l[?25h[?25l[24;64H6[9;12H[?12l[?25h[?25l[24;64H7,0-1[10;1H[?12l[?25h[?25l[24;64H8,12 [11;12H[?12l[?25h[?25l[24;64H9[12;12H[?12l[?25h[?25l[24;63H70[13;12H[?12l[?25h[?25l[24;64H1,0-1[14;1H[?12l[?25h[?25l[24;64H2,12 [15;12H[?12l[?25h[?25l[16;12H[106m([m[67CFF[17;1HS[16C[106m)[m[24;64H3[16;12H[?12l[?25h[?25l([67CFF[17;1HS[16C)[24;64H4[18;12H[?12l[?25h[?25l[24;64H5[19;12H[?12l[?25h[?25l[18;30H[106m{[20;5H}[m[24;64H6,5 [20;5H[?12l[?25h[?25l[18;30H{[20;5H}[24;64H7,10[21;10H[?12l[?25h[?25l[24;64H8,12[22;12H[?12l[?25h[?25l[24;64H9[23;12H[?12l[?25h[?25l[1;23r[23;1H
1365[1;24r[20;10H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H80,5[10C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1366[1;24r[19;10H{[22;5H}[24;63H[K[24;63H81,0-1[8C43%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1367[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H82,12[9C44%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts[106m)[m;[24;63H[K[24;63H83,12[9C45%[22;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[20;12H([67CNN[21;1HS[20C)
1368    readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &bad_pkts[106m)[m;[24;63H[K[24;63H84,12[9C46%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1369[1;24r[21;12H([67CNN[22;1HS[19C)
1370    printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[24;63H[K[24;63H85,12[9C47%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1371[1;24r[24;63H[K[24;63H86,0-1[8C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1372[1;24r[23;4H printw([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H87,12[9C48%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1373[1;24r[24;63H[K[24;63H88,0-1[8C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1374[1;24r[23;4H [34m// Verify if we should reset the counters[m[24;63H[K[24;63H89,12[9C50%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1375[1;24r[23;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,12[9C51%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1376[1;24r[23;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,12[9C51%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1377[1;24r[23;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,12[9C52%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
1378        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST_[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H93,12[9C53%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1379[1;24r[22;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[23;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,12[9C54%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1380[1;24r[20;75H[34m[106m{[m
1381
1382
1383[34m      [m[34m[106m}[m[24;63H[K[24;63H95,7[10C54%[23;7H[?12l[?25h[?25l[1;23r[23;1H
1384[1;24r[19;75H[34m{[22;7H}[m[24;63H[K[24;63H96,0-1[8C55%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1385[1;24r[23;1H[34m      // Update the counters[m[24;63H[K[24;63H97,12[9C56%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1386[1;24r[23;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[24;63H[K[24;63H98,12[9C56%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1387[1;24r[23;1H[34m      prev_good_pkts[i] = good_pkts;[m[24;63H[K[24;63H99,12[9C57%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1388[1;24r[23;1H[34m    }*/[m[24;63H[K[24;63H100,7[9C58%[23;7H[?12l[?25h[?25l[1;23r[23;1H
1389[1;24r[24;63H[K[24;63H101,0-1[7C59%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1390[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H102,12[8C59%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H[K[24;63H103,12[8C61%[22;12H[?12l[?25h[?25l[24;65H4[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;2H }[24;63H[K[24;63H105,3[9C62%[22;3H[?12l[?25h[?25l[24;65H6,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1391[1;24r[23;2H [34m// Print overall success/failure[m[24;63H[K[24;63H107,12[8C62%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1392[1;24r[23;2H move[106m([my, x[106m)[m;[24;63H[K[24;63H108,12[8C63%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1393[1;24r[22;7H(y, x)
1394  printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[24;63H[K[24;63H109,12[8C64%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1395[1;24r[23;2H move(y + [31m1[m + NUM_PORTS, x);[24;63H[K[24;63H110,12[8C65%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1396[1;24r[24;63H[K[24;63H111,0-1[7C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1397[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H112,12[8C66%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1398[1;24r[23;1H} [34m// phyShowStatusContinuous[m[24;63H[K[24;63H113,12[8C67%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1399[1;24r[24;63H[K[24;63H114,0-1[7C68%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1400[1;24r[23;1H[34m/*[m[24;63H[K[24;63H115,2[9C68%[23;2H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m * Stop the interface
1401 */[m[24;63H[K[24;63H116,12[8C70%[22;12H[?12l[?25h[?25l[24;65H7,3 [23;3H[?12l[?25h[?25l[1;23r[23;1H
1402[1;24r[23;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,12[8C70%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1403[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H119,12[8C71%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1404[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);[24;63H[K[24;63H120,12[8C72%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1405[1;24r[23;1H} [34m// phyStopContinuous[m[24;63H[K[24;63H121,12[8C73%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1406[1;24r[24;63H[K[24;63H122,0-1[7C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1407[1;24r[23;1H[34m/*[m[24;63H[K[24;63H123,2[9C74%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1408[1;24r[23;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,12[8C75%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1409[1;24r[23;1H[34m *[m[24;63H[K[24;63H125,2[9C76%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1410[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H126,12[8C76%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1411[1;24r[23;1H[34m */[m[24;63H[K[24;63H127,3[9C77%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1412[1;24r[23;1H[32mint[m phyGetResult([32mvoid[m) {[24;63H[K[24;63H128,12[8C78%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1413[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,12[8C79%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1414[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,12[8C79%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1415[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,12[8C80%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1416[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,12[8C81%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1417[1;24r[24;63H[K[24;63H133,0-1[7C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1418[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H134,8[9C82%[23;8H[?12l[?25h[?25l[1;23r[23;1H
1419[1;24r[24;63H[K[24;63H135,0-1[7C83%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1420[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,12[8C84%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1421[1;24r[24;63H[K[24;63H137,0-1[7C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1422[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H138,12[8C85%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1423[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H139,12[8C86%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1424[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H140,12[8C87%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status[106m)[m;[24;63H[K[24;63H141,12[8C88%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1425[1;24r[21;12H([67CFF[22;1HS[16C)
1426    [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {[24;63H[K[24;63H142,12[8C88%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1427[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H143,12[8C89%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1428[1;24r[21;37H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H144,5[9C90%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1429[1;24r[20;37H{[22;5H}[24;63H[K[24;63H145,0-1[7C91%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1430[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H146,12[8C91%[23;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts[106m)[m;[24;63H[K[24;63H147,12[8C92%[22;12H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[20;12H([67CNN[21;1HS[20C)
1431    readReg[106m([m&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts[106m)[m;[24;63H[K[24;63H148,12[8C93%[22;12H[?12l[?25h[?25l[1;23r[23;1H
1432[1;24r[21;12H([67CSS[22;1HT[18C)[24;63H[K[24;63H149,0-1[7C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1433[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H150,12[8C94%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1434[1;24r[23;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[24;63H[K[24;63H151,12[8C95%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1435[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H152,12[8C96%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1436[1;24r[21;24H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H153,5[9C97%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1437[1;24r[5;35H[106m{[m[20;24H{[22;5H}
1438  [106m}[m[24;63H[K[24;63H154,3[9C97%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1439[1;24r[4;35H{[22;3H}[24;63H[K[24;63H155,0-1[7C98%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1440[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H156,12[8C99%[23;12H[?12l[?25h[?25l[1;23r[23;1H
1441[1;24r[23;1H} [34m// phyGetResult[m[24;63H[K[24;63H157,12[8CBot[23;12H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hq[?25l[?12l[?25h[?25l[24;2H[K[24;2H[?12l[?25h [?25l[61C157,12[8CBot[23;12H[?12l[?25h[?25l[24;65H6[22;12H[?12l[?25h[?25l[24;65H5,0-1[21;1H[?12l[?25h[?25l[2;35H[106m{[20;3H}[m[24;65H4,3  [20;3H[?12l[?25h[?25l[2;35H{[17;24H[106m{[19;5H}[m
1442  }[24;65H3,5[19;5H[?12l[?25h[?25l[17;24H{[19;5H}[24;65H2,12[18;12H[?12l[?25h[?25l[24;65H1[17;12H[?12l[?25h[?25l[24;65H0[16;12H[?12l[?25h[?25l[24;64H49,0-1[15;1H[?12l[?25h[?25l[13;12H[106m([m[67CSS[14;1HT[18C[106m)[m[24;65H8,12 [13;12H[?12l[?25h[?25l[11;12H[106m([m[67CNN[12;1HS[20C[106m)[m[13;12H([67CSS[14;1HT[18C)[24;65H7[11;12H[?12l[?25h[?25l([67CNN[12;1HS[20C)[24;65H6[10;12H[?12l[?25h[?25l[24;65H5,0-1[9;1H[?12l[?25h[?25l[6;37H[106m{[8;5H}[m[24;65H4,5  [8;5H[?12l[?25h[?25l[6;37H{[8;5H}[24;65H3,12[7;12H[?12l[?25h[?25l[24;65H2[6;12H[?12l[?25h[?25l[4;12H[106m([m[67CFF[5;1HS[16C[106m)[m[24;65H1[4;12H[?12l[?25h[?25l([67CFF[5;1HS[16C)[24;65H0[3;12H[?12l[?25h[?25l[24;64H39[2;12H[?12l[?25h[?25l[24;65H8[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H137,0-1[7C99%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,12[8C98%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H135,0-1[7C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H134,8[9C97%[1;8H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H133,0-1[7C96%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,12[8C95%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,12[8C94%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,12[8C94%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,12[8C93%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mint[m phyGetResult([32mvoid[m) {[23;1H[94m@                                                                               [m[24;63H[K[24;63H128,12[8C92%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H127,3[9C92%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Return -- boolean indicating success[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H126,12[8C91%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H125,2[9C91%[1;2H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,12[8C91%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H123,2[9C90%[1;2H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H122,0-1[7C89%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H} [34m// phyStopContinuous[m[24;63H[K[24;63H121,12[8C88%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);[24;63H[K[24;63H120,12[8C88%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Stop the test (and wait for the test to stop)[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H119,12[8C87%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,12[8C87%[1;12H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H117,3[9C86%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Stop the interface[m[24;63H[K[24;63H116,12[8C85%[1;12H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25h1[?25l[?12l[?25h [?25l[27m[m[H[2J[1;1H[34m/* ****************************************************************************
1443 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1444 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
1445 *
1446 * Module: selftest_phy.c
1447 * Project: NetFPGA selftest
1448 * Description: SATA selftest module
1449 *
1450 * Change history:
1451 *
1452 */[m
1453
1454[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1455[35m#include [m[31m"selftest.h"[m
1456[35m#include [m[31m"selftest_phy.h"[m
1457[35m#include [m[31m<curses.h>[m
1458[35m#include [m[31m<time.h>[m
1459
1460[35m#define NUM_PORTS [m[31m4[m
1461
1462[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1463[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop[1;1H[?12l[?25h[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8,0-1[18;1H[?12l[?25h[?25l[24;64H9,1  [19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;64H1,1  [21;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H3,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1464[1;24r[23;1H[34m/*[m[24;63H[K[24;63H24,1[11C0%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1465[1;24r[23;1H[34m * Reset the interface and configure it for continuous operation[m[24;63H[K[24;63H25,1[11C1%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1466[1;24r[23;1H[34m */[m[24;63H[K[24;63H26,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1467[1;24r[23;1H[32mvoid[m phyResetContinuous([32mvoid[m) {[24;63H[K[24;63H27,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1468[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H28,1[11C3%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1469[1;24r[24;63H[K[24;63H29,0-1[9C4%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1470[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H30,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1471[1;24r[23;4H prev_good_pkts[i] = [31m0[m;[24;63H[K[24;63H31,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1472[1;24r[23;4H prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,1[11C6%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1473[1;24r[23;2H }[24;63H[K[24;63H33,1[11C7%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1474[1;24r[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1475[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[11C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1476[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[11C9%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1477[1;24r[23;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C10%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1478[1;24r[24;63H[K[24;63H38,0-1[8C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1479[1;24r[23;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1480[1;24r[24;63H[K[24;63H40,0-1[8C12%[23;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25h1[?25l[?12l[?25h [?25l[1;23r[1;1H[17L[1;24r[1;1H[34m/* ****************************************************************************
1481 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1482 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
1483 *
1484 * Module: selftest_phy.c
1485 * Project: NetFPGA selftest
1486 * Description: SATA selftest module
1487 *
1488 * Change history:
1489 *
1490 */[m
1491
1492[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1493[35m#include [m[31m"selftest.h"[m
1494[35m#include [m[31m"selftest_phy.h"[m
1495[35m#include [m[31m<curses.h>[m
1496[35m#include [m[31m<time.h>[m[24;1H[K[24;63H1,1[11CTop[1;1H[?12l[?25h[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8,0-1[18;1H[?12l[?25h[?25l[24;64H9,1  [19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;64H1,1  [21;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H3,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1497[1;24r[23;1H[34m/*[m[24;63H[K[24;63H24,1[11C0%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1498[1;24r[23;1H[34m * Reset the interface and configure it for continuous operation[m[24;63H[K[24;63H25,1[11C1%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1499[1;24r[23;1H[34m */[m[24;63H[K[24;63H26,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1500[1;24r[23;1H[32mvoid[m phyResetContinuous([32mvoid[m) {[24;63H[K[24;63H27,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1501[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H28,1[11C3%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1502[1;24r[24;63H[K[24;63H29,0-1[9C4%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1503[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H30,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1504[1;24r[23;4H prev_good_pkts[i] = [31m0[m;[24;63H[K[24;63H31,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1505[1;24r[23;4H prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,1[11C6%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1506[1;24r[23;2H }[24;63H[K[24;63H33,1[11C7%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1507[1;24r[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1508[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[11C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1509[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[11C9%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1510[1;24r[23;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C10%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1511[1;24r[24;63H[K[24;63H38,0-1[8C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1512[1;24r[23;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1513[1;24r[24;63H[K[24;63H40,0-1[8C12%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1514[1;24r[23;2H [34m// Start the test[m[24;63H[K[24;63H41,1[10C13%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1515[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);[24;63H[K[24;63H42,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1516[1;24r[7;31H[106m{[23;1H}[m [34m// phyResetContinuous[m[24;63H[K[24;63H43,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1517[1;24r[6;31H{[22;1H}[24;63H[K[24;63H44,0-1[8C15%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1518[1;24r[23;1H[34m/*[m[24;63H[K[24;63H45,1[10C16%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1519[1;24r[23;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1520[1;24r[23;1H[34m *[m[24;63H[K[24;63H47,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1521[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,1[10C18%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1522[1;24r[23;1H[34m */[m[24;63H[K[24;63H49,1[10C19%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1523[1;24r[23;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1524[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H51,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1525[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,1[10C21%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1526[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,1[10C22%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1527[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,1[10C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1528[1;24r[24;63H[K[24;63H55,0-1[8C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1529[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H56,1[10C24%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1530[1;24r[24;63H[K[24;63H57,0-1[8C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1531[1;24r[23;2H [32mint[m x, y;[24;63H[K[24;63H58,1[10C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1532[1;24r[24;63H[K[24;63H59,0-1[8C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1533[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,1[10C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1534[1;24r[24;63H[K[24;63H61,0-1[8C28%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1535[1;24r[23;2H [34m// Store the current screen position[m[24;63H[K[24;63H62,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1536[1;24r[23;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1537[1;24r[24;63H[K[24;63H64,0-1[8C30%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1538[1;24r[23;2H [34m// Move down a line[m[24;63H[K[24;63H65,1[10C31%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1539[1;24r[23;2H move(y + [31m1[m, x);[24;63H[K[24;63H66,1[10C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1540[1;24r[24;63H[K[24;63H67,0-1[8C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1541[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H68,1[10C33%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1542[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H69,1[10C34%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1543[1;24r[23;4H printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[24;63H[K[24;63H70,1[10C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1544[1;24r[24;63H[K[24;63H71,0-1[8C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1545[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H72,1[10C36%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H73,1[10C37%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1546[1;24r[23;4H [38;5;130mif[m (port_status & [31m0x100[m) {[24;63H[K[24;63H74,1[10C38%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1547[1;24r[23;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,1[10C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1548[1;24r[23;4H }[24;63H[K[24;63H76,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1549[1;24r[23;4H [38;5;130melse[m {[24;63H[K[24;63H77,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1550[1;24r[23;6H printw([31m" no link"[m);[24;63H[K[24;63H78,1[10C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1551[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H79,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1552[1;24r[23;4H }[24;63H[K[24;63H80,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1553[1;24r[24;63H[K[24;63H81,0-1[8C43%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1554[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H82,1[10C44%[23;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hq[?25l[?12l[?25h [?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# vi selftest_phy.c [K./selftest -n
1555Found net device: nf2c0
1556CPCI Information
1557----------------
1558Version: 4 (rev 1)
1559
1560Device (Virtex) Information
1561---------------------------
1562Project directory: selftest
1563Project name: Selftest
1564Project description: NetFPGA selftest -- exercises all major subsystems of the board
1565
1566Device ID: 5
1567Version: 1.1.0
1568Built against CPCI version: 4 (rev 1)
1569
1570NetFPGA selftest 1.00 alpha
1571Running..... FAILED. Failing tests: PHY interface
1572]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# ./selftest -nvi selftest_phy.c
1573[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"selftest_phy.c" 157L, 3955C[>c[1;1H[34m/* ****************************************************************************
1574 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1575 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
1576 *
1577 * Module: selftest_phy.c
1578 * Project: NetFPGA selftest
1579 * Description: SATA selftest module
1580 *
1581 * Change history:
1582 *
1583 */[m
1584
1585[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1586[35m#include [m[31m"selftest.h"[m
1587[35m#include [m[31m"selftest_phy.h"[m
1588[35m#include [m[31m<curses.h>[m
1589[35m#include [m[31m<time.h>[m
1590
1591[35m#define NUM_PORTS [m[31m4[m
1592
1593[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1594[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m/* ****************************************************************************
1595 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1596 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
1597 *
1598 * Module: selftest_phy.c
1599 * Project: NetFPGA selftest
1600 * Description: SATA selftest module
1601 *
1602 * Change history:
1603 *
1604 */[m
1605
1606[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
1607[35m#include [m[31m"selftest.h"[m
1608[35m#include [m[31m"selftest_phy.h"[m
1609[35m#include [m[31m<curses.h>[m
1610[35m#include [m[31m<time.h>[m
1611
1612[35m#define NUM_PORTS [m[31m4[m
1613
1614[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1615[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop "selftest_phy.c" 157L, 3955C[24;63H[K[24;63H1,1[11CTop[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8,0-1[18;1H[?12l[?25h[?25l[24;64H9,1  [19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;64H1,1  [21;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H3,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1616[1;24r[23;1H[34m/*[m[24;1H[K[24;63H24,1[11C0%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1617[1;24r[23;1H[34m * Reset the interface and configure it for continuous operation[m[24;63H[K[24;63H25,1[11C1%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1618[1;24r[23;1H[34m */[m[24;63H[K[24;63H26,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1619[1;24r[23;1H[32mvoid[m phyResetContinuous([32mvoid[m) {[24;63H[K[24;63H27,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1620[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H28,1[11C3%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1621[1;24r[24;63H[K[24;63H29,0-1[9C4%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1622[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H30,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1623[1;24r[23;4H prev_good_pkts[i] = [31m0[m;[24;63H[K[24;63H31,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1624[1;24r[23;4H prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,1[11C6%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1625[1;24r[23;2H }[24;63H[K[24;63H33,1[11C7%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1626[1;24r[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1627[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[11C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1628[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[11C9%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1629[1;24r[23;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C10%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1630[1;24r[24;63H[K[24;63H38,0-1[8C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1631[1;24r[23;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1632[1;24r[24;63H[K[24;63H40,0-1[8C12%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1633[1;24r[23;2H [34m// Start the test[m[24;63H[K[24;63H41,1[10C13%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1634[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);[24;63H[K[24;63H42,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1635[1;24r[7;31H[106m{[23;1H}[m [34m// phyResetContinuous[m[24;63H[K[24;63H43,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1636[1;24r[6;31H{[22;1H}[24;63H[K[24;63H44,0-1[8C15%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1637[1;24r[23;1H[34m/*[m[24;63H[K[24;63H45,1[10C16%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1638[1;24r[23;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1639[1;24r[23;1H[34m *[m[24;63H[K[24;63H47,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1640[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,1[10C18%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1641[1;24r[23;1H[34m */[m[24;63H[K[24;63H49,1[10C19%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1642[1;24r[23;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1643[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H51,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1644[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,1[10C21%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1645[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,1[10C22%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1646[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,1[10C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1647[1;24r[24;63H[K[24;63H55,0-1[8C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1648[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H56,1[10C24%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1649[1;24r[24;63H[K[24;63H57,0-1[8C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1650[1;24r[23;2H [32mint[m x, y;[24;63H[K[24;63H58,1[10C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1651[1;24r[24;63H[K[24;63H59,0-1[8C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1652[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,1[10C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1653[1;24r[24;63H[K[24;63H61,0-1[8C28%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1654[1;24r[23;2H [34m// Store the current screen position[m[24;63H[K[24;63H62,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1655[1;24r[23;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1656[1;24r[24;63H[K[24;63H64,0-1[8C30%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1657[1;24r[23;2H [34m// Move down a line[m[24;63H[K[24;63H65,1[10C31%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1658[1;24r[23;2H move(y + [31m1[m, x);[24;63H[K[24;63H66,1[10C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1659[1;24r[24;63H[K[24;63H67,0-1[8C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1660[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H68,1[10C33%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1661[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H69,1[10C34%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1662[1;24r[23;4H printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[24;63H[K[24;63H70,1[10C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1663[1;24r[24;63H[K[24;63H71,0-1[8C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1664[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H72,1[10C36%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H73,1[10C37%[22;1H[?12l[?25h[?25l[1;23r[23;1H
1665[1;24r[23;4H [38;5;130mif[m (port_status & [31m0x100[m) {[24;63H[K[24;63H74,1[10C38%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1666[1;24r[23;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,1[10C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1667[1;24r[23;4H }[24;63H[K[24;63H76,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1668[1;24r[23;4H [38;5;130melse[m {[24;63H[K[24;63H77,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1669[1;24r[23;6H printw([31m" no link"[m);[24;63H[K[24;63H78,1[10C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1670[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H79,1[10C42%[23;1H[?12l[?25h[?25l[24;64H8[22;1H[?12l[?25h[?25l[24;64H7[21;1H[?12l[?25h[?25l[24;64H6[20;1H[?12l[?25h[?25l[24;64H5[19;1H[?12l[?25h[?25l[24;64H4[18;1H[?12l[?25h[?25l[24;64H3[16;1H[?12l[?25h[?25l[24;64H2[15;1H[?12l[?25h[?25l[24;64H1,0-1[14;1H[?12l[?25h[?25l[24;64H0,1  [13;1H[?12l[?25h[?25l[24;63H69[12;1H[?12l[?25h[?25l[24;64H8[11;1H[?12l[?25h[?25l[24;64H7,0-1[10;1H[?12l[?25h[?25l[24;64H6,1  [9;1H[?12l[?25h[?25l[24;64H5[8;1H[?12l[?25h[?25l[24;64H4,0-1[7;1H[?12l[?25h[?25l[24;64H3,1  [6;1H[?12l[?25h[?25l[24;64H2[5;1H[?12l[?25h[?25l[24;64H1,0-1[4;1H[?12l[?25h[?25l[24;64H0,1  [3;1H[?12l[?25h[?25l[24;63H59,0-1[2;1H[?12l[?25h[?25l[24;64H8,1  [1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H57,0-1[8C41%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H56,1[10C40%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H55,0-1[8C40%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,1[10C39%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,1[10C38%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,1[10C37%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m val;[23;1H[94m@                                                                               [m[24;63H[K[24;63H51,1[10C37%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,1[10C36%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H49,1[10C35%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,1[10C35%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H47,1[10C34%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,1[10C33%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H45,1[10C32%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H44,0-1[8C32%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H} [34m// phyResetContinuous[m[24;63H[K[24;63H43,1[10C31%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);[24;63H[K[24;63H42,1[10C30%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Start the test[m[24;63H[K[24;63H41,1[10C29%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H40,0-1[8C29%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C28%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H38,0-1[8C27%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C26%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[10C26%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[10C25%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H34,0-1[8C24%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H }[24;63H[K[24;63H33,1[10C23%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,1[10C23%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H prev_good_pkts[i] = [31m0[m;[24;63H[K[24;63H31,1[10C22%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H30,1[10C21%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H29,0-1[8C20%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H28,1[10C20%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m phyResetContinuous([32mvoid[m) {[24;63H[K[24;63H27,1[10C19%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H26,1[10C18%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Reset the interface and configure it for continuous operation[m[24;63H[K[24;63H25,1[10C17%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H24,1[10C17%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H23,0-1[8C16%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H[K[24;63H22,1[10C15%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];[24;63H[K[24;63H21,1[10C14%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H20,0-1[8C14%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#define NUM_PORTS [m[31m4[m[24;63H[K[24;63H19,1[10C13%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H18,0-1[8C12%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m<time.h>[m[24;63H[K[24;63H17,1[10C11%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m<curses.h>[m[24;63H[K[24;63H16,1[10C11%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m"selftest_phy.h"[m[24;63H[K[24;63H15,1[10C10%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m"selftest.h"[m[24;63H[K[24;63H14,1[11C9%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m[24;63H[K[24;63H13,1[11C8%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H12,0-1[9C8%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H11,1[11C7%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H10,1[11C6%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Change history:[m[24;63H[K[24;63H9,1[12C5%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H8,1[12C5%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Description: SATA selftest module[m[24;63H[K[24;63H7,1[12C4%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Project: NetFPGA selftest[m[24;63H[K[24;63H6,1[12C3%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Module: selftest_phy.c[m[24;63H[K[24;63H5,1[12C2%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H4,1[12C2%[1;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25he[?25l[?12l[?25h[?25l [?12l[?25hs[?25l[?12l[?25he[?25l[?12l[?25hl[?25l[?12l[?25hf[?25l[?12l[?25ht[?25l[?12l[?25he[?25l[?12l[?25hs[?25l[?12l[?25ht[?25l[?12l[?25h.[?25l[?12l[?25hh[?25l[?12l[?25h [?25l"selftest.h" 38L, 859C[1;1H[34m/* ****************************************************************************
1671 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1672 * $Id: selftest.h 2016 2007-07-24 20:24:15Z grg $[m[4;3H[K[5;3H[34m Module: selftest.h
1673 * Project: NetFPGA selftest software
1674 * Description:[m[8;3H[K[9;1H[34m * Change history:
1675 *[m[10;3H[K[11;1H[34m */[m[11;4H[K[12;1H[K[13;2H[35mifndef _SELFTEST_H
1676#define _SELFTEST_H     [m[31m1[m
1677
1678[34m/*[m[16;3H[K[17;1H[34m * The NF2 structure for all files to use
1679 */[m[18;4H[K[19;1H[32mextern[m [32mstruct[m nf2device nf2;[19;29H[K[22;3H[34m Define a structure for a test interface[m[22;43H[K[23;3H[K[24;63H1,1[11CTop[1;1H[?12l[?25h[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5,0-1[15;1H[?12l[?25h[?25l[24;64H6,1  [16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8[18;1H[?12l[?25h[?25l[24;64H9[19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;64H1,1  [21;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H3[23;1H[?12l[?25h[?25l[1;23r[23;1H
1680[1;24r[23;1H[34m * Fields:[m[24;1H[K[24;63H24,1[11C6%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1681[1;24r[23;1H[34m *   name : module name[m[24;63H[K[24;63H25,1[10C13%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1682[1;24r[23;1H[34m *   reset_continuous : reset the interface and prepare for continuous testing[m[24;63H[K[24;63H26,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1683[1;24r[23;1H[34m *                      mode[m[24;63H[K[24;63H27,1[10C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1684[1;24r[23;1H[34m *   show_status_continuous : show the status of the continuous test[m[24;63H[K[24;63H28,1[10C33%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1685[1;24r[23;1H[34m */[m[24;63H[K[24;63H29,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1686[1;24r[23;1H[32mstruct[m test_module {[24;63H[K[24;63H30,1[10C46%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1687[1;24r[23;2H [32mchar[m *name;[24;63H[K[24;63H31,1[10C53%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1688[1;24r[23;2H [32mvoid[m (*reset_continuous) ([32mvoid[m);[24;63H[K[24;63H32,1[10C60%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1689[1;24r[23;2H [32mint[m (*show_status_continuous) ([32mvoid[m);[24;63H[K[24;63H33,1[10C66%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1690[1;24r[23;2H [32mvoid[m (*stop_continuous) ([32mvoid[m);[24;63H[K[24;63H34,1[10C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1691[1;24r[23;2H [32mint[m (*get_result) ([32mvoid[m);[24;63H[K[24;63H35,1[10C80%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1692[1;24r[17;20H[106m{[23;1H}[m;[24;63H[K[24;63H36,1[10C86%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1693[1;24r[16;20H{[22;1H}[24;63H[K[24;63H37,0-1[8C93%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1694[1;24r[23;1H[35m#endif[m[24;63H[K[24;63H38,1[10CBot[23;1H[?12l[?25h[?25l[24;64H7,0-1[22;1H[?12l[?25h[?25l[15;20H[106m{[21;1H}[m[24;64H6,1  [21;1H[?12l[?25h[?25l[15;20H{[21;1H}[24;64H5[20;1H[?12l[?25h[?25l[24;64H4[19;1H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hb[?25l[?12l[?25hd[?25l[?12l[?25h [?25l"selftest_phy.c" 157L, 3955C[1;3H[34m ****************************************************************************
1695 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1696 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
1697 *[m[4;3H[K[5;1H[34m * Module: selftest_phy.c
1698 * Project: NetFPGA selftest
1699 * Description: SATA selftest module[m[7;37H[K[9;3H[34m Change history:[m[10;3H[K[11;2H[34m*/[m[11;4H[K[12;1H[K[13;1H[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m[13;43H[K[14;1H[35m#include [m[31m"selftest.h"[m
1700[35m#include [m[31m"selftest_phy.h"[m
1701[35m#include [m[31m<curses.h>[m
1702[35m#include [m[31m<time.h>[m[17;18H[K[18;3H[K[19;1H[35m#define NUM_PORTS [m[31m4[m[19;20H[K[20;3H[K[21;1H[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
1703[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[23;1H[K[24;63H4,1[11CTop[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he[?25l[?12l[?25h[?25l [?12l[?25hs[?25l[?12l[?25he[?25l[?12l[?25hl[?25l[?12l[?25hf[?25l[?12l[?25h[?25l[24;1H[K[24;63H4,1[11CTop[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8,0-1[18;1H[?12l[?25h[?25l[24;64H9,1  [19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;63H19,1  [19;1H[?12l[?25h[?25l[24;66H2[19;2H[?12l[?25h[?25l[24;66H9[19;9H[?12l[?25h[?25l[24;1H/\<NUM_PORTS\>[24;63H[K[24;1H[62C21,27[9CTop[21;27H[?12l[?25h[?25l[24;63H[K[24;1H[62C22,26[9CTop[22;26H[?12l[?25h[?25l[24;63H[K[24;1H[1;23r[1;1H[7M[1;24r[17;1H[34m/*
1704 * Reset the interface and configure it for continuous operation
1705 */[m
1706[32mvoid[m phyResetContinuous([32mvoid[m) {
1707  [32mint[m i;
1708
1709  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;1H[K[24;63H30,19[10C5%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1710[1;24r[23;4H prev_good_pkts[106m[[mi[106m][m = [31m0[m;[24;63H[K[24;63H31,19[10C5%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1711[1;24r[22;19H[i]
1712    prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,19[10C6%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1713[1;24r[20;35H[106m{[m[23;2H [106m}[m[24;63H[K[24;63H33,3[11C7%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1714[1;24r[19;35H{[22;3H}[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1715[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,19[10C8%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1716[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,19[10C9%[23;19H[?12l[?25h[?25l
1717/\<NUM_PORTS\>[24;63H[K[24;1H[27m[m[H[2J[1;2H [32mint[m x, y;
1718
1719  [32mint[m good = [31m1[m;
1720
1721  [34m// Store the current screen position[m
1722  getyx(stdscr, y, x);
1723
1724  [34m// Move down a line[m
1725  move(y + [31m1[m, x);
1726
1727  [34m// Read the individual port registers[m
1728  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
1729    printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[15;4H [34m// Start with the status register[m
1730    readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[17;1HSET, &port_status);
1731    [38;5;130mif[m (port_status & [31m0x100[m) {[19;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);
1732    }
1733    [38;5;130melse[m {[22;6H printw([31m" no link"[m);[23;6H good = [31m0[m;[24;63H69,19[9C42%[12;19H[?12l[?25h[?25l[24;64H8[11;19H[?12l[?25h[?25l[24;64H7,0-1[10;1H[?12l[?25h[?25l[24;64H6,17 [9;17H[?12l[?25h[?25l[24;64H5,19[8;19H[?12l[?25h[?25l[24;64H4,0-1[7;1H[?12l[?25h[?25l[24;64H3,19 [6;19H[?12l[?25h[?25l[24;64H2[5;19H[?12l[?25h[?25l[24;64H1,0-1[4;1H[?12l[?25h[?25l[24;64H0,15 [3;15H[?12l[?25h[?25l[24;63H59,0-1[2;1H[?12l[?25h[?25l[24;64H8,11 [1;11H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H57,0-1[8C41%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H56,8[10C40%[1;8H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H55,0-1[8C40%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,19[9C39%[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,19[9C38%[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,19[9C37%[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m val;[23;1H[94m@                                                                               [m[24;63H[K[24;63H51,19[9C37%[1;19H[?12l[?25h[?25l[24;64H2[2;19H[?12l[?25h[?25l[24;64H3[3;19H[?12l[?25h[?25l[24;64H4[4;19H[?12l[?25h[?25l[24;64H5,0-1[5;1H[?12l[?25h[?25l[24;64H6,8  [6;8H[?12l[?25h[?25l[24;64H7,0-1[7;1H[?12l[?25h[?25l[24;64H8,11 [8;11H[?12l[?25h[?25l[24;64H9,0-1[9;1H[?12l[?25h[?25l[24;63H60,15 [10;15H[?12l[?25h[?25l[24;64H1,0-1[11;1H[?12l[?25h[?25l[24;64H2,19 [12;19H[?12l[?25h[?25l[24;64H3[13;19H[?12l[?25h[?25l[24;64H4,0-1[14;1H[?12l[?25h[?25l[24;64H5,19 [15;19H[?12l[?25h[?25l[24;64H6,17[16;17H[?12l[?25h[?25l[24;64H7,0-1[17;1H[?12l[?25h[?25l[24;64H8,19 [18;19H[?12l[?25h[?25l[24;64H9[19;19H[?12l[?25h[?25l[24;63H70[20;19H[?12l[?25h[?25l[24;64H1,0-1[21;1H[?12l[?25h[?25l[24;64H2,19 [22;19H[?12l[?25h[?25l[1;23r[23;1H
1734[1;24r[22;1H    readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H73,19[9C37%[22;19H[?12l[?25h[?25l[1;23r[23;1H
1735[1;24r[23;4H [38;5;130mif[m (port_status & [31m0x100[m) {[24;63H[K[24;63H74,19[9C38%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1736[1;24r[23;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,19[9C39%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1737[1;24r[21;30H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H76,5[10C40%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1738[1;24r[20;30H{[22;5H}
1739    [38;5;130melse[m {[24;63H[K[24;63H77,10[9C40%[23;10H[?12l[?25h[?25l[1;23r[23;1H
1740[1;24r[23;6H printw([31m" no link"[m);[24;63H[K[24;63H78,19[9C41%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1741[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H79,15[9C42%[23;15H[?12l[?25h[?25l[1;23r[23;1H
1742[1;24r[20;10H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H80,5[10C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1743[1;24r[19;10H{[22;5H}[24;63H[K[24;63H81,0-1[8C43%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1744[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H82,19[9C44%[23;19H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H83,19[9C45%[22;19H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &bad_pkts);[24;63H[K[24;63H84,19[9C46%[22;19H[?12l[?25h[?25l[1;23r[23;1H
1745[1;24r[23;4H printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[24;63H[K[24;63H85,19[9C47%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1746[1;24r[24;63H[K[24;63H86,0-1[8C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1747[1;24r[23;4H printw([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H87,17[9C48%[23;17H[?12l[?25h[?25l[1;23r[23;1H
1748[1;24r[24;63H[K[24;63H88,0-1[8C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1749[1;24r[23;4H [34m// Verify if we should reset the counters[m[24;63H[K[24;63H89,19[9C50%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1750[1;24r[23;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,19[9C51%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1751[1;24r[23;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,19[9C51%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1752[1;24r[23;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,19[9C52%[23;19H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
1753        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST_[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H93,19[9C53%[22;19H[?12l[?25h[?25l[1;23r[23;1H
1754[1;24r[22;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[23;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,19[9C54%[22;19H[?12l[?25h[?25l[1;23r[23;1H
1755[1;24r[20;75H[34m[106m{[m
1756
1757
1758[34m      [m[34m[106m}[m[24;63H[K[24;63H95,7[10C54%[23;7H[?12l[?25h[?25l[1;23r[23;1H
1759[1;24r[19;75H[34m{[22;7H}[m[24;63H[K[24;63H96,0-1[8C55%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1760[1;24r[23;1H[34m      // Update the counters[m[24;63H[K[24;63H97,19[9C56%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1761[1;24r[23;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[24;63H[K[24;63H98,19[9C56%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1762[1;24r[23;1H[34m      prev_good_pkts[i] = good_pkts;[m[24;63H[K[24;63H99,19[9C57%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1763[1;24r[23;1H[34m    }*/[m[24;63H[K[24;63H100,7[9C58%[23;7H[?12l[?25h[?25l[1;23r[23;1H
1764[1;24r[24;63H[K[24;63H101,0-1[7C59%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1765[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H102,19[8C59%[23;19H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H[K[24;63H103,19[8C61%[22;19H[?12l[?25h[?25l[24;65H4,15[23;15H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;2H }[24;63H[K[24;63H105,3[9C62%[22;3H[?12l[?25h[?25l[24;65H6,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
1766[1;24r[23;2H [34m// Print overall success/failure[m[24;63H[K[24;63H107,19[8C62%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1767[1;24r[23;2H move(y, x);[24;63H[K[24;63H108,13[8C63%[23;13H[?12l[?25h[?25l[1;23r[23;1H
1768[1;24r[23;2H printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[24;63H[K[24;63H109,19[8C64%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1769[1;24r[23;2H move(y + [31m1[m + NUM_PORTS, x);[24;63H[K[24;63H110,19[8C65%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1770[1;24r[24;63H[K[24;63H111,0-1[7C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1771[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H112,14[8C66%[23;14H[?12l[?25h[?25l[1;23r[23;1H
1772[1;24r[23;1H} [34m// phyShowStatusContinuous[m[24;63H[K[24;63H113,19[8C67%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1773[1;24r[24;63H[K[24;63H114,0-1[7C68%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1774[1;24r[23;1H[34m/*[m[24;63H[K[24;63H115,2[9C68%[23;2H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m * Stop the interface
1775 */[m[24;63H[K[24;63H116,19[8C70%[22;19H[?12l[?25h[?25l[24;65H7,3 [23;3H[?12l[?25h[?25l[1;23r[23;1H
1776[1;24r[23;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,19[8C70%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1777[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H119,19[8C71%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1778[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);[24;63H[K[24;63H120,19[8C72%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1779[1;24r[23;1H} [34m// phyStopContinuous[m[24;63H[K[24;63H121,19[8C73%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1780[1;24r[24;63H[K[24;63H122,0-1[7C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1781[1;24r[23;1H[34m/*[m[24;63H[K[24;63H123,2[9C74%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1782[1;24r[23;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,19[8C75%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1783[1;24r[23;1H[34m *[m[24;63H[K[24;63H125,2[9C76%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1784[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H126,19[8C76%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1785[1;24r[23;1H[34m */[m[24;63H[K[24;63H127,3[9C77%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1786[1;24r[23;1H[32mint[m phyGetResult([32mvoid[m) {[24;63H[K[24;63H128,19[8C78%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1787[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,19[8C79%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1788[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,19[8C79%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1789[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,19[8C80%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1790[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,19[8C81%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1791[1;24r[24;63H[K[24;63H133,0-1[7C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1792[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H134,8[9C82%[23;8H[?12l[?25h[?25l[1;23r[23;1H
1793[1;24r[24;63H[K[24;63H135,0-1[7C83%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1794[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,15[8C84%[23;15H[?12l[?25h[?25l[1;23r[23;1H
1795[1;24r[24;63H[K[24;63H137,0-1[7C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1796[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H138,19[8C85%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1797[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H139,19[8C86%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1798[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H140,19[8C87%[23;19H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H141,19[8C88%[22;19H[?12l[?25h[?25l[1;23r[23;1H
1799[1;24r[23;4H [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {[24;63H[K[24;63H142,19[8C88%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1800[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H143,15[8C89%[23;15H[?12l[?25h[?25l[1;23r[23;1H
1801[1;24r[21;37H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H144,5[9C90%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1802[1;24r[20;37H{[22;5H}[24;63H[K[24;63H145,0-1[7C91%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1803[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H146,19[8C91%[23;19H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H147,19[8C92%[22;19H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts);[24;63H[K[24;63H148,19[8C93%[22;19H[?12l[?25h[?25l[1;23r[23;1H
1804[1;24r[24;63H[K[24;63H149,0-1[7C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1805[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H150,19[8C94%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1806[1;24r[23;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[24;63H[K[24;63H151,19[8C95%[23;19H[?12l[?25h[?25l[1;23r[23;1H
1807[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H152,15[8C96%[23;15H[?12l[?25h[?25l[1;23r[23;1H
1808[1;24r[21;24H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H153,5[9C97%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1809[1;24r[5;35H[106m{[m[20;24H{[22;5H}
1810  [106m}[m[24;63H[K[24;63H154,3[9C97%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1811[1;24r[4;35H{[22;3H}[24;63H[K[24;63H155,0-1[7C98%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1812[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H156,14[8C99%[23;14H[?12l[?25h[?25l[1;23r[23;1H
1813[1;24r[23;1H} [34m// phyGetResult[m[24;63H[K[24;63H157,17[8CBot[23;17H[?12l[?25h[?25l[24;65H6,14[22;14H[?12l[?25h[?25l[24;65H5,0-1[21;1H[?12l[?25h[?25l[2;35H[106m{[20;3H}[m[24;65H4,3  [20;3H[?12l[?25h[?25l[2;35H{[17;24H[106m{[19;5H}[m
1814  }[24;65H3,5[19;5H[?12l[?25h[?25l[17;24H{[19;5H}[24;65H2,15[18;15H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25he[?25l[?12l[?25h[?25l [?12l[?25hs[?25l[?12l[?25he[?25l[?12l[?25hl[?25l[?12l[?25hf[?25l[?12l[?25ht[?25l[?12l[?25he[?25l[?12l[?25hs[?25l[?12l[?25ht[?25l[?12l[?25h.[?25l[?12l[?25hc[?25l[?12l[?25h [?25l"selftest.c" 512L, 10370C[1;1H[34m/* ****************************************************************************
1815 * vim:set shiftwidth=2 softtabstop=2 expandtab:
1816 * $Id: selftest.c 6010 2010-03-14 08:24:50Z grg $
1817 *[m[4;5H[K[5;1H[34m * Module: selftest.c
1818 * Project: NetFPGA 2.1[m[6;24H[K[7;1H[34m * Description: Interface with the self-test modules on the NetFPGA
1819 * to help diagnose problems.
1820 *
1821 * Change history:[m[10;19H[K[11;1H[34m *[m[11;5H[K[12;1H[34m */[m[12;4H[K[13;5H[K[14;1H[35m#include [m[31m<stdio.h>[m[14;19H[K[15;1H[35m#include [m[31m<stdlib.h>[m
1822[35m#include [m[31m<unistd.h>[m[16;20H[K[17;5H[K[18;1H[35m#include [m[31m<sys/types.h>[m
1823[35m#include [m[31m<sys/stat.h>[m
1824[35m#include [m[31m<sys/socket.h>[m
1825[35m#include [m[31m<sys/time.h>[m[22;3H[K[23;1H[35m#include [m[31m<net/if.h>[m[24;63H1,1[11CTop[1;1H[?12l[?25h[?25l[24;1H/\<NUM_PORTS\>[24;15H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[m [97m[41mE486: Pattern not found: \<NUM_PORTS\>[m[24C1,1[11CTop[1;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hP[?25l[?12l[?25hH[?25l[?12l[?25hY[?25l[?12l[?25h [?25l[27m[m[H[2J[1;4H regStopContinuous,
1826    regGetResult,
1827  },
1828  {
1829    [31m"MDIO interface"[m,
1830    mdioResetContinuous,
1831    mdioShowStatusContinuous,
1832    mdioStopContinuous,
1833    mdioGetResult,
1834  },
1835  {
1836    [31m"PHY interface"[m,
1837    phyResetContinuous,
1838    phyShowStatusContinuous,
1839    phyStopContinuous,
1840    phyGetResult,
1841  },
1842  {
1843    [31m"DRAM controller"[m,
1844    dramResetContinuous,
1845    dramShowStatusContinuous,
1846    dramStopContinuous,
1847    dramGetResult,[24;63H110,6[9C20%[12;6H[?12l[?25h[?25l[24;65H1[13;6H[?12l[?25h[?25l[24;67H5[13;5H[?12l[?25h[?25l[24;65H2[14;5H[?12l[?25h[?25l[24;65H3[15;5H[?12l[?25h[?25l[24;65H4[16;5H[?12l[?25h[?25l[24;65H5,4[17;4H[?12l[?25h[?25l[24;65H6,3[18;3H[?12l[?25h[?25l[24;65H7,5[19;5H[?12l[?25h[?25l[24;65H8[20;5H[?12l[?25h[?25l[24;65H9[21;5H[?12l[?25h[?25l[24;64H20[22;5H[?12l[?25h[?25l[24;65H1[23;5H[?12l[?25h[?25l[1;23r[23;1H
1848[1;24r[23;2H },[24;63H[K[24;63H122,4[9C20%[23;4H[?12l[?25h[?25l[1;23r[23;1H
1849[1;24r[23;2H {[24;63H[K[24;63H123,3[9C20%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1850[1;24r[23;4H [31m"SRAM controller"[m,[24;63H[K[24;63H124,5[9C20%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1851[1;24r[23;4H sramResetContinuous,[24;63H[K[24;63H125,5[9C20%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1852[1;24r[23;4H sramShowStatusContinuous,[24;63H[K[24;63H126,5[9C21%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1853[1;24r[23;4H sramStopContinuous,[24;63H[K[24;63H127,5[9C21%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1854[1;24r[23;4H sramGetResult,[24;63H[K[24;63H128,5[9C21%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1855[1;24r[23;2H },[24;63H[K[24;63H129,4[9C21%[23;4H[?12l[?25h[?25l[1;23r[23;1H
1856[1;24r[23;2H {[24;63H[K[24;63H130,3[9C21%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1857[1;24r[23;4H [31m"SATA controller"[m,[24;63H[K[24;63H131,5[9C22%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1858[1;24r[23;4H serialResetContinuous,[24;63H[K[24;63H132,5[9C22%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1859[1;24r[23;4H serialShowStatusContinuous,[24;63H[K[24;63H133,5[9C22%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1860[1;24r[23;4H serialStopContinuous,[24;63H[K[24;63H134,5[9C22%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1861[1;24r[23;4H serialGetResult,[24;63H[K[24;63H135,5[9C22%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1862[1;24r[23;2H },[24;63H[K[24;63H136,4[9C23%[23;4H[?12l[?25h[?25l[1;23r[23;1H
1863[1;24r[23;2H {[24;63H[K[24;63H137,3[9C23%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1864[1;24r[23;4H [31m"DMA interface"[m,[24;63H[K[24;63H138,5[9C23%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1865[1;24r[23;4H dmaResetContinuous,[24;63H[K[24;63H139,5[9C23%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1866[1;24r[23;4H dmaShowStatusContinuous,[24;63H[K[24;63H140,5[9C23%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1867[1;24r[23;4H dmaStopContinuous,[24;63H[K[24;63H141,5[9C24%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1868[1;24r[23;4H dmaGetResult,[24;63H[K[24;63H142,5[9C24%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1869[1;24r[23;2H },[24;63H[K[24;63H143,4[9C24%[23;4H[?12l[?25h[?25l[1;23r[23;1H
1870[1;24r[23;1H};[24;63H[K[24;63H144,2[9C24%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1871[1;24r[24;63H[K[24;63H145,0-1[7C24%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1872[1;24r[24;63H[K[24;63H146,0-1[7C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1873[1;24r[23;1H[34m/*[m[24;63H[K[24;63H147,2[9C25%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1874[1;24r[23;1H[34m * Main function[m[24;63H[K[24;63H148,5[9C25%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1875[1;24r[23;1H[34m */[m[24;63H[K[24;63H149,3[9C25%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1876[1;24r[23;1H[32mint[m main([32mint[m argc, [32mchar[m *argv[])[24;63H[K[24;63H150,5[9C25%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1877[1;24r[23;1H{[24;63H[K[24;63H151,1[9C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1878[1;24r[23;2H [34m// Set the default device[m[24;63H[K[24;63H152,5[9C26%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1879[1;24r[23;2H nf2.device_name = DEFAULT_IFACE;[24;63H[K[24;63H153,5[9C26%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1880[1;24r[24;63H[K[24;63H154,0-1[7C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1881[1;24r[23;2H [34m// Process the command line arguments[m[24;63H[K[24;63H155,5[9C26%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1882[1;24r[23;2H processArgs(argc, argv);[24;63H[K[24;63H156,5[9C27%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1883[1;24r[24;63H[K[24;63H157,0-1[7C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1884[1;24r[23;2H [34m// Check that the interface is valid and open it if possible[m[24;63H[K[24;63H158,5[9C27%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1885[1;24r[23;2H [38;5;130mif[m (check_iface(&nf2))[24;63H[K[24;63H159,5[9C27%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1886[1;24r[23;2H {[24;63H[K[24;63H160,3[9C28%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1887[1;24r[23;4H exit([31m1[m);[24;63H[K[24;63H161,5[9C28%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1888[1;24r[21;3H[106m{[m
1889
1890  [106m}[m[24;63H[K[24;63H162,3[9C28%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1891[1;24r[20;3H{
1892
1893  }
1894  [38;5;130mif[m (openDescriptor(&nf2))[24;63H[K[24;63H163,5[9C28%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1895[1;24r[23;2H {[24;63H[K[24;63H164,3[9C28%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1896[1;24r[23;4H exit([31m1[m);[24;63H[K[24;63H165,5[9C29%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1897[1;24r[21;3H[106m{[m
1898
1899  [106m}[m[24;63H[K[24;63H166,3[9C29%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1900[1;24r[20;3H{
1901
1902  }[24;63H[K[24;63H167,0-1[7C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1903[1;24r[23;2H [34m// Verify that the correct device is downloaded[m[24;63H[K[24;63H168,5[9C29%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1904[1;24r[23;2H [38;5;130mif[m (!checkVirtexBitfile(&nf2, DEVICE_PROJ_DIR,[24;63H[K[24;63H169,5[9C29%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1905[1;24r[23;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY,[24;63H[K[24;63H170,1-8[7C30%[23;8H[?12l[?25h[?25l[1;23r[23;1H
1906[1;24r[23;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY)) {[24;63H[K[24;63H171,1-8[7C30%[23;8H[?12l[?25h[?25l[1;23r[23;1H
1907[1;24r[23;4H fprintf([31mstderr[m, [31m"[m[35m%s\n[m[31m"[m, getVirtexBitfileErr());[24;63H[K[24;63H172,5[9C30%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1908[1;24r[23;4H exit([31m1[m);[24;63H[K[24;63H173,5[9C30%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1909[1;24r[20;67H[106m{[m[23;2H [106m}[m[24;63H[K[24;63H174,3[9C30%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1910[1;24r[19;67H{[22;3H}
1911  [38;5;130melse[m {[24;63H[K[24;63H175,5[9C31%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1912[1;24r[23;4H printf(getDeviceInfoStr(&nf2));[24;63H[K[24;63H176,5[9C31%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1913[1;24r[21;8H[106m{[m
1914
1915  [106m}[m[24;63H[K[24;63H177,3[9C31%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1916[1;24r[20;8H{
1917
1918  }[24;63H[K[24;63H178,0-1[7C31%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1919[1;24r[23;2H [34m// Add a signal handler[m[24;63H[K[24;63H179,5[9C31%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1920[1;24r[23;2H signal([31mSIGINT[m, sigint_handler);[24;63H[K[24;63H180,5[9C32%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1921[1;24r[24;63H[K[24;63H181,0-1[7C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1922[1;24r[23;2H [34m// Measure the clock rates[m[24;63H[K[24;63H182,5[9C32%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1923[1;24r[23;2H measureClocks();[24;63H[K[24;63H183,5[9C32%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1924[1;24r[24;63H[K[24;63H184,0-1[7C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1925[1;24r[23;2H [34m// Run the appropriate test[m[24;63H[K[24;63H185,5[9C33%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1926[1;24r[23;2H [38;5;130mif[m (continuous) {[24;63H[K[24;63H186,5[9C33%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1927[1;24r[23;4H mainContinuous();[24;63H[K[24;63H187,5[9C33%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1928[1;24r[21;19H[106m{[m
1929
1930  [106m}[m[24;63H[K[24;63H188,3[9C33%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1931[1;24r[20;19H{
1932
1933  }
1934  [38;5;130melse[m [38;5;130mif[m (shortrun) {[24;63H[K[24;63H189,5[9C33%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1935[1;24r[23;4H mainOneShot();[24;63H[K[24;63H190,5[9C34%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1936[1;24r[21;22H[106m{[m
1937
1938  [106m}[m[24;63H[K[24;63H191,3[9C34%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1939[1;24r[20;22H{
1940
1941  }[24;63H[K[24;63H192,0-1[7C34%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1942[1;24r[23;2H [34m// Close the network descriptor[m[24;63H[K[24;63H193,5[9C34%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1943[1;24r[23;2H closeDescriptor(&nf2);[24;63H[K[24;63H194,5[9C34%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1944[1;24r[24;63H[K[24;63H195,0-1[7C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1945[1;24r[23;2H [38;5;130mreturn[m [31m0[m;[24;63H[K[24;63H196,5[9C35%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1946[1;24r[23;1H}[24;63H[K[24;63H197,1[9C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1947[1;24r[24;63H[K[24;63H198,0-1[7C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1948[1;24r[23;1H[34m/*[m[24;63H[K[24;63H199,2[9C35%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1949[1;24r[23;1H[34m * "Main" function for continuous mode[m[24;63H[K[24;63H200,5[9C36%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1950[1;24r[23;1H[34m */[m[24;63H[K[24;63H201,3[9C36%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1951[1;24r[23;1H[32mvoid[m mainContinuous([32mvoid[m)[24;63H[K[24;63H202,5[9C36%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1952[1;24r[23;1H{[24;63H[K[24;63H203,1[9C36%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1953[1;24r[23;2H [34m// Set up curses[m[24;63H[K[24;63H204,5[9C37%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1954[1;24r[23;2H w = initscr();[24;63H[K[24;63H205,5[9C37%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1955[1;24r[23;2H cbreak();[24;63H[K[24;63H206,5[9C37%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1956[1;24r[23;2H halfdelay([31m1[m);[24;63H[K[24;63H207,5[9C37%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1957[1;24r[23;2H noecho();[24;63H[K[24;63H208,5[9C37%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1958[1;24r[24;63H[K[24;63H209,0-1[7C38%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1959[1;24r[23;2H [34m//init_work(); //initialization. one time effort[m[24;63H[K[24;63H210,5[9C38%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1960[1;24r[24;63H[K[24;63H211,0-1[7C38%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1961[1;24r[23;2H [34m// Run the test in continuous mode[m[24;63H[K[24;63H212,5[9C38%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1962[1;24r[23;2H run_continuous();[24;63H[K[24;63H213,5[9C38%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1963[1;24r[23;2H stop_continuous();[24;63H[K[24;63H214,5[9C39%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1964[1;24r[24;63H[K[24;63H215,0-1[7C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1965[1;24r[23;2H [34m// End the curses[m[24;63H[K[24;63H216,5[9C39%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1966[1;24r[23;2H endwin();[24;63H[K[24;63H217,5[9C39%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1967[1;24r[8;1H[106m{[23;1H}[m[24;63H[K[24;63H218,1[9C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1968[1;24r[7;1H{[22;1H}[24;63H[K[24;63H219,0-1[7C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1969[1;24r[23;1H[34m/*[m[24;63H[K[24;63H220,2[9C40%[23;2H[?12l[?25h[?25l[1;23r[23;1H
1970[1;24r[23;1H[34m * "Main" function for one-shot mode[m[24;63H[K[24;63H221,5[9C40%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1971[1;24r[23;1H[34m */[m[24;63H[K[24;63H222,3[9C40%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1972[1;24r[23;1H[32mvoid[m mainOneShot([32mvoid[m)[24;63H[K[24;63H223,5[9C40%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1973[1;24r[23;1H{[24;63H[K[24;63H224,1[9C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1974[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H225,5[9C41%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1975[1;24r[23;2H [32mint[m failed = [31m0[m;[24;63H[K[24;63H226,5[9C41%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1976[1;24r[24;63H[K[24;63H227,0-1[7C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1977[1;24r[23;2H [34m// Reset the board and initialize the tests[m[24;63H[K[24;63H228,5[9C41%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1978[1;24r[23;2H reset_board();[24;63H[K[24;63H229,5[9C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1979[1;24r[23;2H reset_continuous();[24;63H[K[24;63H230,5[9C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1980[1;24r[24;63H[K[24;63H231,0-1[7C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1981[1;24r[23;2H [34m// Run the test in one-shot mode mode[m[24;63H[K[24;63H232,5[9C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1982[1;24r[23;2H printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);[24;63H[K[24;63H233,5[9C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1983[1;24r[23;2H printf([31m"Running"[m);[24;63H[K[24;63H234,5[9C43%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1984[1;24r[23;2H fflush([31mstdout[m);[24;63H[K[24;63H235,5[9C43%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1985[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {[24;63H[K[24;63H236,5[9C43%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1986[1;24r[23;4H sleep([31m1[m);[24;63H[K[24;63H237,5[9C43%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1987[1;24r[23;4H printf([31m"."[m);[24;63H[K[24;63H238,5[9C43%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1988[1;24r[23;4H fflush([31mstdout[m);[24;63H[K[24;63H239,5[9C44%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1989[1;24r[19;39H[106m{[m[23;2H [106m}[m[24;63H[K[24;63H240,3[9C44%[23;3H[?12l[?25h[?25l[1;23r[23;1H
1990[1;24r[18;39H{[22;3H}
1991  printf([31m" "[m);[24;63H[K[24;63H241,5[9C44%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1992[1;24r[24;63H[K[24;63H242,0-1[7C44%[23;1H[?12l[?25h[?25l[1;23r[23;1H
1993[1;24r[23;2H [34m// Verify the results[m[24;63H[K[24;63H243,5[9C44%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1994[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {[24;63H[K[24;63H244,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1995[1;24r[23;4H [38;5;130mif[m (!modules[i].get_result()) {[24;63H[K[24;63H245,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1996[1;24r[23;6H [38;5;130mif[m (!failed)[24;63H[K[24;63H246,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1997[1;24r[23;8H printf([31m"FAILED. Failing tests: "[m);[24;63H[K[24;63H247,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1998[1;24r[23;6H [38;5;130melse[m[24;63H[K[24;63H248,5[9C46%[23;5H[?12l[?25h[?25l[1;23r[23;1H
1999[1;24r[23;8H printf([31m", "[m);[24;63H[K[24;63H249,5[9C46%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2000[1;24r[23;6H printf(modules[i].name);[24;63H[K[24;63H250,5[9C46%[23;5H[?12l[?25h[?25l[24;64H49[22;5H[?12l[?25h[?25l[24;65H8[21;5H[?12l[?25h[?25l[24;65H7[20;5H[?12l[?25h[?25l[24;65H6[19;5H[?12l[?25h[?25l[24;65H5[18;5H[?12l[?25h[?25l[24;65H4[17;5H[?12l[?25h[?25l[24;65H3[16;5H[?12l[?25h[?25l[24;65H2,0-1[15;1H[?12l[?25h[?25l[24;65H1,5  [14;5H[?12l[?25h[?25l[9;39H[106m{[13;3H}[m[24;65H0,3[13;3H[?12l[?25h[?25l[9;39H{[13;3H}[24;64H39,5[12;5H[?12l[?25h[?25l[24;65H8[11;5H[?12l[?25h[?25l[24;65H7[10;5H[?12l[?25h[?25l[24;65H6[9;5H[?12l[?25h[?25l[24;65H5[8;5H[?12l[?25h[?25l[24;65H4[7;5H[?12l[?25h[?25l[24;65H3[6;5H[?12l[?25h[?25l[24;65H2[5;5H[?12l[?25h[?25l[24;65H1,0-1[4;1H[?12l[?25h[?25l[24;65H0,5  [3;5H[?12l[?25h[?25l[24;64H29[2;5H[?12l[?25h[?25l[24;65H8[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H227,0-1[7C46%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m failed = [31m0[m;[24;63H[K[24;63H226,5[9C46%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H225,5[9C45%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H{[24;63H[K[24;63H224,1[9C45%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m mainOneShot([32mvoid[m)[24;63H[K[24;63H223,5[9C45%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H222,3[9C45%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * "Main" function for one-shot mode[m[24;63H[K[24;63H221,5[9C44%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H220,2[9C44%[1;2H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H219,0-1[7C44%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H}[24;63H[K[24;63H218,1[9C44%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H endwin();[24;63H[K[24;63H217,5[9C44%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// End the curses[m[24;63H[K[24;63H216,5[9C43%[1;5H[?12l[?25h[?25l[24;65H7[2;5H[?12l[?25h[?25l[24;65H8,1[3;1H[?12l[?25h[?25l[24;65H9,0-1[4;1H[?12l[?25h[?25l[24;64H20,2  [5;2H[?12l[?25h[?25l[24;65H1,5[6;5H[?12l[?25h[?25l[24;65H2,3[7;3H[?12l[?25h[?25l[24;65H3,5[8;5H[?12l[?25h[?25l[24;65H4,1[9;1H[?12l[?25h[?25l[24;65H5,5[10;5H[?12l[?25h[?25l[24;65H6[11;5H[?12l[?25h[?25l[24;65H7,0-1[12;1H[?12l[?25h[?25l[24;65H8,5  [13;5H[?12l[?25h[?25l[24;65H9[14;5H[?12l[?25h[?25l[24;64H30[15;5H[?12l[?25h[?25l[24;65H1,0-1[16;1H[?12l[?25h[?25l[24;65H2,5  [17;5H[?12l[?25h[?25l[24;65H3[18;5H[?12l[?25h[?25l[24;65H4[19;5H[?12l[?25h[?25l[24;65H5[20;5H[?12l[?25h[?25l[24;65H6[21;5H[?12l[?25h[?25l[24;65H7[22;5H[?12l[?25h[?25l[24;65H8[23;5H[?12l[?25h[?25l[1;23r[23;1H
2001[1;24r[23;4H fflush([31mstdout[m);[24;63H[K[24;63H239,5[9C44%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2002[1;24r[19;39H[106m{[m[23;2H [106m}[m[24;63H[K[24;63H240,3[9C44%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2003[1;24r[18;39H{[22;3H}
2004  printf([31m" "[m);[24;63H[K[24;63H241,5[9C44%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2005[1;24r[24;63H[K[24;63H242,0-1[7C44%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2006[1;24r[23;2H [34m// Verify the results[m[24;63H[K[24;63H243,5[9C44%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2007[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {[24;63H[K[24;63H244,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2008[1;24r[23;4H [38;5;130mif[m (!modules[i].get_result()) {[24;63H[K[24;63H245,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2009[1;24r[23;6H [38;5;130mif[m (!failed)[24;63H[K[24;63H246,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2010[1;24r[23;8H printf([31m"FAILED. Failing tests: "[m);[24;63H[K[24;63H247,5[9C45%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2011[1;24r[23;6H [38;5;130melse[m[24;63H[K[24;63H248,5[9C46%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2012[1;24r[23;8H printf([31m", "[m);[24;63H[K[24;63H249,5[9C46%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2013[1;24r[23;6H printf(modules[i].name);[24;63H[K[24;63H250,5[9C46%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2014[1;24r[24;63H[K[24;63H251,0-1[7C46%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2015[1;24r[23;6H [34m// Record that the tests have failed[m[24;63H[K[24;63H252,5[9C46%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2016[1;24r[23;6H failed = [31m1[m;[24;63H[K[24;63H253,5[9C47%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2017[1;24r[14;35H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H254,5[9C47%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2018[1;24r[12;35H[106m{[m[13;35H{[22;5H}
2019  [106m}[m[24;63H[K[24;63H255,3[9C47%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2020[1;24r[11;35H{[22;3H}[24;63H[K[24;63H256,0-1[7C47%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2021[1;24r[23;2H [34m// Terminat the tests[m[24;63H[K[24;63H257,5[9C47%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2022[1;24r[23;2H stop_continuous();[24;63H[K[24;63H258,5[9C48%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2023[1;24r[24;63H[K[24;63H259,0-1[7C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2024[1;24r[23;2H [34m// Check if the tests failed[m[24;63H[K[24;63H260,5[9C48%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2025[1;24r[23;2H [38;5;130mif[m (!failed)[24;63H[K[24;63H261,5[9C48%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2026[1;24r[23;4H printf([31m"PASSED[m[35m\n[m[31m"[m);[24;63H[K[24;63H262,5[9C48%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2027[1;24r[23;2H [38;5;130melse[m[24;63H[K[24;63H263,5[9C49%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2028[1;24r[23;4H printf([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H264,5[9C49%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2029[1;24r[23;1H}[24;63H[K[24;63H265,1[9C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2030[1;24r[24;63H[K[24;63H266,0-1[7C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2031[1;24r[23;1H[34m/*[m[24;63H[K[24;63H267,2[9C49%[23;2H[?12l[?25h[?25l[1;23r[23;1H
2032[1;24r[23;1H[34m * Display a title bar[m[24;63H[K[24;63H268,5[9C50%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2033[1;24r[23;1H[34m */[m[24;63H[K[24;63H269,3[9C50%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2034[1;24r[23;1H[32mvoid[m title_bar([32mvoid[m) {[24;63H[K[24;63H270,5[9C50%[23;5H[?12l[?25h[?25l[24;64H69,3[22;3H[?12l[?25h[?25l[24;65H8,5[21;5H[?12l[?25h[?25l[24;65H7,2[20;2H[?12l[?25h[?25l[24;65H6,0-1[19;1H[?12l[?25h[?25l[24;65H5,1  [18;1H[?12l[?25h[?25l[24;65H4,5[17;5H[?12l[?25h[?25l[24;65H3[16;5H[?12l[?25h[?25l[24;65H2[15;5H[?12l[?25h[?25l[24;65H1[14;5H[?12l[?25h[?25l[24;65H0[13;5H[?12l[?25h[?25l[24;64H59,0-1[12;1H[?12l[?25h[?25l[24;65H8,5  [11;5H[?12l[?25h[?25l[24;65H7[10;5H[?12l[?25h[?25l[24;65H6,0-1[9;1H[?12l[?25h[?25l[24;65H5,3  [8;3H[?12l[?25h[?25l[24;65H4,5[7;5H[?12l[?25h[?25l[24;65H3[6;5H[?12l[?25h[?25l[24;65H2[5;5H[?12l[?25h[?25l[24;65H1,0-1[4;1H[?12l[?25h[?25l[24;65H0,5  [3;5H[?12l[?25h[?25l[24;64H49[2;5H[?12l[?25h[?25l[24;65H8[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;8H printf([31m"FAILED. Failing tests: "[m);[24;63H[K[24;63H247,5[9C50%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;6H [38;5;130mif[m (!failed)[24;63H[K[24;63H246,5[9C50%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H [38;5;130mif[m (!modules[i].get_result()) {[24;63H[K[24;63H245,5[9C49%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {[24;63H[K[24;63H244,5[9C49%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Verify the results[m[24;63H[K[24;63H243,5[9C49%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H242,0-1[7C49%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m" "[m);[24;63H[K[24;63H241,5[9C49%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H }[24;63H[K[24;63H240,3[9C48%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H fflush([31mstdout[m);[24;63H[K[24;63H239,5[9C48%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H printf([31m"."[m);[24;63H[K[24;63H238,5[9C48%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H sleep([31m1[m);[24;63H[K[24;63H237,5[9C48%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {[24;63H[K[24;63H236,5[9C48%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H fflush([31mstdout[m);[24;63H[K[24;63H235,5[9C47%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m"Running"[m);[24;63H[K[24;63H234,5[9C47%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);[24;63H[K[24;63H233,5[9C47%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Run the test in one-shot mode mode[m[24;63H[K[24;63H232,5[9C47%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H231,0-1[7C47%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H reset_continuous();[24;63H[K[24;63H230,5[9C46%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H reset_board();[24;63H[K[24;63H229,5[9C46%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Reset the board and initialize the tests[m[24;63H[K[24;63H228,5[9C46%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H227,0-1[7C46%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m failed = [31m0[m;[24;63H[K[24;63H226,5[9C46%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H225,5[9C45%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H{[24;63H[K[24;63H224,1[9C45%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m mainOneShot([32mvoid[m)[24;63H[K[24;63H223,5[9C45%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H222,3[9C45%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * "Main" function for one-shot mode[m[24;63H[K[24;63H221,5[9C44%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H220,2[9C44%[1;2H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H219,0-1[7C44%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H}[24;63H[K[24;63H218,1[9C44%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H endwin();[24;63H[K[24;63H217,5[9C44%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// End the curses[m[24;63H[K[24;63H216,5[9C43%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H215,0-1[7C43%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H stop_continuous();[24;63H[K[24;63H214,5[9C43%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H run_continuous();[24;63H[K[24;63H213,5[9C43%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Run the test in continuous mode[m[24;63H[K[24;63H212,5[9C43%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H211,0-1[7C42%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m//init_work(); //initialization. one time effort[m[24;63H[K[24;63H210,5[9C42%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H209,0-1[7C42%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H noecho();[24;63H[K[24;63H208,5[9C42%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H halfdelay([31m1[m);[24;63H[K[24;63H207,5[9C42%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H cbreak();[24;63H[K[24;63H206,5[9C41%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H w = initscr();[24;63H[K[24;63H205,5[9C41%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Set up curses[m[24;63H[K[24;63H204,5[9C41%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[106m{[16;1H}[m[24;63H[K[24;63H203,1[9C41%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m mainContinuous([32mvoid[m)
2035{[17;1H}[24;63H[K[24;63H202,5[9C41%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H201,3[9C40%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * "Main" function for continuous mode[m[24;63H[K[24;63H200,5[9C40%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H199,2[9C40%[1;2H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H198,0-1[7C40%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H}[24;63H[K[24;63H197,1[9C40%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mreturn[m [31m0[m;[24;63H[K[24;63H196,5[9C39%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H195,0-1[7C39%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H closeDescriptor(&nf2);[24;63H[K[24;63H194,5[9C39%[1;5H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Close the network descriptor[m[24;63H[K[24;63H193,5[9C39%[1;5H[?12l[?25h[?25l[24;65H4[2;5H[?12l[?25h[?25l[24;65H5,0-1[3;1H[?12l[?25h[?25l[24;65H6,5  [4;5H[?12l[?25h[?25l[24;65H7,1[5;1H[?12l[?25h[?25l[24;65H8,0-1[6;1H[?12l[?25h[?25l[24;65H9,2  [7;2H[?12l[?25h[?25l[24;63H200,5[8;5H[?12l[?25h[?25l[24;65H1,3[9;3H[?12l[?25h[?25l[24;65H2,5[10;5H[?12l[?25h[?25l[24;65H3,1[11;1H[?12l[?25h[?25l[24;65H4,5[12;5H[?12l[?25h[?25l[24;65H5[13;5H[?12l[?25h[?25l[24;65H6[14;5H[?12l[?25h[?25l[24;65H7[15;5H[?12l[?25h[?25l[24;65H8[16;5H[?12l[?25h[?25l[24;65H9,0-1[17;1H[?12l[?25h[?25l[24;64H10,5  [18;5H[?12l[?25h[?25l[24;65H1,0-1[19;1H[?12l[?25h[?25l[24;65H2,5  [20;5H[?12l[?25h[?25l[24;65H3[21;5H[?12l[?25h[?25l[24;65H4[22;5H[?12l[?25h[?25l[24;65H5,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
2036[1;24r[23;2H [34m// End the curses[m[24;63H[K[24;63H216,5[9C39%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2037[1;24r[23;2H endwin();[24;63H[K[24;63H217,5[9C39%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2038[1;24r[8;1H[106m{[23;1H}[m[24;63H[K[24;63H218,1[9C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2039[1;24r[7;1H{[22;1H}[24;63H[K[24;63H219,0-1[7C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2040[1;24r[23;1H[34m/*[m[24;63H[K[24;63H220,2[9C40%[23;2H[?12l[?25h[?25l[1;23r[23;1H
2041[1;24r[23;1H[34m * "Main" function for one-shot mode[m[24;63H[K[24;63H221,5[9C40%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2042[1;24r[23;1H[34m */[m[24;63H[K[24;63H222,3[9C40%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2043[1;24r[23;1H[32mvoid[m mainOneShot([32mvoid[m)[24;63H[K[24;63H223,5[9C40%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2044[1;24r[23;1H{[24;63H[K[24;63H224,1[9C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2045[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H225,5[9C41%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2046[1;24r[23;2H [32mint[m failed = [31m0[m;[24;63H[K[24;63H226,5[9C41%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2047[1;24r[24;63H[K[24;63H227,0-1[7C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2048[1;24r[23;2H [34m// Reset the board and initialize the tests[m[24;63H[K[24;63H228,5[9C41%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2049[1;24r[23;2H reset_board();[24;63H[K[24;63H229,5[9C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2050[1;24r[23;2H reset_continuous();[24;63H[K[24;63H230,5[9C42%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2051[1;24r[24;63H[K[24;63H231,0-1[7C42%[23;1H[?12l[?25h[?25l[24;65H0,5  [22;5H[?12l[?25h[?25l[24;64H29[21;5H[?12l[?25h[?25l[24;67H3[21;3H[?12l[?25h[?25l[24;64H30[22;3H[?12l[?25h[?25l
2052
2053/\<reset_continuous\>[24;63H[K[24;1H[27m[m[H[2J[1;1H[34m * Run the program in continuous mode
2054 */[m
2055[32mvoid[m run_continuous([32mvoid[m) {
2056  [32mint[m ch = ERR;
2057  [32mint[m count;
2058  [32mint[m prev_lines;
2059  [32mint[m prev_cols;
2060  [32mint[m i;
2061
2062  [34m// Reset the board and initialize the tests[m
2063  reset_board();
2064  reset_continuous();[15;2H [34m// Run the tests continuously and wait[m
2065  [38;5;130mwhile[m ([31m1[m) {
2066    [34m// Remember the screen dimensions[m
2067    prev_lines = LINES;
2068    prev_cols = COLS;[21;4H [34m// Clear the screen and move to the top corner[m
2069    erase();
2070    move([31m0[m,[31m0[m);[24;63H302,3[9C59%[12;3H[?12l[?25h[?25l[24;1H/\<reset_continuous\>[24;63H[K[24;1H[27m[m[H[2J[1;4H [38;5;130mif[m (continuous)[2;6H stop_continuous();[4;4H printf([31m"Caught SIGINT. Exiting...[m[35m\n[m[31m"[m);
2071    exit([31m0[m);
2072  }
2073}
2074
2075[34m/*
2076 * Invoke the reset functions for continuous mode
2077 */[m
2078[32mvoid[m reset_continuous([32mvoid[m) {
2079  [32mint[m i;
2080
2081  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
2082    modules[i].reset_continuous();
2083  }
2084}
2085
2086[34m/*
2087 * Invoke the stop functions for continuous mode
2088 */[m
2089[32mvoid[m stop_continuous([32mvoid[m) {[24;63H383,6[9C75%[12;6H[?12l[?25h[?25l[24;65H4[13;6H[?12l[?25h[?25l[24;65H5,0-1[14;1H[?12l[?25h[?25l[24;65H6,6  [15;6H[?12l[?25h[?25l[24;65H7[16;6H[?12l[?25h[?25l[24;65H6[15;6H[?12l[?25h[?25l[24;65H5,0-1[14;1H[?12l[?25h[?25l[24;65H4,6  [13;6H[?12l[?25h[?25l[24;65H3[12;6H[?12l[?25h[?25l[24;65H2,3[11;3H[?12l[?25h[?25l[24;65H1,6[10;6H[?12l[?25h[?25l[24;65H0,2[9;2H[?12l[?25h[?25l[24;64H79,0-1[8;1H[?12l[?25h[?25l[24;65H8,1  [7;1H[?12l[?25h[?25l[24;65H7,3[6;3H[?12l[?25h[?25l[24;65H6,6[5;6H[?12l[?25h[?25l[24;65H5[4;6H[?12l[?25h[?25l[24;65H4,0-1[3;1H[?12l[?25h[?25l[24;65H3,6  [2;6H[?12l[?25h[?25l[24;65H2[1;6H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H371,0-1[7C75%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H endwin();[24;63H[K[24;63H370,6[9C75%[1;6H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mif[m [106m([msignum == [31mSIGINT[m[106m)[m {[24;63H[K[24;63H369,6[9C75%[1;6H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m sigint_handler([32mint[m signum) {[2;6H([16C)[24;63H[K[24;63H368,6[9C75%[1;6H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H367,3[9C74%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Handle SIGINT gracefully[m[24;63H[K[24;63H366,6[9C74%[1;6H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H365,2[9C74%[1;2H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H364,0-1[7C74%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H}[24;63H[K[24;63H363,1[9C74%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;3H writeReg(&nf2, CPCI_CTRL_REG, val | CPCI_CTRL_CNET_RESET);[24;63H[K[24;63H362,6[9C73%[1;6H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;3H [34m/* Write to the control register to reset it */[m[24;63H[K[24;63H361,6[9C73%[1;6H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H360,0-1[7C73%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;3H readReg(&nf2, CPCI_CTRL_REG, &val);[24;63H[K[24;63H359,6[9C73%[1;6H[?12l[?25h[?25l[24;1H/\<reset_continuous\>[24;63H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H[34m */[m
2090[32mvoid[m reset_continuous([32mvoid[m) {[24;1H[K[24;63H383,6[9C73%[23;6H[?12l[?25h[?25l
2091/\<reset_continuous\>[24;63H[K[24;1H[1;23r[1;1H[4M[1;24r[20;2H [32mint[m i;
2092
2093  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
2094    modules[i].reset_continuous();[24;1H[K[24;63H387,16[8C74%[23;16H[?12l[?25h[?25l
2095/\<reset_continuous\>[24;63H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H[34m//void show_stats (int loop_iter);
2096//bool show_status_serial_test(void);
2097//bool show_status_sram_test(void);
2098//bool show_status_dram_test(void);
2099//bool show_status_mii_test(void);
2100//bool show_status_phy_test(void);
2101//bool show_status_reg_test(void);
2102//void sram_sw_test(SW_TEST_EFFORT_LEVEL );[m
2103[32mvoid[m processArgs ([32mint[m, [32mchar[m **);
2104[32mvoid[m usage ([32mchar[m*);
2105[32mvoid[m run_continuous([32mvoid[m);
2106[32mvoid[m reset_continuous([32mvoid[m);
2107[32mvoid[m stop_continuous([32mvoid[m);
2108[32mvoid[m sigint_handler([32mint[m signum);
2109[32mvoid[m reset_board([32mvoid[m);
2110[32mvoid[m title_bar([32mvoid[m);
2111[32mvoid[m clear_line([32mvoid[m);
2112
2113[35m#define NUM_TESTS [m[31m8[m
2114[34m/* Selftest module interface */[m
2115[32mstruct[m test_module modules[NUM_TESTS] = {
2116  {
2117    [31m"Clock select"[m,[24;63H78,6[10C13% [31msearch hit BOTTOM, continuing at TOP[m[24;63H[K[24;63H78,6[10C13%[12;6H[?12l[?25h[?25l[24;1H/\<reset_continuous\>[24;22H[K[24;1H[27m[m[H[2J[2;1H[34m/*
2118 * "Main" function for one-shot mode
2119 */[m
2120[32mvoid[m mainOneShot([32mvoid[m)
2121{
2122  [32mint[m i;
2123  [32mint[m failed = [31m0[m;
2124
2125  [34m// Reset the board and initialize the tests[m
2126  reset_board();
2127  reset_continuous();
2128
2129  [34m// Run the test in one-shot mode mode[m
2130  printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);
2131  printf([31m"Running"[m);
2132  fflush([31mstdout[m);
2133  [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {
2134    sleep([31m1[m);
2135    printf([31m"."[m);
2136    fflush([31mstdout[m);
2137  }
2138  printf([31m" "[m);[24;63H230,3[9C44%[12;3H[?12l[?25h[?25l[24;65H1,0-1[13;1H[?12l[?25h[?25l[24;65H2,3  [14;3H[?12l[?25h[?25l[24;65H3[15;3H[?12l[?25h[?25l[24;65H4[16;3H[?12l[?25h[?25l[24;65H5[17;3H[?12l[?25h[?25l[24;65H6[18;3H[?12l[?25h[?25l[24;65H7[19;3H[?12l[?25h[?25l[24;65H8[20;3H[?12l[?25h[?25l[24;65H9[21;3H[?12l[?25h[?25l[18;39H[106m{[22;3H}[m[24;64H40[22;3H[?12l[?25h[?25l[18;39H{[22;3H}[24;65H1[23;3H[?12l[?25h[?25l[1;23r[23;1H
2139[1;24r[24;63H[K[24;63H242,0-1[7C44%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2140[1;24r[23;2H [34m// Verify the results[m[24;63H[K[24;63H243,3[9C44%[23;3H[?12l[?25h[?25l[24;65H2,0-1[22;1H[?12l[?25h[?25l[24;65H1,3  [21;3H[?12l[?25h[?25l[16;39H[106m{[20;3H}[m[24;65H0[20;3H[?12l[?25h[?25l[16;39H{[20;3H}[24;64H39[19;3H[?12l[?25h[?25l[24;65H8[18;3H[?12l[?25h[?25l[24;65H7[17;3H[?12l[?25h[?25l[24;65H6[16;3H[?12l[?25h[?25l[24;67H4[16;4H[?12l[?25h[?25l[24;67H5[16;5H[?12l[?25h[?25l[24;67H6[16;6H[?12l[?25h[?25l [106m([29C)[m[24;67H7[16;7H[?12l[?25h[?25l([29C)[24;67H8[16;8H[?12l[?25h[?25l[24;67H9[16;9H[?12l[?25h[?25l[24;67H10[16;10H[?12l[?25h[?25l[24;68H1[16;11H[?12l[?25h[?25l[24;68H2[16;12H[?12l[?25h[?25l[24;68H3[16;13H[?12l[?25h[?25l[24;68H4[16;14H[?12l[?25h[?25l[24;68H5[16;15H[?12l[?25h[?25l[24;68H6[16;16H[?12l[?25h[?25l[24;68H7[16;17H[?12l[?25h[?25l[24;68H8[16;18H[?12l[?25h[?25l[24;68H9[16;19H[?12l[?25h[?25l[24;1H/\<ONE_SHOT_ITER\>[24;63H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H[35m#include [m[31m"selftest_phy.h"[m
2141[35m#include [m[31m"selftest_mdio.h"[m
2142[35m#include [m[31m"selftest_reg.h"[m
2143[35m#include [m[31m"selftest_clk.h"[m
2144[35m#include [m[31m"selftest_dma.h"[m
2145
2146[35m#define PATHLEN         [m[31m80[m
2147
2148[35m#define DEFAULT_IFACE   [m[31m"nf2c0"[m
2149[35m#define SELFTEST_VERSION  [m[31m"1.00 alpha"[m
2150
2151[35m#define ONE_SHOT_ITER   [m[31m5[m
2152
2153[32mtypedef[m [32menum[m {LOW = [31m0[m, HIGH = [31m1[m} SW_TEST_EFFORT_LEVEL;
2154
2155[34m/* Global vars */[m
2156[32mstruct[m nf2device nf2;
2157[32mint[m verbose = [31m0[m;
2158[32mint[m continuous = [31m0[m;
2159[32mint[m shortrun = [31m1[m;
2160[32mint[m no_sata_flg = [31m0[m;
2161
2162[32mFILE[m * log_file;[24;63H48,9[11C7% [31msearch hit BOTTOM, continuing at TOP[m[24;63H[K[24;63H48,9[11C7%[12;9H[?12l[?25h[?25l[24;1H/\<ONE_SHOT_ITER\>[24;19H[K[24;1H[27m[m[H[2J[1;2H [32mint[m i;
2163  [32mint[m failed = [31m0[m;
2164
2165  [34m// Reset the board and initialize the tests[m
2166  reset_board();
2167  reset_continuous();
2168
2169  [34m// Run the test in one-shot mode mode[m
2170  printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);
2171  printf([31m"Running"[m);
2172  fflush([31mstdout[m);
2173  [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {
2174    sleep([31m1[m);
2175    printf([31m"."[m);
2176    fflush([31mstdout[m);
2177  }
2178  printf([31m" "[m);
2179
2180  [34m// Verify the results[m
2181  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
2182    [38;5;130mif[m (!modules[i].get_result()) {[22;6H [38;5;130mif[m (!failed)[23;8H printf([31m"FAILED. Failing tests: "[m);[24;63H236,19[8C45%[12;19H[?12l[?25h[?25l[24;65H7,13[13;13H[?12l[?25h[?25l[24;65H8,16[14;16H[?12l[?25h[?25l[24;65H9,19[15;19H[?12l[?25h[?25l[12;39H[106m{[16;3H}[m[24;64H40,3 [16;3H[?12l[?25h[?25l[12;39H{[16;3H}[24;65H1,14[17;14H[?12l[?25h[?25l[24;65H2,0-1[18;1H[?12l[?25h[?25l[24;65H3,19 [19;19H[?12l[?25h[?25l[24;65H4[20;19H[?12l[?25h[?25l[21;17H[106m[[mi[106m][m[24;65H5[21;19H[?12l[?25h[?25l[i][22;10H[106m([7C)[m[24;65H6,18[22;18H[?12l[?25h[?25l[22;10H([7C)[24;65H7,19[23;19H[?12l[?25h[?25l[1;23r[23;1H
2183[1;24r[23;6H [38;5;130melse[m[24;63H[K[24;63H248,10[8C46%[23;10H[?12l[?25h[?25l[1;23r[23;1H
2184[1;24r[23;8H printf([31m", "[m);[24;63H[K[24;63H249,19[8C46%[23;19H[?12l[?25h[?25l[1;23r[23;1H
2185[1;24r[23;6H printf(modules[i].name);[24;63H[K[24;63H250,19[8C46%[23;19H[?12l[?25h[?25l[1;23r[23;1H
2186[1;24r[24;63H[K[24;63H251,0-1[7C46%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2187[1;24r[23;6H [34m// Record that the tests have failed[m[24;63H[K[24;63H252,19[8C46%[23;19H[?12l[?25h[?25l[1;23r[23;1H
2188[1;24r[23;6H failed = [31m1[m;[24;63H[K[24;63H253,17[8C47%[23;17H[?12l[?25h[?25l[1;23r[23;1H
2189[1;24r[14;35H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H254,5[9C47%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2190[1;24r[12;35H[106m{[m[13;35H{[22;5H}
2191  [106m}[m[24;63H[K[24;63H255,3[9C47%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2192[1;24r[11;35H{[22;3H}[24;63H[K[24;63H256,0-1[7C47%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2193[1;24r[23;2H [34m// Terminat the tests[m[24;63H[K[24;63H257,19[8C47%[23;19H[?12l[?25h[?25l[1;23r[23;1H
2194[1;24r[23;2H stop_continuous[106m()[m;[24;63H[K[24;63H258,19[8C48%[23;19H[?12l[?25h[?25l[1;23r[23;1H
2195[1;24r[22;18H()[24;63H[K[24;63H259,0-1[7C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2196[1;24r[23;2H [34m// Check if the tests failed[m[24;63H[K[24;63H260,19[8C48%[23;19H[?12l[?25h[?25l[1;23r[23;1H
2197[1;24r[23;2H [38;5;130mif[m [106m([m!failed[106m)[m[24;63H[K[24;63H261,14[8C48%[23;14H[?12l[?25h[?25l[1;23r[23;1H
2198[1;24r[22;6H([7C)
2199    printf([31m"PASSED[m[35m\n[m[31m"[m);[24;63H[K[24;63H262,19[8C48%[23;19H[?12l[?25h[?25l[1;23r[23;1H
2200[1;24r[23;2H [38;5;130melse[m[24;63H[K[24;63H263,6[9C49%[23;6H[?12l[?25h[?25l[1;23r[23;1H
2201[1;24r[23;4H printf([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H264,17[8C49%[23;17H[?12l[?25h[?25l[1;23r[23;1H
2202[1;24r[23;1H}[24;63H[K[24;63H265,1[9C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2203[1;24r[24;63H[K[24;63H266,0-1[7C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2204[1;24r[23;1H[34m/*[m[24;63H[K[24;63H267,2[9C49%[23;2H[?12l[?25h[?25l[24;65H6,0-1[22;1H[?12l[?25h[?25l[24;65H5,1  [21;1H[?12l[?25h[?25l[24;65H4,17[20;17H[?12l[?25h[?25l[24;65H3,6 [19;6H[?12l[?25h[?25l[24;65H2,19[18;19H[?12l[?25h[?25l[17;6H[106m([7C)[m[24;65H1,14[17;14H[?12l[?25h[?25l[17;6H([7C)[24;65H0,19[16;19H[?12l[?25h[?25l[24;64H59,0-1[15;1H[?12l[?25h[?25l[14;18H[106m()[m[24;65H8,19 [14;19H[?12l[?25h[?25l()[24;65H7[13;19H[?12l[?25h[?25l[24;65H6,0-1[12;1H[?12l[?25h[?25l[24;65H5,3  [11;3H[?12l[?25h[?25l[1;35H[106m{[10;5H}[m[24;65H4,5[10;5H[?12l[?25h[?25l[1;35H{[10;5H}[24;65H3,17[9;17H[?12l[?25h[?25l[24;65H2,19[8;19H[?12l[?25h[?25l[24;65H1,0-1[7;1H[?12l[?25h[?25l[24;65H0,19 [6;19H[?12l[?25h[?25l[24;64H49[5;19H[?12l[?25h[?25l[24;65H8,10[4;10H[?12l[?25h[?25l[24;65H7,19[3;19H[?12l[?25h[?25l[2;10H[106m([7C)[m[24;65H6,18[2;18H[?12l[?25h[?25l[1;17H[106m[[mi[106m][m[2;10H([7C)[24;65H5,19[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {[2;17H[i][24;63H[K[24;63H244,19[8C49%[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Verify the results[m[24;63H[K[24;63H243,19[8C49%[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H242,0-1[7C49%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m" "[m);[24;63H[K[24;63H241,14[8C49%[1;14H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H }[24;63H[K[24;63H240,3[9C48%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H fflush([31mstdout[m);[24;63H[K[24;63H239,19[8C48%[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H printf([31m"."[m);[24;63H[K[24;63H238,16[8C48%[1;16H[?12l[?25h[?25l[24;65H9,19[2;19H[?12l[?25h[?25l[24;64H40,3 [3;3H[?12l[?25h[?25l[24;65H1,14[4;14H[?12l[?25h[?25l[24;65H2,0-1[5;1H[?12l[?25h[?25l[24;65H3,19 [6;19H[?12l[?25h[?25l[24;65H4[7;19H[?12l[?25h[?25l[8;17H[106m[[mi[106m][m[24;65H5[8;19H[?12l[?25h[?25l[i][9;10H[106m([7C)[m[24;65H6,18[9;18H[?12l[?25h[?25l[9;10H([7C)[24;65H7,19[10;19H[?12l[?25h[?25l[24;65H8,10[11;10H[?12l[?25h[?25l[24;65H9,19[12;19H[?12l[?25h[?25l[24;64H50[13;19H[?12l[?25h[?25l[24;65H1,0-1[14;1H[?12l[?25h[?25l[24;65H2,19 [15;19H[?12l[?25h[?25l[24;65H3,17[16;17H[?12l[?25h[?25l[24;68H6[16;16H[?12l[?25h[?25l[24;68H5[16;15H[?12l[?25h[?25l[24;68H4[16;14H[?12l[?25h[?25l[24;68H3[16;13H[?12l[?25h[?25l[24;68H2[16;12H[?12l[?25h[?25l[24;68H1[16;11H[?12l[?25h[?25l[24;68H0[16;10H[?12l[?25h[?25l[24;67H9 [16;9H[?12l[?25h[?25l[24;67H8[16;8H[?12l[?25h[?25l[24;67H7[16;7H[?12l[?25h[?25l[8;35H[106m{[17;5H}[m[24;65H4,5[17;5H[?12l[?25h[?25l[8;35H{[17;5H}[24;65H3,7[16;7H[?12l[?25h[?25l[24;65H2[15;7H[?12l[?25h[?25l[24;65H1,0-1[14;1H[?12l[?25h[?25l[24;65H0,7  [13;7H[?12l[?25h[?25l[24;64H49[12;7H[?12l[?25h[?25l[24;65H8[11;7H[?12l[?25h[?25l[24;65H7[10;7H[?12l[?25h[?25l[24;65H6[9;7H[?12l[?25h[?25l[24;65H5[8;7H[?12l[?25h[?25l[7;7H[106m([25C)[m[24;65H4[7;7H[?12l[?25h[?25l([25C)[24;65H3[6;7H[?12l[?25h[?25l[24;65H2,0-1[5;1H[?12l[?25h[?25l[24;65H1,7  [4;7H[?12l[?25h[?25l[24;65H0,3[3;3H[?12l[?25h[?25l[24;64H39,7[2;7H[?12l[?25h[?25l[24;65H8[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;4H sleep([31m1[m);[24;63H[K[24;63H237,7[9C48%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [38;5;130mfor[m [106m([mi = [31m0[m; i < ONE_SHOT_ITER; i++[106m)[m {[24;63H[K[24;63H236,7[9C48%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H fflush([31mstdout[m);[2;7H([29C)[24;63H[K[24;63H235,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m"Running"[m);[24;63H[K[24;63H234,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);[24;63H[K[24;63H233,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Run the test in one-shot mode mode[m[24;63H[K[24;63H232,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H231,0-1[7C47%[1;1H[?12l[?25h[?25l[24;65H2,7  [2;7H[?12l[?25h[?25l[24;65H3[3;7H[?12l[?25h[?25l[24;65H4[4;7H[?12l[?25h[?25l[24;65H5[5;7H[?12l[?25h[?25l[6;7H[106m([29C)[m[24;65H6[6;7H[?12l[?25h[?25l([29C)[24;65H7[7;7H[?12l[?25h[?25l[24;65H8[8;7H[?12l[?25h[?25l[24;65H9[9;7H[?12l[?25h[?25l[6;39H[106m{[10;3H}[m[24;64H40,3[10;3H[?12l[?25h[?25l[6;39H{[10;3H}[24;65H1,7[11;7H[?12l[?25h[?25l[24;65H2,0-1[12;1H[?12l[?25h[?25l[24;65H3,7  [13;7H[?12l[?25h[?25l[14;7H[106m([25C)[m[24;65H4[14;7H[?12l[?25h[?25l([25C)[24;65H5[15;7H[?12l[?25h[?25l[24;65H6[16;7H[?12l[?25h[?25l[24;65H7[17;7H[?12l[?25h[?25l[24;65H8[18;7H[?12l[?25h[?25l[24;65H9[19;7H[?12l[?25h[?25l[24;64H50[20;7H[?12l[?25h[?25l[24;65H1,0-1[21;1H[?12l[?25h[?25l[24;65H2,7  [22;7H[?12l[?25h[?25l[24;65H3[23;7H[?12l[?25h[?25l[1;23r[23;1H
2205[1;24r[14;35H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H254,5[9C47%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2206[1;24r[12;35H[106m{[m[13;35H{[22;5H}
2207  [106m}[m[24;63H[K[24;63H255,3[9C47%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2208[1;24r[11;35H{[22;3H}[24;63H[K[24;63H256,0-1[7C47%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2209[1;24r[23;2H [34m// Terminat the tests[m[24;63H[K[24;63H257,7[9C47%[23;7H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25h![?25l[?12l[?25hl[?25l[?12l[?25hs[?25l[?12l[?25h[?25l [?12l[?25h-[?25l[?12l[?25ha[?25l[?12l[?25hl[?25l[?12l[?25h [?25l[8C[?1l>[?12l[?25h[?1049l
2210total 352
2211drwxr-xr-x 2 netfpga netfpga  4096 2011-03-10 15:04 .
2212drwxr-xr-x 8 netfpga netfpga  4096 2011-03-09 18:24 ..
2213-rwxr-xr-x 1 netfpga netfpga 26966 2011-03-09 19:22 bad_pkt_dump
2214-rw-r--r-- 1 netfpga netfpga  2386 2011-03-09 18:24 bad_pkt_dump.c
2215-rw-r--r-- 1 netfpga netfpga  4296 2011-03-09 19:22 bad_pkt_dump.o
2216-rw-r--r-- 1 netfpga netfpga   903 2011-03-09 18:24 Makefile
2217-rw-r--r-- 1 netfpga netfpga  3212 2011-03-09 18:24 or_data_types.h
2218-rw-r--r-- 1 netfpga netfpga   731 2011-03-09 18:24 or_ip.c
2219-rw-r--r-- 1 netfpga netfpga   129 2011-03-09 18:24 or_ip.h
2220-rw-r--r-- 1 netfpga netfpga  3464 2011-03-09 19:22 or_ip.o
2221-rw-r--r-- 1 netfpga netfpga   872 2011-03-09 18:24 or_utils.c
2222-rw-r--r-- 1 netfpga netfpga   292 2011-03-09 18:24 or_utils.h
2223-rw-r--r-- 1 netfpga netfpga  4108 2011-03-09 19:22 or_utils.o
2224-rwxr-xr-x 1 netfpga netfpga 67122 2011-03-09 19:22 selftest
2225-rw-r--r-- 1 netfpga netfpga 10370 2011-03-09 18:24 selftest.c
2226-rw-r--r-- 1 netfpga netfpga  3581 2011-03-09 18:24 selftest_clk.c
2227-rw-r--r-- 1 netfpga netfpga   516 2011-03-09 18:24 selftest_clk.h
2228-rw-r--r-- 1 netfpga netfpga  5740 2011-03-09 19:22 selftest_clk.o
2229-rw-r--r-- 1 root    root    16384 2011-03-10 15:05 .selftest.c.swp
2230-rw-r--r-- 1 netfpga netfpga  6094 2011-03-09 18:24 selftest_dma.c
2231-rw-r--r-- 1 netfpga netfpga   644 2011-03-09 18:24 selftest_dma.h
2232-rw-r--r-- 1 netfpga netfpga 11516 2011-03-09 19:22 selftest_dma.o
2233-rw-r--r-- 1 netfpga netfpga  2660 2011-03-09 18:24 selftest_dram.c
2234-rw-r--r-- 1 netfpga netfpga   554 2011-03-09 18:24 selftest_dram.h
2235-rw-r--r-- 1 netfpga netfpga  4844 2011-03-09 19:22 selftest_dram.o
2236-rw-r--r-- 1 netfpga netfpga   859 2011-03-09 18:24 selftest.h
2237-rw-r--r-- 1 netfpga netfpga  4628 2011-03-09 18:24 selftest_mdio.c
2238-rw-r--r-- 1 netfpga netfpga   526 2011-03-09 18:24 selftest_mdio.h
2239-rw-r--r-- 1 netfpga netfpga  7932 2011-03-09 19:22 selftest_mdio.o
2240-rw-r--r-- 1 netfpga netfpga 17076 2011-03-09 19:22 selftest.o
2241-rw-r--r-- 1 netfpga netfpga  3955 2011-03-09 18:24 selftest_phy.c
2242-rw-r--r-- 1 netfpga netfpga   487 2011-03-09 18:24 selftest_phy.h
2243-rw-r--r-- 1 netfpga netfpga  6612 2011-03-09 19:22 selftest_phy.o
2244-rw-r--r-- 1 netfpga netfpga  1933 2011-03-09 18:24 selftest_reg.c
2245-rw-r--r-- 1 netfpga netfpga   520 2011-03-09 18:24 selftest_reg.h
2246-rw-r--r-- 1 netfpga netfpga  4100 2011-03-09 19:22 selftest_reg.o
2247-rw-r--r-- 1 netfpga netfpga  5986 2011-03-09 18:24 selftest_serial.c
2248-rw-r--r-- 1 netfpga netfpga   512 2011-03-09 18:24 selftest_serial.h
2249-rw-r--r-- 1 netfpga netfpga  6608 2011-03-09 19:22 selftest_serial.o
2250-rw-r--r-- 1 netfpga netfpga  3258 2011-03-09 18:24 selftest_sram.c
2251-rw-r--r-- 1 netfpga netfpga   564 2011-03-09 18:24 selftest_sram.h
2252-rw-r--r-- 1 netfpga netfpga  4976 2011-03-09 19:22 selftest_sram.o
2253
2254Press ENTER or type command to continue[?1049h[?1h=[27m[m[H[2J[?25l[1;2H fflush([31mstdout[m);
2255  [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {
2256    sleep([31m1[m);
2257    printf([31m"."[m);
2258    fflush([31mstdout[m);
2259  }
2260  printf([31m" "[m);
2261
2262  [34m// Verify the results[m
2263  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
2264    [38;5;130mif[m (!modules[i].get_result()) {[12;6H [38;5;130mif[m (!failed)[13;8H printf([31m"FAILED. Failing tests: "[m);[14;6H [38;5;130melse[m[15;8H printf([31m", "[m);[16;6H printf(modules[i].name);[18;6H [34m// Record that the tests have failed[m[19;6H failed = [31m1[m;
2265    }
2266  }
2267
2268  [34m// Terminat the tests[m[24;63H257,7[9C47%[23;7H[?12l[?25h[?25l[24;65H6,0-1[22;1H[?12l[?25h[?25l[10;35H[106m{[21;3H}[m[24;65H5,3  [21;3H[?12l[?25h[?25l[10;35H{[11;35H[106m{[20;5H}[m
2269  }[24;65H4,5[20;5H[?12l[?25h[?25l[11;35H{[20;5H}[24;65H3,7[19;7H[?12l[?25h[?25l[24;65H2[18;7H[?12l[?25h[?25l[24;65H1,0-1[17;1H[?12l[?25h[?25l[24;65H0,7  [16;7H[?12l[?25h[?25l[24;64H49[15;7H[?12l[?25h[?25l[24;65H8[14;7H[?12l[?25h[?25l[24;65H7[13;7H[?12l[?25h[?25l[24;65H6[12;7H[?12l[?25h[?25l[24;65H5[11;7H[?12l[?25h[?25l[10;7H[106m([25C)[m[24;65H4[10;7H[?12l[?25h[?25l([25C)[24;65H3[9;7H[?12l[?25h[?25l[24;65H2,0-1[8;1H[?12l[?25h[?25l[24;65H1,7  [7;7H[?12l[?25h[?25l[2;39H[106m{[6;3H}[m[24;65H0,3[6;3H[?12l[?25h[?25l[2;39H{[6;3H}[24;64H39,7[5;7H[?12l[?25h[?25l[24;65H8[4;7H[?12l[?25h[?25l[24;65H7[3;7H[?12l[?25h[?25l[2;7H[106m([29C)[m[24;65H6[2;7H[?12l[?25h[?25l([29C)[24;65H5[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m"Running"[m);[24;63H[K[24;63H234,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);[24;63H[K[24;63H233,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Run the test in one-shot mode mode[m[24;63H[K[24;63H232,7[9C47%[1;7H[?12l[?25h[?25l[24;65H3[2;7H[?12l[?25h[?25l[24;65H4[3;7H[?12l[?25h[?25l[24;65H5[4;7H[?12l[?25h[?25l[5;7H[106m([29C)[m[24;65H6[5;7H[?12l[?25h[?25l([29C)[24;65H7[6;7H[?12l[?25h[?25l[24;65H8[7;7H[?12l[?25h[?25l[24;65H9[8;7H[?12l[?25h[?25l[5;39H[106m{[9;3H}[m[24;64H40,3[9;3H[?12l[?25h[?25l[5;39H{[9;3H}[24;65H1,7[10;7H[?12l[?25h[?25l[24;65H2,0-1[11;1H[?12l[?25h[?25l[24;65H3,7  [12;7H[?12l[?25h[?25l[13;7H[106m([25C)[m[24;65H4[13;7H[?12l[?25h[?25l([25C)[24;65H5[14;7H[?12l[?25h[?25l[24;65H6[15;7H[?12l[?25h[?25l[24;65H7[16;7H[?12l[?25h[?25l[24;65H8[17;7H[?12l[?25h[?25l[24;65H9[18;7H[?12l[?25h[?25l[24;64H50[19;7H[?12l[?25h[?25l[24;65H1,0-1[20;1H[?12l[?25h[?25l[24;65H2,7  [21;7H[?12l[?25h[?25l[24;65H3[22;7H[?12l[?25h[?25l[14;35H[106m{[23;5H}[m[24;65H4,5[23;5H[?12l[?25h[?25l[1;23r[23;1H
2270[1;24r[12;35H[106m{[m[13;35H{[22;5H}
2271  [106m}[m[24;63H[K[24;63H255,3[9C47%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2272[1;24r[11;35H{[22;3H}[24;63H[K[24;63H256,0-1[7C47%[23;1H[?12l[?25h[?25l[11;35H[106m{[22;3H}[m[24;65H5,3  [22;3H[?12l[?25h[?25l[11;35H{[12;35H[106m{[21;5H}[m
2273  }[24;65H4,5[21;5H[?12l[?25h[?25l[12;35H{[21;5H}[24;65H3,7[20;7H[?12l[?25h[?25l[24;65H2[19;7H[?12l[?25h[?25l[24;65H1,0-1[18;1H[?12l[?25h[?25l[24;65H0,7  [17;7H[?12l[?25h[?25l[24;64H49[16;7H[?12l[?25h[?25l[24;65H8[15;7H[?12l[?25h[?25l[24;65H7[14;7H[?12l[?25h[?25l[24;65H6[13;7H[?12l[?25h[?25l[24;65H5[12;7H[?12l[?25h[?25l[11;7H[106m([25C)[m[24;65H4[11;7H[?12l[?25h[?25l([25C)[24;65H3[10;7H[?12l[?25h[?25l[24;65H2,0-1[9;1H[?12l[?25h[?25l[24;65H1,7  [8;7H[?12l[?25h[?25l[3;39H[106m{[7;3H}[m[24;65H0,3[7;3H[?12l[?25h[?25l[3;39H{[7;3H}[24;64H39,7[6;7H[?12l[?25h[?25l[24;65H8[5;7H[?12l[?25h[?25l[24;65H7[4;7H[?12l[?25h[?25l[3;7H[106m([29C)[m[24;65H6[3;7H[?12l[?25h[?25l([29C)[24;65H5[2;7H[?12l[?25h[?25l[24;65H4[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);[24;63H[K[24;63H233,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Run the test in one-shot mode mode[m[24;63H[K[24;63H232,7[9C47%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H231,0-1[7C47%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H reset_continuous();[24;63H[K[24;63H230,7[9C46%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H reset_board();[24;63H[K[24;63H229,7[9C46%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Reset the board and initialize the tests[m[24;63H[K[24;63H228,7[9C46%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H227,0-1[7C46%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m failed = [31m0[m;[24;63H[K[24;63H226,7[9C46%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H225,7[9C45%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H{[24;63H[K[24;63H224,1[9C45%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mvoid[m mainOneShot([32mvoid[m)[24;63H[K[24;63H223,7[9C45%[1;7H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H222,3[9C45%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * "Main" function for one-shot mode[m[24;63H[K[24;63H221,7[9C44%[1;7H[?12l[?25h[?25l[24;65H2,3[2;3H[?12l[?25h[?25l[24;65H3,7[3;7H[?12l[?25h[?25l[24;65H4,1[4;1H[?12l[?25h[?25l[24;65H5,7[5;7H[?12l[?25h[?25l[24;65H6[6;7H[?12l[?25h[?25l[24;65H7,0-1[7;1H[?12l[?25h[?25l[24;65H8,7  [8;7H[?12l[?25h[?25l[24;65H9[9;7H[?12l[?25h[?25l[24;67H6[9;6H[?12l[?25h[?25l[24;67H5[9;5H[?12l[?25h[?25l[24;64H30[10;5H[?12l[?25h[?25l[24;67H4[10;4H[?12l[?25h[?25l[24;67H3[10;3H[?12l[?25h[?25l[24;1H/\<reset_continuous\>[24;63H[K[24;1H[27m[m[H[2J[1;1H[34m * Run the program in continuous mode
2274 */[m
2275[32mvoid[m run_continuous([32mvoid[m) {
2276  [32mint[m ch = ERR;
2277  [32mint[m count;
2278  [32mint[m prev_lines;
2279  [32mint[m prev_cols;
2280  [32mint[m i;
2281
2282  [34m// Reset the board and initialize the tests[m
2283  reset_board();
2284  reset_continuous();[15;2H [34m// Run the tests continuously and wait[m
2285  [38;5;130mwhile[m ([31m1[m) {
2286    [34m// Remember the screen dimensions[m
2287    prev_lines = LINES;
2288    prev_cols = COLS;[21;4H [34m// Clear the screen and move to the top corner[m
2289    erase();
2290    move([31m0[m,[31m0[m);[24;63H302,3[9C59%[12;3H[?12l[?25h[?25l[24;1H/\<reset_continuous\>[24;63H[K[24;1H[27m[m[H[2J[1;4H [38;5;130mif[m (continuous)[2;6H stop_continuous();[4;4H printf([31m"Caught SIGINT. Exiting...[m[35m\n[m[31m"[m);
2291    exit([31m0[m);
2292  }
2293}
2294
2295[34m/*
2296 * Invoke the reset functions for continuous mode
2297 */[m
2298[32mvoid[m reset_continuous([32mvoid[m) {
2299  [32mint[m i;
2300
2301  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
2302    modules[i].reset_continuous();
2303  }
2304}
2305
2306[34m/*
2307 * Invoke the stop functions for continuous mode
2308 */[m
2309[32mvoid[m stop_continuous([32mvoid[m) {[24;63H383,6[9C75%[12;6H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25he[?25l[?12l[?25h[?25l [?12l[?25h#[?25l[?12l[?25h [?25l"selftest_phy.c" 157L, 3955C[1;2H [34m// Read the individual port registers[m
2310  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
2311    [34m// Start with the status register[m
2312    readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[5;1HSET, &port_status);
2313    [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {
2314      good = [31m0[m;
2315    }[9;1H[K[10;1H    [34m// Read the number of good/bad packets[m[10;43H[K[11;1H    readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[12;1HST_OFFSET, &good_pkts);[12;24H[K[13;2H   readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[14;1HT_OFFSET, &bad_pkts);[15;3H[K[16;4H [34m// Update the good flag[m[16;28H[K[17;2H   [38;5;130mif[m (bad_pkts != [31m0[m) {
2316      good = [31m0[m;
2317    }
2318  }[21;1H[K[22;1H  [38;5;130mreturn[m good;
2319} [34m// phyGetResult[m[23;18H[K[24;63H152,7[9CBot[18;7H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hr[?25l[?12l[?25he[?25l[?12l[?25hs[?25l[?12l[?25he[?25l[?12l[?25ht[?25l[?12l[?25h_[?25l[?12l[?25hc[?25l[?12l[?25ho[?25l[?12l[?25hn[?25l[?12l[?25h [?25l[31msearch hit BOTTOM, continuing at TOP[m [97m[41mE486: Pattern not found: reset_con[m[24;35H[K[24;63H152,7[9CBot[18;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1[?25l[?12l[?25h [?25l[27m[m[H[2J[1;1H[34m/* ****************************************************************************
2320 * vim:set shiftwidth=2 softtabstop=2 expandtab:
2321 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
2322 *
2323 * Module: selftest_phy.c
2324 * Project: NetFPGA selftest
2325 * Description: SATA selftest module
2326 *
2327 * Change history:
2328 *
2329 */[m
2330
2331[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
2332[35m#include [m[31m"selftest.h"[m
2333[35m#include [m[31m"selftest_phy.h"[m
2334[35m#include [m[31m<curses.h>[m
2335[35m#include [m[31m<time.h>[m
2336
2337[35m#define NUM_PORTS [m[31m4[m
2338
2339[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
2340[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];[24;63H1,1[11CTop[1;1H[?12l[?25h[?25l[24;63H2[2;1H[?12l[?25h[?25l[24;63H3[3;1H[?12l[?25h[?25l[24;63H4[4;1H[?12l[?25h[?25l[24;63H5[5;1H[?12l[?25h[?25l[24;63H6[6;1H[?12l[?25h[?25l[24;63H7[7;1H[?12l[?25h[?25l[24;63H8[8;1H[?12l[?25h[?25l[24;63H9[9;1H[?12l[?25h[?25l[24;63H10,1[10;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H2,0-1[12;1H[?12l[?25h[?25l[24;64H3,1  [13;1H[?12l[?25h[?25l[24;64H4[14;1H[?12l[?25h[?25l[24;64H5[15;1H[?12l[?25h[?25l[24;64H6[16;1H[?12l[?25h[?25l[24;64H7[17;1H[?12l[?25h[?25l[24;64H8,0-1[18;1H[?12l[?25h[?25l[24;64H9,1  [19;1H[?12l[?25h[?25l[24;63H20,0-1[20;1H[?12l[?25h[?25l[24;64H1,1  [21;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H3,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
2341[1;24r[23;1H[34m/*[m[24;63H[K[24;63H24,1[11C0%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2342[1;24r[23;1H[34m * Reset the interface and configure it for continuous operation[m[24;63H[K[24;63H25,1[11C1%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2343[1;24r[23;1H[34m */[m[24;63H[K[24;63H26,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2344[1;24r[23;1H[32mvoid[m phyResetContinuous([32mvoid[m) {[24;63H[K[24;63H27,1[11C2%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2345[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H28,1[11C3%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2346[1;24r[24;63H[K[24;63H29,0-1[9C4%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2347[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H30,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2348[1;24r[23;4H prev_good_pkts[i] = [31m0[m;[24;63H[K[24;63H31,1[11C5%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2349[1;24r[23;4H prev_bad_pkts[i] = [31m0[m;[24;63H[K[24;63H32,1[11C6%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2350[1;24r[23;2H }[24;63H[K[24;63H33,1[11C7%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2351[1;24r[24;63H[K[24;63H34,0-1[9C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2352[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[11C8%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2353[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[11C9%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2354[1;24r[23;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C10%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2355[1;24r[24;63H[K[24;63H38,0-1[8C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2356[1;24r[23;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C11%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2357[1;24r[24;63H[K[24;63H40,0-1[8C12%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2358[1;24r[23;2H [34m// Start the test[m[24;63H[K[24;63H41,1[10C13%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2359[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);[24;63H[K[24;63H42,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2360[1;24r[7;31H[106m{[23;1H}[m [34m// phyResetContinuous[m[24;63H[K[24;63H43,1[10C14%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2361[1;24r[6;31H{[22;1H}[24;63H[K[24;63H44,0-1[8C15%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2362[1;24r[23;1H[34m/*[m[24;63H[K[24;63H45,1[10C16%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2363[1;24r[23;1H[34m * Show the status of the SATA test when running in continuous mode[m[24;63H[K[24;63H46,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2364[1;24r[23;1H[34m *[m[24;63H[K[24;63H47,1[10C17%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2365[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H48,1[10C18%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2366[1;24r[23;1H[34m */[m[24;63H[K[24;63H49,1[10C19%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2367[1;24r[23;1H[32mint[m phyShowStatusContinuous([32mvoid[m) {[24;63H[K[24;63H50,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2368[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H51,1[10C20%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2369[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H52,1[10C21%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2370[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H53,1[10C22%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2371[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H54,1[10C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2372[1;24r[24;63H[K[24;63H55,0-1[8C23%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2373[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H56,1[10C24%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2374[1;24r[24;63H[K[24;63H57,0-1[8C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2375[1;24r[23;2H [32mint[m x, y;[24;63H[K[24;63H58,1[10C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2376[1;24r[24;63H[K[24;63H59,0-1[8C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2377[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,1[10C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2378[1;24r[24;63H[K[24;63H61,0-1[8C28%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2379[1;24r[23;2H [34m// Store the current screen position[m[24;63H[K[24;63H62,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2380[1;24r[23;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,1[10C29%[23;1H[?12l[?25h[?25l[24;64H2[22;1H[?12l[?25h[?25l[24;64H1,0-1[21;1H[?12l[?25h[?25l[24;64H0,1  [20;1H[?12l[?25h[?25l[24;63H59,0-1[19;1H[?12l[?25h[?25l[24;64H8,1  [18;1H[?12l[?25h[?25l[24;64H7,0-1[17;1H[?12l[?25h[?25l[24;64H6,1  [16;1H[?12l[?25h[?25l[24;64H5,0-1[15;1H[?12l[?25h[?25l[24;64H4,1  [14;1H[?12l[?25h[?25l[24;64H3[13;1H[?12l[?25h[?25l[24;64H2[12;1H[?12l[?25h[?25l[24;64H1[11;1H[?12l[?25h[?25l[24;64H0[10;1H[?12l[?25h[?25l[24;63H49[9;1H[?12l[?25h[?25l[24;64H8[8;1H[?12l[?25h[?25l[24;64H7[7;1H[?12l[?25h[?25l[24;64H6[6;1H[?12l[?25h[?25l[24;64H5[5;1H[?12l[?25h[?25l[24;64H4,0-1[4;1H[?12l[?25h[?25l[24;64H3,1  [3;1H[?12l[?25h[?25l[24;64H2[2;1H[?12l[?25h[?25l[24;64H1[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H40,0-1[8C29%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);[24;63H[K[24;63H39,1[10C28%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H38,0-1[8C27%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H sleep([31m1[m);[24;63H[K[24;63H37,1[10C26%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);[24;63H[K[24;63H36,1[10C26%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H35,1[10C25%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H34,0-1[8C24%[1;1H[?12l[?25h[?25l[24;64H5,1  [2;1H[?12l[?25h[?25l[24;64H6[3;1H[?12l[?25h[?25l[24;64H7[4;1H[?12l[?25h[?25l[24;64H8,0-1[5;1H[?12l[?25h[?25l[24;64H9,1  [6;1H[?12l[?25h[?25l[24;63H40,0-1[7;1H[?12l[?25h[?25l[24;64H1,1  [8;1H[?12l[?25h[?25l[24;64H2[9;1H[?12l[?25h[?25l[24;64H3[10;1H[?12l[?25h[?25l[24;64H4,0-1[11;1H[?12l[?25h[?25l[24;64H5,1  [12;1H[?12l[?25h[?25l[24;64H6[13;1H[?12l[?25h[?25l[24;64H7[14;1H[?12l[?25h[?25l[24;64H8[15;1H[?12l[?25h[?25l[24;64H9[16;1H[?12l[?25h[?25l[24;63H50[17;1H[?12l[?25h[?25l[24;64H1[18;1H[?12l[?25h[?25l[24;64H2[19;1H[?12l[?25h[?25l[24;64H3[20;1H[?12l[?25h[?25l[24;64H4[21;1H[?12l[?25h[?25l[24;64H5,0-1[22;1H[?12l[?25h[?25l[24;64H6,1  [23;1H[?12l[?25h[?25l[1;23r[23;1H
2381[1;24r[24;63H[K[24;63H57,0-1[8C25%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2382[1;24r[23;2H [32mint[m x, y;[24;63H[K[24;63H58,1[10C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2383[1;24r[24;63H[K[24;63H59,0-1[8C26%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2384[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H60,1[10C27%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2385[1;24r[24;63H[K[24;63H61,0-1[8C28%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2386[1;24r[23;2H [34m// Store the current screen position[m[24;63H[K[24;63H62,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2387[1;24r[23;2H getyx(stdscr, y, x);[24;63H[K[24;63H63,1[10C29%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2388[1;24r[24;63H[K[24;63H64,0-1[8C30%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2389[1;24r[23;2H [34m// Move down a line[m[24;63H[K[24;63H65,1[10C31%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2390[1;24r[23;2H move(y + [31m1[m, x);[24;63H[K[24;63H66,1[10C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2391[1;24r[24;63H[K[24;63H67,0-1[8C32%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2392[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H68,1[10C33%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2393[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H69,1[10C34%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2394[1;24r[23;4H printw([31m"   Port [m[35m%d[m[31m:"[m, i + [31m1[m);[24;63H[K[24;63H70,1[10C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2395[1;24r[24;63H[K[24;63H71,0-1[8C35%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2396[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H72,1[10C36%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H73,1[10C37%[22;1H[?12l[?25h[?25l[1;23r[23;1H
2397[1;24r[23;4H [38;5;130mif[m (port_status & [31m0x100[m) {[24;63H[K[24;63H74,1[10C38%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2398[1;24r[23;6H printw([31m" link w/ [m[35m%d[m[31m"[m, (port_status & [31m0xf0000[m) >> [31m16[m);[24;63H[K[24;63H75,1[10C39%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2399[1;24r[23;4H }[24;63H[K[24;63H76,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2400[1;24r[23;4H [38;5;130melse[m {[24;63H[K[24;63H77,1[10C40%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2401[1;24r[23;6H printw([31m" no link"[m);[24;63H[K[24;63H78,1[10C41%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2402[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H79,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2403[1;24r[23;4H }[24;63H[K[24;63H80,1[10C42%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2404[1;24r[24;63H[K[24;63H81,0-1[8C43%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2405[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H82,1[10C44%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H83,1[10C45%[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG  + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &bad_pkts);[24;63H[K[24;63H84,1[10C46%[22;1H[?12l[?25h[?25l[1;23r[23;1H
2406[1;24r[23;4H printw([31m" Good: [m[35m%d[m[31m   Bad: [m[35m%d[m[31m"[m, good_pkts, bad_pkts);[24;63H[K[24;63H85,1[10C47%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2407[1;24r[24;63H[K[24;63H86,0-1[8C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2408[1;24r[23;4H printw([31m"[m[35m\n[m[31m"[m);[24;63H[K[24;63H87,1[10C48%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2409[1;24r[24;63H[K[24;63H88,0-1[8C49%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2410[1;24r[23;4H [34m// Verify if we should reset the counters[m[24;63H[K[24;63H89,1[10C50%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2411[1;24r[23;4H [34m/*if ((port_status & 0x1100) == 0x1100) {[m[24;63H[K[24;63H90,1[10C51%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2412[1;24r[23;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[24;63H[K[24;63H91,1[10C51%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2413[1;24r[23;1H[34m      // packets have remained the same[m[24;63H[K[24;63H92,1[10C52%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {
2414        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST_[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H93,1[10C53%[22;1H[?12l[?25h[?25l[1;23r[23;1H
2415[1;24r[22;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST__[23;1HOFFSET, 0x3);[m[24;63H[K[24;63H94,1[10C54%[22;1H[?12l[?25h[?25l[1;23r[23;1H
2416[1;24r[23;1H[34m      }[m[24;63H[K[24;63H95,1[10C54%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2417[1;24r[24;63H[K[24;63H96,0-1[8C55%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2418[1;24r[23;1H[34m      // Update the counters[m[24;63H[K[24;63H97,1[10C56%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2419[1;24r[23;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[24;63H[K[24;63H98,1[10C56%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2420[1;24r[23;1H[34m      prev_good_pkts[i] = good_pkts;[m[24;63H[K[24;63H99,1[10C57%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2421[1;24r[23;1H[34m    }*/[m[24;63H[K[24;63H100,1[9C58%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2422[1;24r[24;63H[K[24;63H101,0-1[7C59%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2423[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H102,1[9C59%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H [38;5;130mif[m (bad_pkts != [31m0[m)[23;6H good = [31m0[m;[24;63H[K[24;63H103,1[9C61%[22;1H[?12l[?25h[?25l[24;65H4[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;2H }[24;63H[K[24;63H105,1[9C62%[22;1H[?12l[?25h[?25l[24;65H6,0-1[23;1H[?12l[?25h[?25l[1;23r[23;1H
2424[1;24r[23;2H [34m// Print overall success/failure[m[24;63H[K[24;63H107,1[9C62%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2425[1;24r[23;2H move(y, x);[24;63H[K[24;63H108,1[9C63%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2426[1;24r[23;2H printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[24;63H[K[24;63H109,1[9C64%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2427[1;24r[23;2H move(y + [31m1[m + NUM_PORTS, x);[24;63H[K[24;63H110,1[9C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2428[1;24r[24;63H[K[24;63H111,0-1[7C65%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2429[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H112,1[9C66%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2430[1;24r[23;1H} [34m// phyShowStatusContinuous[m[24;63H[K[24;63H113,1[9C67%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2431[1;24r[24;63H[K[24;63H114,0-1[7C68%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2432[1;24r[23;1H[34m/*[m[24;63H[K[24;63H115,1[9C68%[23;1H[?12l[?25h[?25l[24;65H4,0-1[22;1H[?12l[?25h[?25l[24;65H3,1  [21;1H[?12l[?25h[?25l[24;65H4,0-1[22;1H[?12l[?25h[?25l[24;65H5,1  [23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H[34m * Stop the interface
2433 */[m[24;63H[K[24;63H116,1[9C70%[22;1H[?12l[?25h[?25l[24;65H7[23;1H[?12l[?25h[?25l[1;23r[23;1H
2434[1;24r[23;1H[32mvoid[m phyStopContinuous([32mvoid[m) {[24;63H[K[24;63H118,1[9C70%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2435[1;24r[23;2H [34m// Stop the test (and wait for the test to stop)[m[24;63H[K[24;63H119,1[9C71%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2436[1;24r[23;2H writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);[24;63H[K[24;63H120,1[9C72%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2437[1;24r[20;30H[106m{
2438
2439
2440}[m [34m// phyStopContinuous[m[24;63H[K[24;63H121,1[9C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2441[1;24r[19;30H{
2442
2443
2444}[24;63H[K[24;63H122,0-1[7C73%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2445[1;24r[23;1H[34m/*[m[24;63H[K[24;63H123,1[9C74%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2446[1;24r[23;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,1[9C75%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2447[1;24r[23;1H[34m *[m[24;63H[K[24;63H125,1[9C76%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2448[1;24r[23;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H126,1[9C76%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2449[1;24r[23;1H[34m */[m[24;63H[K[24;63H127,1[9C77%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2450[1;24r[23;1H[32mint[m phyGetResult([32mvoid[m) {[24;63H[K[24;63H128,1[9C78%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2451[1;24r[23;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,1[9C79%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2452[1;24r[23;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,1[9C79%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2453[1;24r[23;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,1[9C80%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2454[1;24r[23;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,1[9C81%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2455[1;24r[24;63H[K[24;63H133,0-1[7C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2456[1;24r[23;2H [32mint[m i;[24;63H[K[24;63H134,1[9C82%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2457[1;24r[24;63H[K[24;63H135,0-1[7C83%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2458[1;24r[23;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,1[9C84%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2459[1;24r[24;63H[K[24;63H137,0-1[7C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2460[1;24r[23;2H [34m// Read the individual port registers[m[24;63H[K[24;63H138,1[9C85%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2461[1;24r[23;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[24;63H[K[24;63H139,1[9C86%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2462[1;24r[23;4H [34m// Start with the status register[m[24;63H[K[24;63H140,1[9C87%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFF[23;1HSET, &port_status);[24;63H[K[24;63H141,1[9C88%[22;1H[?12l[?25h[?25l[1;23r[23;1H
2463[1;24r[23;4H [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {[24;63H[K[24;63H142,1[9C88%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2464[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H143,1[9C89%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2465[1;24r[23;4H }[24;63H[K[24;63H144,1[9C90%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2466[1;24r[24;63H[K[24;63H145,0-1[7C91%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2467[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H146,1[9C91%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H147,1[9C92%[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts);[24;63H[K[24;63H148,1[9C93%[22;1H[?12l[?25h[?25l[1;23r[23;1H
2468[1;24r[24;63H[K[24;63H149,0-1[7C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2469[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H150,1[9C94%[23;1H[?12l[?25h[?25l[24;64H49,0-1[22;1H[?12l[?25h[?25l[24;65H8,1  [20;1H[?12l[?25h[?25l[24;65H7[18;1H[?12l[?25h[?25l[24;65H6[17;1H[?12l[?25h[?25l[24;65H5,0-1[16;1H[?12l[?25h[?25l[24;65H4,1  [15;1H[?12l[?25h[?25l[24;65H3[14;1H[?12l[?25h[?25l[24;65H2[13;1H[?12l[?25h[?25l[24;65H1[11;1H[?12l[?25h[?25l[24;65H0[10;1H[?12l[?25h[?25l[24;64H39[9;1H[?12l[?25h[?25l[24;65H8[8;1H[?12l[?25h[?25l[24;65H7,0-1[7;1H[?12l[?25h[?25l[24;65H6,1  [6;1H[?12l[?25h[?25l[24;65H5,0-1[5;1H[?12l[?25h[?25l[24;65H4,1  [4;1H[?12l[?25h[?25l[24;65H3,0-1[3;1H[?12l[?25h[?25l[24;65H2,1  [2;1H[?12l[?25h[?25l[24;65H1[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m port_status;[24;63H[K[24;63H130,1[9C94%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,1[9C93%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mint[m phyGetResult([32mvoid[m) {[23;1H[94m@                                                                               [m[24;63H[K[24;63H128,1[9C92%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H127,1[9C92%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Return -- boolean indicating success[m[23;1H[94m@                                                                               [m[24;63H[K[24;63H126,1[9C91%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H125,1[9C91%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Get the result of the test[m[24;63H[K[24;63H124,1[9C91%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m/*[m[24;63H[K[24;63H123,1[9C90%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H122,0-1[7C89%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H} [34m// phyStopContinuous[m[24;63H[K[24;63H121,1[9C88%[1;1H[?12l[?25h[?25l[24;65H2,0-1[2;1H[?12l[?25h[?25l[24;65H3,1  [3;1H[?12l[?25h[?25l[24;65H4[4;1H[?12l[?25h[?25l[24;65H5[5;1H[?12l[?25h[?25l[24;65H6[6;1H[?12l[?25h[?25l[24;65H7[7;1H[?12l[?25h[?25l[24;65H8[8;1H[?12l[?25h[?25l[24;65H9[9;1H[?12l[?25h[?25l[24;64H30[10;1H[?12l[?25h[?25l[24;65H1[11;1H[?12l[?25h[?25l[24;65H2[12;1H[?12l[?25h[?25l[24;65H3,0-1[13;1H[?12l[?25h[?25l[24;65H4,1  [14;1H[?12l[?25h[?25l[24;65H5,0-1[15;1H[?12l[?25h[?25l[24;65H6,1  [16;1H[?12l[?25h[?25l[24;65H7,0-1[17;1H[?12l[?25h[?25l[24;65H8,1  [18;1H[?12l[?25h[?25l[24;65H9[19;1H[?12l[?25h[?25l[24;64H40[20;1H[?12l[?25h[?25l[24;65H1[21;1H[?12l[?25h[?25l[24;65H2[23;1H[?12l[?25h[?25l[1;23r[23;1H
2470[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H143,1[9C89%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2471[1;24r[23;4H }[24;63H[K[24;63H144,1[9C90%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2472[1;24r[24;63H[K[24;63H145,0-1[7C91%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2473[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H146,1[9C91%[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H147,1[9C92%[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts);[24;63H[K[24;63H148,1[9C93%[22;1H[?12l[?25h[?25l[1;23r[23;1H
2474[1;24r[24;63H[K[24;63H149,0-1[7C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2475[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H150,1[9C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2476[1;24r[23;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[24;63H[K[24;63H151,1[9C95%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2477[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H152,1[9C96%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2478[1;24r[23;4H }[24;63H[K[24;63H153,1[9C97%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2479[1;24r[23;2H }[24;63H[K[24;63H154,1[9C97%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2480[1;24r[24;63H[K[24;63H155,0-1[7C98%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2481[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H156,1[9C99%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2482[1;24r[23;1H} [34m// phyGetResult[m[24;63H[K[24;63H157,1[9CBot[23;1H[?12l[?25h[?25l[24;65H6[22;1H[?12l[?25h[?25l[24;65H5,0-1[21;1H[?12l[?25h[?25l[24;65H4,1  [20;1H[?12l[?25h[?25l[24;65H3[19;1H[?12l[?25h[?25l[24;65H2[18;1H[?12l[?25h[?25l[24;65H1[17;1H[?12l[?25h[?25l[24;65H0[16;1H[?12l[?25h[?25l[24;64H49,0-1[15;1H[?12l[?25h[?25l[24;65H8,1  [13;1H[?12l[?25h[?25l[24;65H7[11;1H[?12l[?25h[?25l[24;65H6[10;1H[?12l[?25h[?25l[24;65H5,0-1[9;1H[?12l[?25h[?25l[24;65H4,1  [8;1H[?12l[?25h[?25l[24;65H3[7;1H[?12l[?25h[?25l[24;65H2[6;1H[?12l[?25h[?25l[24;65H1[4;1H[?12l[?25h[?25l[24;65H0[3;1H[?12l[?25h[?25l[24;64H39[2;1H[?12l[?25h[?25l[24;65H8[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H137,0-1[7C99%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m good = [31m1[m;[24;63H[K[24;63H136,1[9C98%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H135,0-1[7C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H134,1[9C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H133,0-1[7C96%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,1[9C95%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,1[9C94%[1;1H[?12l[?25h[?25l[24;65H2[2;1H[?12l[?25h[?25l[24;65H3,0-1[3;1H[?12l[?25h[?25l[24;65H4,1  [4;1H[?12l[?25h[?25l[24;65H5,0-1[5;1H[?12l[?25h[?25l[24;65H6,1  [6;1H[?12l[?25h[?25l[24;65H7,0-1[7;1H[?12l[?25h[?25l[24;65H8,1  [8;1H[?12l[?25h[?25l[24;65H9[9;1H[?12l[?25h[?25l[24;64H40[10;1H[?12l[?25h[?25l[24;65H1[11;1H[?12l[?25h[?25l[24;65H2[13;1H[?12l[?25h[?25l[24;65H3[14;1H[?12l[?25h[?25l[24;65H4[15;1H[?12l[?25h[?25l[24;65H5,0-1[16;1H[?12l[?25h[?25l[24;65H6,1  [17;1H[?12l[?25h[?25l[24;65H7[18;1H[?12l[?25h[?25l[24;65H8[20;1H[?12l[?25h[?25l[24;65H9,0-1[22;1H[?12l[?25h[?25l[24;64H50,1  [23;1H[?12l[?25h[?25l[1;23r[23;1H
2483[1;24r[23;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[24;63H[K[24;63H151,1[9C95%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2484[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H152,1[9C96%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2485[1;24r[23;4H }[24;63H[K[24;63H153,1[9C97%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2486[1;24r[23;2H }[24;63H[K[24;63H154,1[9C97%[23;1H[?12l[?25h[?25l[24;65H3[22;1H[?12l[?25h[?25l[24;65H2[21;1H[?12l[?25h[?25l[24;65H1[20;1H[?12l[?25h[?25l[24;65H0[19;1H[?12l[?25h[?25l[24;64H49,0-1[18;1H[?12l[?25h[?25l[24;65H8,1  [16;1H[?12l[?25h[?25l[24;65H7[14;1H[?12l[?25h[?25l[24;65H6[13;1H[?12l[?25h[?25l[24;65H5,0-1[12;1H[?12l[?25h[?25l[24;65H4,1  [11;1H[?12l[?25h[?25l[24;65H3[10;1H[?12l[?25h[?25l[24;65H2[9;1H[?12l[?25h[?25l[24;65H1[7;1H[?12l[?25h[?25l[24;65H0[6;1H[?12l[?25h[?25l[24;64H39[5;1H[?12l[?25h[?25l[24;65H8[4;1H[?12l[?25h[?25l[24;65H7,0-1[3;1H[?12l[?25h[?25l[24;65H6,1  [2;1H[?12l[?25h[?25l[24;65H5,0-1[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32mint[m i;[24;63H[K[24;63H134,1[9C97%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[24;63H[K[24;63H133,0-1[7C96%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m bad_pkts;[24;63H[K[24;63H132,1[9C95%[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m good_pkts;[24;63H[K[24;63H131,1[9C94%[1;1H[?12l[?25h[?25l[24;65H2[2;1H[?12l[?25h[?25l[24;65H3,0-1[3;1H[?12l[?25h[?25l[24;65H4,1  [4;1H[?12l[?25h[?25l[24;65H5,0-1[5;1H[?12l[?25h[?25l[24;65H6,1  [6;1H[?12l[?25h[?25l[24;65H7,0-1[7;1H[?12l[?25h[?25l[24;65H8,1  [8;1H[?12l[?25h[?25l[24;65H9[9;1H[?12l[?25h[?25l[24;64H40[10;1H[?12l[?25h[?25l[24;65H1[11;1H[?12l[?25h[?25l[24;65H2[13;1H[?12l[?25h[?25l[24;65H3[14;1H[?12l[?25h[?25l[24;65H2[13;1H[?12l[?25h[?25l[36C[106m{[15;5H}[m[24;67H37[13;37H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;63H[K[24;63H143,1[9C94%[14;23r[14;1H[L[1;24r[15;5H[106m [m[24;63H[K[24;63H143,1[9C94%[13;37H{[15;5H
2487    }[14;1H[?12l[?25h[?25l[24;67H2-9[14;9H[?12l[?25h[?25l[24;67H1  [14;1H[?12l[?25h[?25l[24;67H2-9[14;9H[?12l[?25h[?25l /[24;67H3-10[14;10H[?12l[?25h[?25l[34m//[m[24;67H4-11[14;11H[?12l[?25h[?25l[34m/K[m[24;67H5-12[14;12H[?12l[?25h[?25l[34mKi[m[24;67H6-13[14;13H[?12l[?25h[?25l[34mir[m[24;67H7-14[14;14H[?12l[?25h[?25l[34mra[m[24;67H8-15[14;15H[?12l[?25h[?25l[34man[m[24;67H9-16[14;16H[?12l[?25h[?25l[15;23r[15;1H[L[1;24r[24;63H[K[24;63H144,1[9C93%[15;1H[?12l[?25h[?25l[24;67H2-9[15;9H[?12l[?25h[?25l p[24;67H3-10[15;10H[?12l[?25h[?25lpr[24;67H4-11[15;11H[?12l[?25h[?25lri[24;67H5-12[15;12H[?12l[?25h[?25lin[24;67H6-13[15;13H[?12l[?25h[?25lnt[24;67H7-14[15;14H[?12l[?25h[?25ltw[24;67H8-15[15;15H[?12l[?25h[?25lw([17;5H[97m[101m}[m[24;67H9-16[15;16H[?12l[?25h[?25l([31m"
2488      good = 0;
2489    }
2490
2491    // Read the number of good/bad packets
2492    readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[21;1HST_OFFSET, &good_pkts);
2493    readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts);[m[24;67H10-17[15;17H[?12l[?25h[?25l[31m"P[m[24;68H1-18[15;18H[?12l[?25h[?25l[31mPh[m[24;68H2-19[15;19H[?12l[?25h[?25l[31mhy[m[24;68H3-20[15;20H[?12l[?25h[?25l[31myG[m[24;68H4-21[15;21H[?12l[?25h[?25l[31mGe[m[24;68H5-22[15;22H[?12l[?25h[?25l[31met[m[24;68H6-23[15;23H[?12l[?25h[?25l[31mtR[m[24;68H7-24[15;24H[?12l[?25h[?25l[31mRe[m[24;68H8-25[15;25H[?12l[?25h[?25l[31mes[m[24;68H9-26[15;26H[?12l[?25h[?25l[31msu[m[24;67H20-27[15;27H[?12l[?25h[?25l[31mul[m[24;68H1-28[15;28H[?12l[?25h[?25l[31mlt[m[24;68H2-29[15;29H[?12l[?25h[24;1H[K[15;28H[?25l[24;63H144,21-28     93%[15;28H[?12l[?25h[?25l[24;65H3,8-15 [14;15H[?12l[?25h[?25l[24;65H2,28  [13;28H[?12l[?25h[?25l[24;65H1[11;28H[?12l[?25h[?25l[24;65H0[10;28H[?12l[?25h[?25l[24;64H39[9;28H[?12l[?25h[?25l[24;65H8[8;28H[?12l[?25h[?25l[24;65H7,0-1[7;1H[?12l[?25h[?25l[24;65H6,15 [6;15H[?12l[?25h[?25l[24;65H5,0-1[5;1H[?12l[?25h[?25l[24;65H4,8  [4;8H[?12l[?25h[?25l[24;65H3,0-1[3;1H[?12l[?25h[?25l[24;65H2,24 [2;24H[?12l[?25h[?25l[24;65H1,25[1;25H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m port_status;[23;1H[94m@                                                                               [m[24;63H[K[24;63H130,27[8C92%[1;27H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;2H [32munsigned[m [32mint[m val;[24;63H[K[24;63H129,19[8C92%[1;19H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[32mint[m phyGetResult([32mvoid[m) {[23;1H[94m@                                                                               [m[24;63H[K[24;63H128,24[8C92%[1;24H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m */[m[24;63H[K[24;63H127,3[9C91%[1;3H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m * Return -- boolean indicating success[m[24;63H[K[24;63H126,28[8C91%[1;28H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H[34m *[m[24;63H[K[24;63H125,2[9C90%[1;2H[?12l[?25h[?25l[24;65H6,28[2;28H[?12l[?25h[?25l[24;65H7,3 [3;3H[?12l[?25h[?25l[24;65H8,24[4;24H[?12l[?25h[?25l[24;65H9,19[5;19H[?12l[?25h[?25l[24;64H30,27[6;27H[?12l[?25h[?25l[24;65H1,25[7;25H[?12l[?25h[?25l[24;65H2,24[8;24H[?12l[?25h[?25l[24;65H3,0-1[9;1H[?12l[?25h[?25l[24;65H4,8  [10;8H[?12l[?25h[?25l[24;65H5,0-1[11;1H[?12l[?25h[?25l[24;65H6,15 [12;15H[?12l[?25h[?25l[24;65H7,0-1[13;1H[?12l[?25h[?25l[24;65H8,28 [14;28H[?12l[?25h[?25l[24;65H9[15;28H[?12l[?25h[?25l[24;64H40[16;28H[?12l[?25h[?25l[24;65H1[17;28H[?12l[?25h[?25l[24;65H2[19;28H[?12l[?25h[?25l[24;65H3,8-15[20;15H[?12l[?25h[?25l[24;65H4,21-28[21;28H[?12l[?25h[?25l[24;67H10-17[21;17H[?12l[?25h[?25l[31m"p[m[24;68H1-18[21;18H[?12l[?25h[?25l[24;67H21-2[21;28H[?12l[?25h[?25l
2494
2495
2496[1m-- INSERT --[m[24;63H[K[24;63H144,22-29     90%[21;29H[?12l[?25h[?25l[31mt:[m[24;68H3-30[21;30H[?12l[?25h[?25l[31m [m[24;68H4-31[21;31H[?12l[?25h[?25l[31m p[m[24;68H5-32[21;32H[?12l[?25h[?25l[31mpo[m[24;68H6-33[21;33H[?12l[?25h[?25l[31mor[m[24;68H7-34[21;34H[?12l[?25h[?25l[31mrt[m[24;68H8-35[21;35H[?12l[?25h[?25l[31m [m[24;68H9-36[21;36H[?12l[?25h[?25l[31m s[m[24;67H30-37[21;37H[?12l[?25h[?25l[31mst[m[24;68H1-38[21;38H[?12l[?25h[?25l[31mta[m[24;68H2-39[21;39H[?12l[?25h[?25l[31mat[m[24;68H3-40[21;40H[?12l[?25h[?25l[31mtu[m[24;68H4-41[21;41H[?12l[?25h[?25l[31mus[m[24;68H5-42[21;42H[?12l[?25h[?25l[31m [m[24;68H6-43[21;43H[?12l[?25h[?25l[31m b[m[24;68H7-44[21;44H[?12l[?25h[?25l[31mba[m[24;68H8-45[21;45H[?12l[?25h[?25l[31mad[m[24;68H9-46[21;46H[?12l[?25h[?25l[31md"[m
2497      good = [1C;
2498    [97m[101m}[m[24;67H40-47[21;47H[?12l[?25h[?25l[31m"[m)[23;5H}[21;15H[106m([31C)[m[24;68H1-48[21;48H[?12l[?25h[?25l[106m)[m;[21;15H([31C)[24;68H2-49[21;49H[?12l[?25h[24;1H[K[21;48H[?25l[24;63H144,41-48     90%[21;48H[?12l[?25h[?25l[24;65H5,15   [22;15H[?12l[?25h[?25l[19;37H[106m{[23;5H}[m[24;65H6,5 [23;5H[?12l[?25h[?25l[1;23r[23;1H
2499[1;24r[18;37H{[22;5H}[24;63H[K[24;63H147,0-1[7C91%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2500[1;24r[23;4H [34m// Read the number of good/bad packets[m[24;63H[K[24;63H148,42[8C91%[23;42H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INN[23;1HST_OFFSET, &good_pkts);[24;63H[K[24;63H149,48[8C92%[22;48H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INSS[23;1HT_OFFSET, &bad_pkts);[24;63H[K[24;63H150,48[8C93%[22;48H[?12l[?25h[?25l[1;23r[23;1H
2501[1;24r[24;63H[K[24;63H151,0-1[7C94%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2502[1;24r[23;4H [34m// Update the good flag[m[24;63H[K[24;63H152,27[8C94%[23;27H[?12l[?25h[?25l[1;23r[23;1H
2503[1;24r[23;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[24;63H[K[24;63H153,24[8C95%[23;24H[?12l[?25h[?25l[24;65H2,27[22;27H[?12l[?25h[?25l[24;65H3,24[23;24H[?12l[?25h[?25l[1;23r[23;1H
2504[1;24r[23;6H good = [31m0[m;[24;63H[K[24;63H154,15[8C96%[23;15H[?12l[?25h[?25l[24;65H3,24[22;24H[?12l[?25h[?25l[23;6H   printw([31m"phyGetResult: port status bad"[m);[24;65H4,2-9[8C5[23;9H[?12l[?25h[?25lprintw[106m([31C)[m[24;67H8-15[23;15H[?12l[?25h[?25l([31C)[24;67H10-17[23;17H[?12l[?25h[?25l[24;67H22-29[23;29H[?12l[?25h[?25l[24;68H4-31[23;31H[?12l[?25h[?25l[31m ort status bad"[m);[23;48H[K[23;31H[?12l[?25h[?25l[31m rt status bad"[m);[23;47H[K[23;31H[?12l[?25h[?25l[31m t status bad"[m);[23;46H[K[23;31H[?12l[?25h[?25l[31m  status bad"[m);[23;45H[K[23;31H[?12l[?25h[?25l[31m status bad"[m);[23;44H[K[23;31H[?12l[?25h[?25l[31m tatus bad"[m);[23;43H[K[23;31H[?12l[?25h[?25l[31m atus bad"[m);[23;42H[K[23;31H[?12l[?25h[?25l[31m tus bad"[m);[23;41H[K[23;31H[?12l[?25h[?25l[31m us bad"[m);[23;40H[K[23;31H[?12l[?25h[?25l[31m s bad"[m);[23;39H[K[23;31H[?12l[?25h[?25l[31m  bad"[m);[23;38H[K[23;31H[?12l[?25h[?25l[31m bad"[m);[23;37H[K[23;31H[?12l[?25h[?25l
2505[1m-- INSERT --[m[24;63H[K[24;63H154,24-31     95%[23;31H[?12l[?25h[?25l[31m fbad"[m);[24;68H5-32[23;32H[?12l[?25h[?25l[31mfobad"[m);[24;68H6-33[23;33H[?12l[?25h[?25l[31moubad"[m);[24;68H7-34[23;34H[?12l[?25h[?25l[31munbad"[m);[24;68H8-35[23;35H[?12l[?25h[?25l[31mndbad"[m);[24;68H9-36[23;36H[?12l[?25h[?25l[31md bad"[m);[24;67H30-37[23;37H[?12l[?25h[24;1H[K[23;36H[?25l[24;63H154,29-36     95%[23;36H[?12l[?25h[?25l[24;67H30-37[23;37H[?12l[?25h[?25l[24;68H1-38[23;38H[?12l[?25h[?25l[24;68H2-39[23;39H[?12l[?25h[?25l[24;68H3-40[23;40H[?12l[?25h[?25l
2506[1m-- INSERT --[m[24;63H[K[24;63H154,33-40     95%[23;40H[?12l[?25h[?25l[31md "[m);[24;68H4-41[23;41H[?12l[?25h[?25l[31m p"[m);[24;68H5-42[23;42H[?12l[?25h[?25l[31mpa"[m);[24;68H6-43[23;43H[?12l[?25h[?25l[31mac"[m);[24;68H7-44[23;44H[?12l[?25h[?25l[31mck"[m);[24;68H8-45[23;45H[?12l[?25h[?25l[31mke"[m);[24;68H9-46[23;46H[?12l[?25h[?25l[31met"[m);[24;67H40-47[23;47H[?12l[?25h[?25l[31mts"[m);[24;68H1-48[23;48H[?12l[?25h[24;1H[K[23;47H[?25l[24;63H154,40-47     95%[23;47H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hw[?25l[?12l[?25h [?25l"selftest_phy.c" 160L, 4050C written[26C154,40-47     95%[24;63H[K[24;63H154,40-47     95%[23;47H[?12l[?25h[?25l[1;23r[23;1H
2507[1;24r[23;6H good = [31m0[m;[24;1H[K[24;63H155,15[8C96%[23;15H[?12l[?25h[?25l[1;23r[23;1H
2508[1;24r[20;24H[106m{[m[23;4H [106m}[m[24;63H[K[24;63H156,5[9C97%[23;5H[?12l[?25h[?25l[1;23r[23;1H
2509[1;24r[2;35H[106m{[m[19;24H{[22;5H}
2510  [106m}[m[24;63H[K[24;63H157,3[9C97%[23;3H[?12l[?25h[?25l[1;23r[23;1H
2511[1;24r[1;35H{[22;3H}[24;63H[K[24;63H158,0-1[7C98%[23;1H[?12l[?25h[?25l[1;23r[23;1H
2512[1;24r[23;2H [38;5;130mreturn[m good;[24;63H[K[24;63H159,14[8C99%[23;14H[?12l[?25h[?25l[1;23r[23;1H
2513[1;24r[23;1H} [34m// phyGetResult[m[24;63H[K[24;63H160,17[8CBot[23;17H[?12l[?25h[?25l[24;64H59,14[22;14H[?12l[?25h[?25l[24;65H8,0-1[21;1H[?12l[?25h[?25l[24;65H7,3  [20;3H[?12l[?25h[?25l[16;24H[106m{[19;5H}[m[24;65H6,5[19;5H[?12l[?25h[?25l[16;24H{[19;5H}[24;65H5,15[18;15H[?12l[?25h[?25l[24;65H4,40-47[17;47H[?12l[?25h[?25l[16;24H[106m{[19;5H}[m[24;65H3,24   [16;24H[?12l[?25h[?25l{[19;5H}[24;65H2,27[15;27H[?12l[?25h[?25l[16;24H[106m{[19;5H}[m[24;65H3,24[16;24H[?12l[?25h[?25l{[19;5H}[24;65H4,40-47[17;47H[?12l[?25h[?25l[24;65H5,15   [18;15H[?12l[?25h[?25l[16;24H[106m{[19;5H}[m[24;65H6,5 [19;5H[?12l[?25h[?25l[16;24H{[19;5H}[24;65H7,3[20;3H[?12l[?25h[?25l[24;63H[K[24;1H:[?12l[?25hw[?25l[?12l[?25hq[?25l[?12l[?25h [?25l"selftest_phy.c" 160L, 4050C written [?1l>[?12l[?25h[?1049l
2514]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# make
2515/bin/nf_register_gen.pl --project selftest
2516make: /bin/nf_register_gen.pl: Command not found
2517make: *** [registers] Error 127
2518]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# ls -l
2519total 328
2520-rwxr-xr-x 1 netfpga netfpga 26966 2011-03-09 19:22 [0m[01;32mbad_pkt_dump[0m
2521-rw-r--r-- 1 netfpga netfpga  2386 2011-03-09 18:24 bad_pkt_dump.c
2522-rw-r--r-- 1 netfpga netfpga  4296 2011-03-09 19:22 bad_pkt_dump.o
2523-rw-r--r-- 1 netfpga netfpga   903 2011-03-09 18:24 Makefile
2524-rw-r--r-- 1 netfpga netfpga  3212 2011-03-09 18:24 or_data_types.h
2525-rw-r--r-- 1 netfpga netfpga   731 2011-03-09 18:24 or_ip.c
2526-rw-r--r-- 1 netfpga netfpga   129 2011-03-09 18:24 or_ip.h
2527-rw-r--r-- 1 netfpga netfpga  3464 2011-03-09 19:22 or_ip.o
2528-rw-r--r-- 1 netfpga netfpga   872 2011-03-09 18:24 or_utils.c
2529-rw-r--r-- 1 netfpga netfpga   292 2011-03-09 18:24 or_utils.h
2530-rw-r--r-- 1 netfpga netfpga  4108 2011-03-09 19:22 or_utils.o
2531-rwxr-xr-x 1 netfpga netfpga 67122 2011-03-09 19:22 [01;32mselftest[0m
2532-rw-r--r-- 1 netfpga netfpga 10370 2011-03-09 18:24 selftest.c
2533-rw-r--r-- 1 netfpga netfpga  3581 2011-03-09 18:24 selftest_clk.c
2534-rw-r--r-- 1 netfpga netfpga   516 2011-03-09 18:24 selftest_clk.h
2535-rw-r--r-- 1 netfpga netfpga  5740 2011-03-09 19:22 selftest_clk.o
2536-rw-r--r-- 1 netfpga netfpga  6094 2011-03-09 18:24 selftest_dma.c
2537-rw-r--r-- 1 netfpga netfpga   644 2011-03-09 18:24 selftest_dma.h
2538-rw-r--r-- 1 netfpga netfpga 11516 2011-03-09 19:22 selftest_dma.o
2539-rw-r--r-- 1 netfpga netfpga  2660 2011-03-09 18:24 selftest_dram.c
2540-rw-r--r-- 1 netfpga netfpga   554 2011-03-09 18:24 selftest_dram.h
2541-rw-r--r-- 1 netfpga netfpga  4844 2011-03-09 19:22 selftest_dram.o
2542-rw-r--r-- 1 netfpga netfpga   859 2011-03-09 18:24 selftest.h
2543-rw-r--r-- 1 netfpga netfpga  4628 2011-03-09 18:24 selftest_mdio.c
2544-rw-r--r-- 1 netfpga netfpga   526 2011-03-09 18:24 selftest_mdio.h
2545-rw-r--r-- 1 netfpga netfpga  7932 2011-03-09 19:22 selftest_mdio.o
2546-rw-r--r-- 1 netfpga netfpga 17076 2011-03-09 19:22 selftest.o
2547-rw-r--r-- 1 netfpga netfpga  4050 2011-03-10 15:13 selftest_phy.c
2548-rw-r--r-- 1 netfpga netfpga   487 2011-03-09 18:24 selftest_phy.h
2549-rw-r--r-- 1 netfpga netfpga  6612 2011-03-09 19:22 selftest_phy.o
2550-rw-r--r-- 1 netfpga netfpga  1933 2011-03-09 18:24 selftest_reg.c
2551-rw-r--r-- 1 netfpga netfpga   520 2011-03-09 18:24 selftest_reg.h
2552-rw-r--r-- 1 netfpga netfpga  4100 2011-03-09 19:22 selftest_reg.o
2553-rw-r--r-- 1 netfpga netfpga  5986 2011-03-09 18:24 selftest_serial.c
2554-rw-r--r-- 1 netfpga netfpga   512 2011-03-09 18:24 selftest_serial.h
2555-rw-r--r-- 1 netfpga netfpga  6608 2011-03-09 19:22 selftest_serial.o
2556-rw-r--r-- 1 netfpga netfpga  3258 2011-03-09 18:24 selftest_sram.c
2557-rw-r--r-- 1 netfpga netfpga   564 2011-03-09 18:24 selftest_sram.h
2558-rw-r--r-- 1 netfpga netfpga  4976 2011-03-09 19:22 selftest_sram.o
2559[m]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# [K]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# ./bad_pkt_dump
2560Found net device: nf2c0
2561Expected data:
256200000000: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
256300000010: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
256400000020: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
256500000030: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
256600000040: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
256700000050: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
256800000060: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
256900000070: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
257000000080: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
257100000090: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2572000000a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2573000000b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2574000000c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2575000000d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2576000000e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2577000000f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
257800000100: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
257900000110: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258000000120: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258100000130: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258200000140: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258300000150: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258400000160: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258500000170: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258600000180: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
258700000190: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2588000001a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2589000001b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2590000001c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2591000001d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2592000001e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2593000001f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
259400000200: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
259500000210: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
259600000220: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
259700000230: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
259800000240: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
259900000250: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
260000000260: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
260100000270: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
260200000280: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
260300000290: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2604000002a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2605000002b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2606000002c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2607000002d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2608000002e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2609000002f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261000000300: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261100000310: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261200000320: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261300000330: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261400000340: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261500000350: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261600000360: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261700000370: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261800000380: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
261900000390: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2620000003a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2621000003b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2622000003c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2623000003d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2624000003e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2625000003f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
262600000400: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
262700000410: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
262800000420: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
262900000430: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
263000000440: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
263100000450: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
263200000460: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
263300000470: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
263400000480: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
263500000490: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2636000004a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2637000004b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2638000004c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2639000004d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2640000004e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2641000004f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264200000500: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264300000510: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264400000520: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264500000530: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264600000540: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264700000550: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264800000560: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
264900000570: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
265000000580: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
265100000590: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2652000005a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2653000005b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2654000005c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2655000005d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2656000005e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00
2657
2658Received data:
265900000000: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266000000010: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266100000020: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266200000030: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266300000040: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266400000050: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266500000060: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266600000070: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266700000080: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
266800000090: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2669000000a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2670000000b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2671000000c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2672000000d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2673000000e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2674000000f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
267500000100: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
267600000110: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
267700000120: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
267800000130: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
267900000140: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
268000000150: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
268100000160: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
268200000170: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
268300000180: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
268400000190: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2685000001a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2686000001b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2687000001c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2688000001d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2689000001e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2690000001f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269100000200: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269200000210: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269300000220: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269400000230: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269500000240: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269600000250: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269700000260: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269800000270: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
269900000280: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
270000000290: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2701000002a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2702000002b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2703000002c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2704000002d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2705000002e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2706000002f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
270700000300: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
270800000310: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
270900000320: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
271000000330: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
271100000340: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
271200000350: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
271300000360: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
271400000370: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
271500000380: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
271600000390: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2717000003a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2718000003b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2719000003c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2720000003d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2721000003e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2722000003f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
272300000400: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
272400000410: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
272500000420: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
272600000430: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
272700000440: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
272800000450: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
272900000460: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
273000000470: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
273100000480: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
273200000490: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2733000004a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2734000004b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2735000004c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2736000004d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2737000004e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2738000004f0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
273900000500: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274000000510: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274100000520: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274200000530: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274300000540: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274400000550: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274500000560: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274600000570: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274700000580: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
274800000590: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2749000005a0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2750000005b0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2751000005c0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2752000005d0: 00 ca fe 00 00 ca fe 00 00 ca fe 00 00 ca fe 00
2753000005e0: 00 ca fe 00 00 ca fe 00 00 ca fe 00
2754
2755]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# ls
2756[0m[01;32mbad_pkt_dump[0m     or_ip.c     or_utils.o      selftest_clk.o   selftest_dram.h  selftest_mdio.o  selftest_reg.c     selftest_serial.o
2757bad_pkt_dump.c   or_ip.h     [01;32mselftest[0m        selftest_dma.c   selftest_dram.o  selftest.o       selftest_reg.h     selftest_sram.c
2758bad_pkt_dump.o   or_ip.o     selftest.c      selftest_dma.h   selftest.h       selftest_phy.c   selftest_reg.o     selftest_sram.h
2759Makefile         or_utils.c  selftest_clk.c  selftest_dma.o   selftest_mdio.c  selftest_phy.h   selftest_serial.c  selftest_sram.o
2760or_data_types.h  or_utils.h  selftest_clk.h  selftest_dram.c  selftest_mdio.h  selftest_phy.o   selftest_serial.h
2761[m]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# cd [K[K[Kexit
2762exit
2763]0;netfpga@node1-1: ~netfpga@node1-1:~$ ls
2764[0m[01;34mnetfpga[0m  [01;34mpkgs[0m
2765[m]0;netfpga@node1-1: ~netfpga@node1-1:~$ cd netfpga/
2766]0;netfpga@node1-1: ~/netfpganetfpga@node1-1:~/netfpga$ ls
2767bashrc_addon  [0m[01;34mbin[0m  [01;34mbitfiles[0m  CHANGES  [01;34mdoc[0m  [01;34mlib[0m  LICENSE  Makefile  [01;34mprojects[0m  README
2768[m]0;netfpga@node1-1: ~/netfpganetfpga@node1-1:~/netfpga$ make[K[K[K[Kcd [K[K[Kmake
2769echo /home/netfpga/netfpga/lib/Perl5:
2770/home/netfpga/netfpga/lib/Perl5:
2771if [ -f "lib/Makefile" ] ; then \
2772                make -C lib ; \
2773        fi
2774make[1]: Entering directory `/home/netfpga/netfpga/lib'
2775make -C C
2776make[2]: Entering directory `/home/netfpga/netfpga/lib/C'
2777make -C kernel
2778make[3]: Entering directory `/home/netfpga/netfpga/lib/C/kernel'
2779make -C /lib/modules/2.6.31-19-generic/build M=/home/netfpga/netfpga/lib/C/kernel LDDINC=/home/netfpga/netfpga/lib/C/kernel/../include modules
2780make[4]: Entering directory `/usr/src/linux-headers-2.6.31-19-generic'
2781  Building modules, stage 2.
2782  MODPOST 1 modules
2783make[4]: Leaving directory `/usr/src/linux-headers-2.6.31-19-generic'
2784make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/kernel'
2785make -C download
2786make[3]: Entering directory `/home/netfpga/netfpga/lib/C/download'
2787make -C ../common
2788make[4]: Entering directory `/home/netfpga/netfpga/lib/C/common'
2789make[4]: Nothing to be done for `all'.
2790make[4]: Leaving directory `/home/netfpga/netfpga/lib/C/common'
2791make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/download'
2792make -C reg_access
2793make[3]: Entering directory `/home/netfpga/netfpga/lib/C/reg_access'
2794make -C ../common
2795make[4]: Entering directory `/home/netfpga/netfpga/lib/C/common'
2796make[4]: Nothing to be done for `all'.
2797make[4]: Leaving directory `/home/netfpga/netfpga/lib/C/common'
2798make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/reg_access'
2799make -C tools
2800make[3]: Entering directory `/home/netfpga/netfpga/lib/C/tools'
2801make -C nf_info
2802make[4]: Entering directory `/home/netfpga/netfpga/lib/C/tools/nf_info'
2803make -C ../../common
2804make[5]: Entering directory `/home/netfpga/netfpga/lib/C/common'
2805make[5]: Nothing to be done for `all'.
2806make[5]: Leaving directory `/home/netfpga/netfpga/lib/C/common'
2807make[4]: Leaving directory `/home/netfpga/netfpga/lib/C/tools/nf_info'
2808make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/tools'
2809make[2]: Leaving directory `/home/netfpga/netfpga/lib/C'
2810make -C scripts
2811make[2]: Entering directory `/home/netfpga/netfpga/lib/scripts'
2812make -C cpci_reprogram
2813make[3]: Entering directory `/home/netfpga/netfpga/lib/scripts/cpci_reprogram'
2814make[3]: Nothing to be done for `all'.
2815make[3]: Leaving directory `/home/netfpga/netfpga/lib/scripts/cpci_reprogram'
2816make -C cpci_config_reg_access
2817make[3]: Entering directory `/home/netfpga/netfpga/lib/scripts/cpci_config_reg_access'
2818make[3]: Nothing to be done for `all'.
2819make[3]: Leaving directory `/home/netfpga/netfpga/lib/scripts/cpci_config_reg_access'
2820make[2]: Leaving directory `/home/netfpga/netfpga/lib/scripts'
2821make[1]: Leaving directory `/home/netfpga/netfpga/lib'
2822echo /home/netfpga/netfpga/lib/Perl5:
2823/home/netfpga/netfpga/lib/Perl5:
2824if [ -f "bitfiles/Makefile" ] ; then \
2825                make -C bitfiles ; \
2826        fi
2827make[1]: Entering directory `/home/netfpga/netfpga/bitfiles'
2828make[1]: Nothing to be done for `all'.
2829make[1]: Leaving directory `/home/netfpga/netfpga/bitfiles'
2830echo /home/netfpga/netfpga/lib/Perl5:
2831/home/netfpga/netfpga/lib/Perl5:
2832if [ -f "projects/Makefile" ] ; then \
2833                make -C projects ; \
2834        fi
2835make[1]: Entering directory `/home/netfpga/netfpga/projects'
2836make -C reference_nic
2837make[2]: Entering directory `/home/netfpga/netfpga/projects/reference_nic'
2838make -C sw
2839make[3]: Entering directory `/home/netfpga/netfpga/projects/reference_nic/sw'
2840/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_nic
2841
2842NetFPGA environment:
2843  Root dir:       /home/netfpga/netfpga
2844  Project name:   reference_nic
2845  Project dir:    /home/netfpga/netfpga/projects/reference_nic
2846  Work dir:       /tmp/netfpga
2847
2848Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
2849Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
2850Processing /home/netfpga/netfpga/projects/reference_nic/include/project.xml...
2851
2852Project: 'Reference NIC' (reference_nic)
2853Description: Reference NIC
2854Version: 1.1.0
2855Device ID: 1
2856
2857Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
2858Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
2859WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
2860Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
2861WARNING: No module specific XML found for module 'core/nf2/generic_top'
2862WARNING: No module specific XML found for module 'core/nf2/reference_core'
2863WARNING: No module specific XML found for module 'core/output_port_lookup/nic'
2864Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
2865WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
2866WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
2867Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
2868WARNING: No module specific XML found for module 'core/cpci_bus'
2869Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
2870WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
2871WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
2872Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
2873Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
2874WARNING: No module specific XML found for module 'core/utils/generic_regs'
2875make[3]: Leaving directory `/home/netfpga/netfpga/projects/reference_nic/sw'
2876make[2]: Leaving directory `/home/netfpga/netfpga/projects/reference_nic'
2877make -C reference_router
2878make[2]: Entering directory `/home/netfpga/netfpga/projects/reference_router'
2879make -C sw
2880make[3]: Entering directory `/home/netfpga/netfpga/projects/reference_router/sw'
2881/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_router
2882
2883NetFPGA environment:
2884  Root dir:       /home/netfpga/netfpga
2885  Project name:   reference_router
2886  Project dir:    /home/netfpga/netfpga/projects/reference_router
2887  Work dir:       /tmp/netfpga
2888
2889Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
2890Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
2891Processing /home/netfpga/netfpga/projects/reference_router/include/project.xml...
2892
2893Project: 'Reference router' (reference_router)
2894Description: Reference IPv4 router
2895Version: 1.0.0
2896Device ID: 2
2897
2898Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
2899Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
2900WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
2901Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
2902WARNING: No module specific XML found for module 'core/nf2/generic_top'
2903WARNING: No module specific XML found for module 'core/nf2/reference_core'
2904Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/cam_router/xml/cam_router.xml...
2905Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
2906WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
2907WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
2908Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
2909WARNING: No module specific XML found for module 'core/cpci_bus'
2910Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
2911WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
2912WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
2913Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
2914Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
2915WARNING: No module specific XML found for module 'core/utils/generic_regs'
2916make[3]: Leaving directory `/home/netfpga/netfpga/projects/reference_router/sw'
2917make[2]: Leaving directory `/home/netfpga/netfpga/projects/reference_router'
2918make -C reference_switch
2919make[2]: Entering directory `/home/netfpga/netfpga/projects/reference_switch'
2920make -C sw
2921make[3]: Entering directory `/home/netfpga/netfpga/projects/reference_switch/sw'
2922/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_switch
2923
2924NetFPGA environment:
2925  Root dir:       /home/netfpga/netfpga
2926  Project name:   reference_switch
2927  Project dir:    /home/netfpga/netfpga/projects/reference_switch
2928  Work dir:       /tmp/netfpga
2929
2930Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
2931Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
2932Processing /home/netfpga/netfpga/projects/reference_switch/include/project.xml...
2933
2934Project: 'Reference Switch' (reference_switch)
2935Description: Reference Switch
2936Version: 1.0.0
2937Device ID: 3
2938
2939Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
2940Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
2941WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
2942Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
2943WARNING: No module specific XML found for module 'core/nf2/generic_top'
2944WARNING: No module specific XML found for module 'core/nf2/reference_core'
2945Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/learning_cam_switch/xml/learning_cam_switch.xml...
2946Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
2947WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
2948WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
2949WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
2950Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
2951WARNING: No module specific XML found for module 'core/cpci_bus'
2952Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
2953WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
2954Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
2955Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
2956make[3]: Leaving directory `/home/netfpga/netfpga/projects/reference_switch/sw'
2957make[2]: Leaving directory `/home/netfpga/netfpga/projects/reference_switch'
2958make -C router_buffer_sizing
2959make[2]: Entering directory `/home/netfpga/netfpga/projects/router_buffer_sizing'
2960make -C sw
2961make[3]: Entering directory `/home/netfpga/netfpga/projects/router_buffer_sizing/sw'
2962make[3]: Nothing to be done for `all'.
2963make[3]: Leaving directory `/home/netfpga/netfpga/projects/router_buffer_sizing/sw'
2964make[2]: Leaving directory `/home/netfpga/netfpga/projects/router_buffer_sizing'
2965make -C router_kit
2966make[2]: Entering directory `/home/netfpga/netfpga/projects/router_kit'
2967make -C sw
2968make[3]: Entering directory `/home/netfpga/netfpga/projects/router_kit/sw'
2969/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_router
2970
2971NetFPGA environment:
2972  Root dir:       /home/netfpga/netfpga
2973  Project name:   reference_router
2974  Project dir:    /home/netfpga/netfpga/projects/reference_router
2975  Work dir:       /tmp/netfpga
2976
2977Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
2978Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
2979Processing /home/netfpga/netfpga/projects/reference_router/include/project.xml...
2980
2981Project: 'Reference router' (reference_router)
2982Description: Reference IPv4 router
2983Version: 1.0.0
2984Device ID: 2
2985
2986Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
2987Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
2988WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
2989Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
2990WARNING: No module specific XML found for module 'core/nf2/generic_top'
2991WARNING: No module specific XML found for module 'core/nf2/reference_core'
2992Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/cam_router/xml/cam_router.xml...
2993Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
2994WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
2995WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
2996Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
2997WARNING: No module specific XML found for module 'core/cpci_bus'
2998Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
2999WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
3000WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
3001Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
3002Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3003WARNING: No module specific XML found for module 'core/utils/generic_regs'
3004ln -f -s ../../reference_router/lib/C/reg_defines_reference_router.h reg_defines.h
3005make[3]: Leaving directory `/home/netfpga/netfpga/projects/router_kit/sw'
3006make[2]: Leaving directory `/home/netfpga/netfpga/projects/router_kit'
3007make -C scone
3008make[2]: Entering directory `/home/netfpga/netfpga/projects/scone'
3009make -C sw
3010make[3]: Entering directory `/home/netfpga/netfpga/projects/scone/sw'
3011/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_router
3012
3013NetFPGA environment:
3014  Root dir:       /home/netfpga/netfpga
3015  Project name:   reference_router
3016  Project dir:    /home/netfpga/netfpga/projects/reference_router
3017  Work dir:       /tmp/netfpga
3018
3019Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3020Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3021Processing /home/netfpga/netfpga/projects/reference_router/include/project.xml...
3022
3023Project: 'Reference router' (reference_router)
3024Description: Reference IPv4 router
3025Version: 1.0.0
3026Device ID: 2
3027
3028Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
3029Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
3030WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
3031Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
3032WARNING: No module specific XML found for module 'core/nf2/generic_top'
3033WARNING: No module specific XML found for module 'core/nf2/reference_core'
3034Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/cam_router/xml/cam_router.xml...
3035Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
3036WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
3037WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
3038Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3039WARNING: No module specific XML found for module 'core/cpci_bus'
3040Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3041WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
3042WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
3043Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
3044Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3045WARNING: No module specific XML found for module 'core/utils/generic_regs'
3046ln -f -s /home/netfpga/netfpga/projects/reference_router/lib/C/reg_defines_reference_router.h reg_defines.h
3047make[3]: Leaving directory `/home/netfpga/netfpga/projects/scone/sw'
3048make[2]: Leaving directory `/home/netfpga/netfpga/projects/scone'
3049make -C selftest
3050make[2]: Entering directory `/home/netfpga/netfpga/projects/selftest'
3051make -C sw
3052make[3]: Entering directory `/home/netfpga/netfpga/projects/selftest/sw'
3053/home/netfpga/netfpga/bin/nf_register_gen.pl --project selftest
3054
3055NetFPGA environment:
3056  Root dir:       /home/netfpga/netfpga
3057  Project name:   selftest
3058  Project dir:    /home/netfpga/netfpga/projects/selftest
3059  Work dir:       /tmp/netfpga
3060
3061Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3062Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3063Processing /home/netfpga/netfpga/projects/selftest/include/project.xml...
3064
3065Project: 'Selftest' (selftest)
3066Description: NetFPGA selftest -- exercises all major subsystems of the board
3067Version: 1.1.0
3068Device ID: 5
3069
3070WARNING: No module specific XML found for module 'core/nf2/reference_core'
3071Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3072WARNING: No module specific XML found for module 'core/cpci_bus'
3073Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3074WARNING: No module specific XML found for module 'core/ddr2_controller'
3075Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3076Processing /home/netfpga/netfpga/projects/selftest/include/clock_test.xml...
3077Processing /home/netfpga/netfpga/projects/selftest/include/dram_test.xml...
3078Processing /home/netfpga/netfpga/projects/selftest/include/phy_test.xml...
3079Processing /home/netfpga/netfpga/projects/selftest/include/reg_file.xml...
3080Processing /home/netfpga/netfpga/projects/selftest/include/reg_reflect.xml...
3081Processing /home/netfpga/netfpga/projects/selftest/include/serial_test.xml...
3082Processing /home/netfpga/netfpga/projects/selftest/include/sram_msb.xml...
3083Processing /home/netfpga/netfpga/projects/selftest/include/sram_test.xml...
3084/home/netfpga/netfpga/bin/nf_register_gen.pl --project cpci
3085
3086NetFPGA environment:
3087  Root dir:       /home/netfpga/netfpga
3088  Project name:   cpci
3089  Project dir:    /home/netfpga/netfpga/projects/cpci
3090  Work dir:       /tmp/netfpga
3091
3092Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3093Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3094Processing /home/netfpga/netfpga/projects/cpci/include/project.xml...
3095
3096Project: 'CPCI' (cpci)
3097Description: NetFPGA PCI interface
3098Version: 4.1.0
3099Device ID: 0
3100
3101Processing /home/netfpga/netfpga/projects/cpci/include/cpci_regs.xml...
3102gcc -g   -c -o selftest_phy.o selftest_phy.c
3103gcc -lncurses  selftest.o selftest_dram.o selftest_sram.o selftest_serial.o selftest_phy.o selftest_mdio.o selftest_reg.o selftest_clk.o selftest_dma.o or_ip.o or_utils.o /home/netfpga/netfpga/lib/C/common/nf2util.o /home/netfpga/netfpga/lib/C/common/nf2util_proxy_common.o   -o selftest
3104make[3]: Leaving directory `/home/netfpga/netfpga/projects/selftest/sw'
3105make[2]: Leaving directory `/home/netfpga/netfpga/projects/selftest'
3106make[1]: Leaving directory `/home/netfpga/netfpga/projects'
3107]0;netfpga@node1-1: ~/netfpganetfpga@node1-1:~/netfpga$ sudo bash
3108]0;root@node1-1: ~/netfpgaroot@node1-1:~/netfpga# exit[2Pls./bad_pkt_dump [10Pls -l[1Pmakevi selftest_phy.c [5P./selftest -nvi selftest_phy.c .c[Kgrep PHY * | morels[Kvi selftest_phy.c ls[Kcd netfpga/projects/selftest/sw/ [C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[Cls[Kess netfpga/projects/selftest/sw/selftest [C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[1Pnetfpga/projects/selftest/sw/selftest -n [C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[Cless netfpga/projects/selftest/sw/selftest [C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[1Pnetfpga/projects/selftest/sw/selftest -n [K[K[K[K[K[K[K[K[K[K[K[K[C[C[C[C[C[C[C[C[1Pprojects/selftest/sw/[1Pprojects/selftest/sw/[1Pprojects/selftest/sw/[1Projects/selftest/sw/[1Pprojects/selftest/sw/[1Pprojects/selftest/sw/[1Pprojects/selftest/sw/[1Pprojects/selftest/sw/cprojects/selftest/sw/dprojects/selftest/sw/ projects/selftest/sw/
3109]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# ./selftest -n
3110Found net device: nf2c0
3111CPCI Information
3112----------------
3113Version: 4 (rev 1)
3114
3115Device (Virtex) Information
3116---------------------------
3117Project directory: selftest
3118Project name: Selftest
3119Project description: NetFPGA selftest -- exercises all major subsystems of the board
3120
3121Device ID: 5
3122Version: 1.1.0
3123Built against CPCI version: 4 (rev 1)
3124
3125NetFPGA selftest 1.00 alpha
3126Running.....Segmentation fault
3127]0;root@node1-1: ~/netfpga/projects/selftest/swroot@node1-1:~/netfpga/projects/selftest/sw# exit
3128exit
3129]0;netfpga@node1-1: ~/netfpganetfpga@node1-1:~/netfpga$ sudo bash[Kcd -[Kprij[K[Kp[Kojects/selftest/
3130include/ lib/     src/     sw/      synth/   verif/   
3131]0;netfpga@node1-1: ~/netfpganetfpga@node1-1:~/netfpga$ cd projects/selftest/src/[K[K[K[Ksr[K[Ksw/
3132]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ ls
3133[0m[01;32mbad_pkt_dump[0m     or_ip.c     or_utils.o      selftest_clk.o   selftest_dram.h  selftest_mdio.o  selftest_reg.c     selftest_serial.o
3134bad_pkt_dump.c   or_ip.h     [01;32mselftest[0m        selftest_dma.c   selftest_dram.o  selftest.o       selftest_reg.h     selftest_sram.c
3135bad_pkt_dump.o   or_ip.o     selftest.c      selftest_dma.h   selftest.h       selftest_phy.c   selftest_reg.o     selftest_sram.h
3136Makefile         or_utils.c  selftest_clk.c  selftest_dma.o   selftest_mdio.c  selftest_phy.h   selftest_serial.c  selftest_sram.o
3137or_data_types.h  or_utils.h  selftest_clk.h  selftest_dram.c  selftest_mdio.h  selftest_phy.o   selftest_serial.h
3138[m]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ vi selftest.[K-[K_phy.c
3139[?1049h[?1h=[1;44r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[44;1H"selftest_phy.c" 160L, 4050C[>c[1;1H[34m/* ****************************************************************************
3140 * vim:set shiftwidth=2 softtabstop=2 expandtab:
3141 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
3142 *
3143 * Module: selftest_phy.c
3144 * Project: NetFPGA selftest
3145 * Description: SATA selftest module
3146 *
3147 * Change history:
3148 *
3149 */[m
3150
3151[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
3152[35m#include [m[31m"selftest.h"[m
3153[35m#include [m[31m"selftest_phy.h"[m
3154[35m#include [m[31m<curses.h>[m
3155[35m#include [m[31m<time.h>[m
3156
3157[35m#define NUM_PORTS [m[31m4[m
3158
3159[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
3160[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];
3161
3162[34m/*
3163 * Reset the interface and configure it for continuous operation
3164 */[m
3165[32mvoid[m phyResetContinuous([32mvoid[m) {
3166  [32mint[m i;
3167
3168  [33mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
3169    prev_good_pkts[i] = [31m0[m;
3170    prev_bad_pkts[i] = [31m0[m;
3171  }
3172
3173  [34m// Stop the test (and wait for the test to stop)[m
3174  writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);
3175  sleep([31m1[m);
3176
3177  writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);
3178
3179  [34m// Start the test[m
3180  writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);
3181} [34m// phyResetContinuous[m[44;142H1,1[11CTop[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m/* ****************************************************************************
3182 * vim:set shiftwidth=2 softtabstop=2 expandtab:
3183 * $Id: selftest_phy.c 5971 2010-03-06 06:44:56Z grg $
3184 *
3185 * Module: selftest_phy.c
3186 * Project: NetFPGA selftest
3187 * Description: SATA selftest module
3188 *
3189 * Change history:
3190 *
3191 */[m
3192
3193[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
3194[35m#include [m[31m"selftest.h"[m
3195[35m#include [m[31m"selftest_phy.h"[m
3196[35m#include [m[31m<curses.h>[m
3197[35m#include [m[31m<time.h>[m
3198
3199[35m#define NUM_PORTS [m[31m4[m
3200
3201[32mstatic[m [32mint[m prev_good_pkts[NUM_PORTS];
3202[32mstatic[m [32mint[m prev_bad_pkts[NUM_PORTS];
3203
3204[34m/*
3205 * Reset the interface and configure it for continuous operation
3206 */[m
3207[32mvoid[m phyResetContinuous([32mvoid[m) {
3208  [32mint[m i;
3209
3210  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
3211    prev_good_pkts[i] = [31m0[m;
3212    prev_bad_pkts[i] = [31m0[m;
3213  }
3214
3215  [34m// Stop the test (and wait for the test to stop)[m
3216  writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x0[m);
3217  sleep([31m1[m);
3218
3219  writeReg(&nf2, PHY_TEST_PATTERN_REG, PHY_TEST_PATTERN_ENABLE_MASK);
3220
3221  [34m// Start the test[m
3222  writeReg(&nf2, PHY_TEST_CTRL_REG, PHY_TEST_CTRL_REPEAT);
3223} [34m// phyResetContinuous[m[44;142H1,1[11CTop "selftest_phy.c" 160L, 4050C[44;142H[K[44;142H1,1[11CTop[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[44;1H[K[44;1H/[?12l[?25hK[?25l[?12l[?25hi[?25l[?12l[?25hr[?25l[?12l[?25ha[?25l[?12l[?25hn[?25l[?12l[?25h [?25l[27m[m[H[2J[1;1H[32mvoid[m phyStopContinuous([32mvoid[m) {
3224  [34m// Stop the test (and wait for the test to stop)[m
3225  writeReg(&nf2, PHY_TEST_CTRL_REG, [31m0x00000000[m);
3226} [34m// phyStopContinuous
3227
3228/*
3229 * Get the result of the test
3230 *
3231 * Return -- boolean indicating success
3232 */[m
3233[32mint[m phyGetResult([32mvoid[m) {
3234  [32munsigned[m [32mint[m val;
3235  [32munsigned[m [32mint[m port_status;
3236  [32munsigned[m [32mint[m good_pkts;
3237  [32munsigned[m [32mint[m bad_pkts;
3238
3239  [32mint[m i;
3240
3241  [32mint[m good = [31m1[m;
3242
3243  [34m// Read the individual port registers[m
3244  [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {
3245    [34m// Start with the status register[m
3246    readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFSET, &port_status);
3247    [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {[26;8H [34m//Kiran[m[27;8H printw([31m"phyGetResult: port status bad"[m);[28;6H good = [31m0[m;
3248    }[31;4H [34m// Read the number of good/bad packets[m
3249    readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INST_OFFSET, &good_pkts);
3250    readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INST_OFFSET, &bad_pkts);[35;4H [34m// Update the good flag[m
3251    [38;5;130mif[m (bad_pkts != [31m0[m) {[37;8H printw([31m"phyGetResult: found bad packets"[m);[38;6H good = [31m0[m;
3252    }
3253  }
3254
3255  [38;5;130mreturn[m good;
3256} [34m// phyGetResult[m[44;142H143,4-11      Bot[26;11H[?12l[?25h[?25l[44;144H2,11  [25;11H[?12l[?25h[?25l[44;144H1[24;11H[?12l[?25h[?25l[44;144H0[23;11H[?12l[?25h[?25l[44;143H39[22;11H[?12l[?25h[?25l[44;144H8[21;11H[?12l[?25h[?25l[44;144H7,0-1[20;1H[?12l[?25h[?25l[44;144H6,11 [19;11H[?12l[?25h[?25l[44;144H5,0-1[18;1H[?12l[?25h[?25l[44;144H4,8  [17;8H[?12l[?25h[?25l[44;144H3,0-1[16;1H[?12l[?25h[?25l[44;144H2,11 [15;11H[?12l[?25h[?25l[44;144H1[14;11H[?12l[?25h[?25l[44;144H0[13;11H[?12l[?25h[?25l[44;143H29[12;11H[?12l[?25h[?25l[44;144H8[11;11H[?12l[?25h[?25l[44;144H7,3 [10;3H[?12l[?25h[?25l[44;144H6,11[9;11H[?12l[?25h[?25l[44;144H5,2 [8;2H[?12l[?25h[?25l[44;144H4,11[7;11H[?12l[?25h[?25l[44;144H3,2 [6;2H[?12l[?25h[?25l[44;144H2,0-1[5;1H[?12l[?25h[?25l[44;144H1,11 [4;11H[?12l[?25h[?25l[3;11H[106m([35C)[m[44;144H0[3;11H[?12l[?25h[?25l([35C)[44;143H19[2;11H[?12l[?25h[?25l[44;144H8[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m */[m[44;142H[K[44;142H117,3[9C99%[1;3H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m * Stop the interface[m[44;142H[K[44;142H116,11[8C98%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m/*[m[44;142H[K[44;142H115,2[9C97%[1;2H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H114,0-1[7C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H} [34m// phyShowStatusContinuous[m[44;142H[K[44;142H113,11[8C95%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H [38;5;130mreturn[m good;[44;142H[K[44;142H112,11[8C94%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H111,0-1[7C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H move(y + [31m1[m + NUM_PORTS, x);[44;142H[K[44;142H110,11[8C93%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H printw([31m"PHY test: [m[35m%s[m[31m"[m, good ? [31m"pass"[m : [31m"fail"[m);[44;142H[K[44;142H109,11[8C92%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H move(y, x);[44;142H[K[44;142H108,11[8C91%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H [34m// Print overall success/failure[m[44;142H[K[44;142H107,11[8C90%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H106,0-1[7C89%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H }[44;142H[K[44;142H105,3[9C88%[1;3H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;6H good = [31m0[m;[44;142H[K[44;142H104,11[8C88%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;4H [38;5;130mif[m (bad_pkts != [31m0[m)[44;142H[K[44;142H103,11[8C87%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;4H [34m// Update the good flag[m[44;142H[K[44;142H102,11[8C86%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H101,0-1[7C85%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m    }*/[m[44;142H[K[44;142H100,7[9C84%[1;7H[?12l[?25h[?25l[44;144H1,0-1[2;1H[?12l[?25h[?25l[44;144H2,11 [3;11H[?12l[?25h[?25l[44;144H3[4;11H[?12l[?25h[?25l[44;144H4[5;11H[?12l[?25h[?25l[44;144H5,3 [6;3H[?12l[?25h[?25l[44;144H6,0-1[7;1H[?12l[?25h[?25l[44;144H7,11 [8;11H[?12l[?25h[?25l[44;144H8[9;11H[?12l[?25h[?25l[44;144H9[10;11H[?12l[?25h[?25l[44;143H10[11;11H[?12l[?25h[?25l[44;144H1,0-1[12;1H[?12l[?25h[?25l[44;144H0,11 [11;11H[?12l[?25h[?25l[44;143H09[10;11H[?12l[?25h[?25l[44;144H8[9;11H[?12l[?25h[?25l[44;144H7[8;11H[?12l[?25h[?25l[44;144H6,0-1[7;1H[?12l[?25h[?25l[44;144H5,3  [6;3H[?12l[?25h[?25l[44;144H4,11[5;11H[?12l[?25h[?25l[44;144H3[4;11H[?12l[?25h[?25l[44;144H2[3;11H[?12l[?25h[?25l[44;144H1,0-1[2;1H[?12l[?25h[?25l[44;144H0,7  [1;7H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m      prev_good_pkts[i] = good_pkts;[m[44;142H[K[44;142H99,11[9C83%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m      prev_bad_pkts[i] = bad_pkts;[m[44;142H[K[44;142H98,11[9C82%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m      // Update the counters[m[44;142H[K[44;142H97,11[9C82%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H96,0-1[8C81%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m      }[m[44;142H[K[44;142H95,7[10C80%[1;7H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m        writeReg(&nf2, PHY_TEST_PHY_0_RX_CTRL_REG + i * PHY_TEST_PHY_GROUP_INST_OFFSET, 0x3);[m[44;142H[K[44;142H94,11[9C79%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m      if (bad_pkts == prev_bad_pkts[i] && good_pkts != prev_good_pkts[i]) {[m[44;142H[K[44;142H93,11[9C78%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m      // packets have remained the same[m[44;142H[K[44;142H92,11[9C77%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m      // Only reset if the number of good packets has incremented but the bad[m[44;142H[K[44;142H91,11[9C76%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;4H [34m/*if ([m[34m[106m([m[34mport_status & 0x1100[m[34m[106m)[m[34m == 0x1100) {[m[44;142H[K[44;142H90,11[9C76%[1;11H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;4H [34m// Verify if we should reset the counters[2;11H([20C)[m[44;142H[K[44;142H89,11[9C75%[1;11H[?12l[?25h[?25l[2;11H[34m[106m([20C)[m[44;142H90[2;11H[?12l[?25h[?25l[34m([20C)[m[44;143H1[3;11H[?12l[?25h[?25l[44;143H2[4;11H[?12l[?25h[?25l[44;143H3[5;11H[?12l[?25h[?25l[44;143H4[6;11H[?12l[?25h[?25l[5;75H[34m[106m{[7;7H}[m[44;143H5,7 [7;7H[?12l[?25h[?25l[5;75H[34m{[7;7H}[m[44;143H6,0-1[8;1H[?12l[?25h[?25l[44;143H7,11 [9;11H[?12l[?25h[?25l[44;143H8[10;11H[?12l[?25h[?25l[44;143H9[11;11H[?12l[?25h[?25l[44;142H100,7[12;7H[?12l[?25h[?25l[44;144H1,0-1[13;1H[?12l[?25h[?25l[44;144H2,11 [14;11H[?12l[?25h[?25l[44;144H3[15;11H[?12l[?25h[?25l[44;144H4[16;11H[?12l[?25h[?25l[44;144H5,3 [17;3H[?12l[?25h[?25l[44;144H6,0-1[18;1H[?12l[?25h[?25l[44;144H7,11 [19;11H[?12l[?25h[?25l[44;144H8[20;11H[?12l[?25h[?25l[44;144H9[21;11H[?12l[?25h[?25l[44;143H10[22;11H[?12l[?25h[?25l[44;144H1,0-1[23;1H[?12l[?25h[?25l[44;144H2,11 [24;11H[?12l[?25h[?25l[44;144H3[25;11H[?12l[?25h[?25l[44;144H4,0-1[26;1H[?12l[?25h[?25l[44;144H5,2  [27;2H[?12l[?25h[?25l[44;144H6,11[28;11H[?12l[?25h[?25l[44;144H7,3 [29;3H[?12l[?25h[?25l[44;144H8,11[30;11H[?12l[?25h[?25l[44;144H9[31;11H[?12l[?25h[?25l[32;11H[106m([35C)[m[44;143H20[32;11H[?12l[?25h[?25l([35C)[44;144H1[33;11H[?12l[?25h[?25l[44;144H2,0-1[34;1H[?12l[?25h[?25l[44;144H3,2  [35;2H[?12l[?25h[?25l[44;144H4,11[36;11H[?12l[?25h[?25l[44;144H5,2 [37;2H[?12l[?25h[?25l[44;144H6,11[38;11H[?12l[?25h[?25l[44;144H7,3 [39;3H[?12l[?25h[?25l[44;144H8,11[40;11H[?12l[?25h[?25l[44;144H9[41;11H[?12l[?25h[?25l[44;143H30[42;11H[?12l[?25h[?25l[44;144H1[43;11H[?12l[?25h[?25l[1;43r[43;1H
3257[1;44r[43;2H [32munsigned[m [32mint[m bad_pkts;[44;142H[K[44;142H132,11[8C76%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3258[1;44r[44;142H[K[44;142H133,0-1[7C76%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3259[1;44r[43;2H [32mint[m i;[44;142H[K[44;142H134,8[9C77%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3260[1;44r[44;142H[K[44;142H135,0-1[7C78%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3261[1;44r[43;2H [32mint[m good = [31m1[m;[44;142H[K[44;142H136,11[8C79%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3262[1;44r[44;142H[K[44;142H137,0-1[7C80%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3263[1;44r[43;2H [34m// Read the individual port registers[m[44;142H[K[44;142H138,11[8C81%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3264[1;44r[43;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_PORTS; i++) {[44;142H[K[44;142H139,11[8C82%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3265[1;44r[43;4H [34m// Start with the status register[m[44;142H[K[44;142H140,11[8C82%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3266[1;44r[43;4H readReg(&nf2, PHY_TEST_PHY_0_RX_STATUS_REG + i * PHY_TEST_PHY_GROUP_INST_OFFSET, &port_status);[44;142H[K[44;142H141,11[8C83%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3267[1;44r[43;4H [38;5;130mif[m ((port_status & [31m0x100[m) == [31m0[m) {[44;142H[K[44;142H142,11[8C84%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3268[1;44r[43;8H [34m//Kiran[m[44;142H[K[44;142H143,4-11      85%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3269[1;44r[43;8H printw([31m"phyGetResult: port status bad"[m);[44;142H[K[44;142H144,4-11      86%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3270[1;44r[43;6H good = [31m0[m;[44;142H[K[44;142H145,11[8C87%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3271[1;44r[39;37H[106m{[m[43;4H [106m}[m[44;142H[K[44;142H146,5[9C88%[43;5H[?12l[?25h[?25l[1;43r[43;1H
3272[1;44r[38;37H{[42;5H}[44;142H[K[44;142H147,0-1[7C88%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3273[1;44r[43;4H [34m// Read the number of good/bad packets[m[44;142H[K[44;142H148,11[8C89%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3274[1;44r[43;4H readReg(&nf2, PHY_TEST_PHY_0_RX_GOOD_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INST_OFFSET, &good_pkts);[44;142H[K[44;142H149,11[8C90%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3275[1;44r[43;4H readReg(&nf2, PHY_TEST_PHY_0_RX_ERR_PKT_CNT_REG + i * PHY_TEST_PHY_GROUP_INST_OFFSET, &bad_pkts);[44;142H[K[44;142H150,11[8C91%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3276[1;44r[44;142H[K[44;142H151,0-1[7C92%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3277[1;44r[43;4H [34m// Update the good flag[m[44;142H[K[44;142H152,11[8C93%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3278[1;44r[43;4H [38;5;130mif[m (bad_pkts != [31m0[m) {[44;142H[K[44;142H153,11[8C94%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3279[1;44r[43;8H printw([31m"phyGetResult: found bad packets"[m);[44;142H[K[44;142H154,4-11      94%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3280[1;44r[43;6H good = [31m0[m;[44;142H[K[44;142H155,11[8C95%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3281[1;44r[40;24H[106m{[m[43;4H [106m}[m[44;142H[K[44;142H156,5[9C96%[43;5H[?12l[?25h[?25l[1;43r[43;1H
3282[1;44r[25;35H[106m{[m[39;24H{[42;5H}
3283  [106m}[m[44;142H[K[44;142H157,3[9C97%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3284[1;44r[24;35H{[42;3H}[44;142H[K[44;142H158,0-1[7C98%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3285[1;44r[43;2H [38;5;130mreturn[m good;[44;142H[K[44;142H159,11[8C99%[43;11H[?12l[?25h[?25l[1;43r[43;1H
3286[1;44r[43;1H} [34m// phyGetResult[m[44;142H[K[44;142H160,11[8CBot[43;11H[?12l[?25h[?25l[44;143H59[42;11H[?12l[?25h[?25l[44;144H8,0-1[41;1H[?12l[?25h[?25l[22;35H[106m{[40;3H}[m[44;144H7,3  [40;3H[?12l[?25h[?25l[22;35H{[36;24H[106m{[39;5H}[m
3287  }[44;144H6,5[39;5H[?12l[?25h[?25l[36;24H{[39;5H}[44;144H5,11[38;11H[?12l[?25h[?25l[44;144H4,4-11[37;11H[?12l[?25h[?25l[44;144H3,11  [36;11H[?12l[?25h[?25l[44;144H2[35;11H[?12l[?25h[?25l[44;144H1,0-1[34;1H[?12l[?25h[?25l[44;144H0,11 [33;11H[?12l[?25h[?25l[44;143H49[32;11H[?12l[?25h[?25l[44;144H8[31;11H[?12l[?25h[?25l[44;144H7,0-1[30;1H[?12l[?25h[?25l[25;37H[106m{[29;5H}[m[44;144H6,5  [29;5H[?12l[?25h[?25l[25;37H{[29;5H}[44;144H5,11[28;11H[?12l[?25h[?25l[44;144H4,4-11[27;11H[?12l[?25h[?25l[44;146H5-12[27;12H[?12l[?25h[?25l[44;146H6-13[27;13H[?12l[?25h[?25l[44;146H7-14[27;14H[?12l[?25h[?25ltf[?12l[?25h[?25l[44;144H5,14  [28;14H[?12l[?25h[?25l[25;37H[106m{[29;5H}[m[44;144H6,5 [29;5H[?12l[?25h[?25l[25;37H{[29;5H}[44;144H7,0-1[30;1H[?12l[?25h[?25l[44;144H8,14 [31;14H[?12l[?25h[?25l[44;144H9[32;14H[?12l[?25h[?25l[44;143H50[33;14H[?12l[?25h[?25l[44;144H1,0-1[34;1H[?12l[?25h[?25l[44;144H2,14 [35;14H[?12l[?25h[?25l[44;144H3[36;14H[?12l[?25h[?25l[44;144H4,7-14[37;14H[?12l[?25h[?25ltf[?12l[?25h[?25l[44;142H[K[44;1H:[?12l[?25hw[?25l[?12l[?25hq[?25l[?12l[?25h [?25l"selftest_phy.c" 160L, 4050C written
3288[?1l>[?12l[?25h[?1049l]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ make
3289/bin/nf_register_gen.pl --project selftest
3290make: /bin/nf_register_gen.pl: Command not found
3291make: *** [registers] Error 127
3292]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ cd -
3293/home/netfpga/netfpga
3294]0;netfpga@node1-1: ~/netfpganetfpga@node1-1:~/netfpga$ make
3295echo /home/netfpga/netfpga/lib/Perl5:
3296/home/netfpga/netfpga/lib/Perl5:
3297if [ -f "lib/Makefile" ] ; then \
3298                make -C lib ; \
3299        fi
3300make[1]: Entering directory `/home/netfpga/netfpga/lib'
3301make -C C
3302make[2]: Entering directory `/home/netfpga/netfpga/lib/C'
3303make -C kernel
3304make[3]: Entering directory `/home/netfpga/netfpga/lib/C/kernel'
3305make -C /lib/modules/2.6.31-19-generic/build M=/home/netfpga/netfpga/lib/C/kernel LDDINC=/home/netfpga/netfpga/lib/C/kernel/../include modules
3306make[4]: Entering directory `/usr/src/linux-headers-2.6.31-19-generic'
3307  Building modules, stage 2.
3308  MODPOST 1 modules
3309make[4]: Leaving directory `/usr/src/linux-headers-2.6.31-19-generic'
3310make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/kernel'
3311make -C download
3312make[3]: Entering directory `/home/netfpga/netfpga/lib/C/download'
3313make -C ../common
3314make[4]: Entering directory `/home/netfpga/netfpga/lib/C/common'
3315make[4]: Nothing to be done for `all'.
3316make[4]: Leaving directory `/home/netfpga/netfpga/lib/C/common'
3317make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/download'
3318make -C reg_access
3319make[3]: Entering directory `/home/netfpga/netfpga/lib/C/reg_access'
3320make -C ../common
3321make[4]: Entering directory `/home/netfpga/netfpga/lib/C/common'
3322make[4]: Nothing to be done for `all'.
3323make[4]: Leaving directory `/home/netfpga/netfpga/lib/C/common'
3324make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/reg_access'
3325make -C tools
3326make[3]: Entering directory `/home/netfpga/netfpga/lib/C/tools'
3327make -C nf_info
3328make[4]: Entering directory `/home/netfpga/netfpga/lib/C/tools/nf_info'
3329make -C ../../common
3330make[5]: Entering directory `/home/netfpga/netfpga/lib/C/common'
3331make[5]: Nothing to be done for `all'.
3332make[5]: Leaving directory `/home/netfpga/netfpga/lib/C/common'
3333make[4]: Leaving directory `/home/netfpga/netfpga/lib/C/tools/nf_info'
3334make[3]: Leaving directory `/home/netfpga/netfpga/lib/C/tools'
3335make[2]: Leaving directory `/home/netfpga/netfpga/lib/C'
3336make -C scripts
3337make[2]: Entering directory `/home/netfpga/netfpga/lib/scripts'
3338make -C cpci_reprogram
3339make[3]: Entering directory `/home/netfpga/netfpga/lib/scripts/cpci_reprogram'
3340make[3]: Nothing to be done for `all'.
3341make[3]: Leaving directory `/home/netfpga/netfpga/lib/scripts/cpci_reprogram'
3342make -C cpci_config_reg_access
3343make[3]: Entering directory `/home/netfpga/netfpga/lib/scripts/cpci_config_reg_access'
3344make[3]: Nothing to be done for `all'.
3345make[3]: Leaving directory `/home/netfpga/netfpga/lib/scripts/cpci_config_reg_access'
3346make[2]: Leaving directory `/home/netfpga/netfpga/lib/scripts'
3347make[1]: Leaving directory `/home/netfpga/netfpga/lib'
3348echo /home/netfpga/netfpga/lib/Perl5:
3349/home/netfpga/netfpga/lib/Perl5:
3350if [ -f "bitfiles/Makefile" ] ; then \
3351                make -C bitfiles ; \
3352        fi
3353make[1]: Entering directory `/home/netfpga/netfpga/bitfiles'
3354make[1]: Nothing to be done for `all'.
3355make[1]: Leaving directory `/home/netfpga/netfpga/bitfiles'
3356echo /home/netfpga/netfpga/lib/Perl5:
3357/home/netfpga/netfpga/lib/Perl5:
3358if [ -f "projects/Makefile" ] ; then \
3359                make -C projects ; \
3360        fi
3361make[1]: Entering directory `/home/netfpga/netfpga/projects'
3362make -C reference_nic
3363make[2]: Entering directory `/home/netfpga/netfpga/projects/reference_nic'
3364make -C sw
3365make[3]: Entering directory `/home/netfpga/netfpga/projects/reference_nic/sw'
3366/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_nic
3367
3368NetFPGA environment:
3369  Root dir:       /home/netfpga/netfpga
3370  Project name:   reference_nic
3371  Project dir:    /home/netfpga/netfpga/projects/reference_nic
3372  Work dir:       /tmp/netfpga
3373
3374Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3375Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3376Processing /home/netfpga/netfpga/projects/reference_nic/include/project.xml...
3377
3378Project: 'Reference NIC' (reference_nic)
3379Description: Reference NIC
3380Version: 1.1.0
3381Device ID: 1
3382
3383Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
3384Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
3385WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
3386Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
3387WARNING: No module specific XML found for module 'core/nf2/generic_top'
3388WARNING: No module specific XML found for module 'core/nf2/reference_core'
3389WARNING: No module specific XML found for module 'core/output_port_lookup/nic'
3390Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
3391WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
3392WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
3393Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3394WARNING: No module specific XML found for module 'core/cpci_bus'
3395Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3396WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
3397WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
3398Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
3399Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3400WARNING: No module specific XML found for module 'core/utils/generic_regs'
3401make[3]: Leaving directory `/home/netfpga/netfpga/projects/reference_nic/sw'
3402make[2]: Leaving directory `/home/netfpga/netfpga/projects/reference_nic'
3403make -C reference_router
3404make[2]: Entering directory `/home/netfpga/netfpga/projects/reference_router'
3405make -C sw
3406make[3]: Entering directory `/home/netfpga/netfpga/projects/reference_router/sw'
3407/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_router
3408
3409NetFPGA environment:
3410  Root dir:       /home/netfpga/netfpga
3411  Project name:   reference_router
3412  Project dir:    /home/netfpga/netfpga/projects/reference_router
3413  Work dir:       /tmp/netfpga
3414
3415Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3416Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3417Processing /home/netfpga/netfpga/projects/reference_router/include/project.xml...
3418
3419Project: 'Reference router' (reference_router)
3420Description: Reference IPv4 router
3421Version: 1.0.0
3422Device ID: 2
3423
3424Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
3425Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
3426WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
3427Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
3428WARNING: No module specific XML found for module 'core/nf2/generic_top'
3429WARNING: No module specific XML found for module 'core/nf2/reference_core'
3430Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/cam_router/xml/cam_router.xml...
3431Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
3432WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
3433WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
3434Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3435WARNING: No module specific XML found for module 'core/cpci_bus'
3436Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3437WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
3438WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
3439Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
3440Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3441WARNING: No module specific XML found for module 'core/utils/generic_regs'
3442make[3]: Leaving directory `/home/netfpga/netfpga/projects/reference_router/sw'
3443make[2]: Leaving directory `/home/netfpga/netfpga/projects/reference_router'
3444make -C reference_switch
3445make[2]: Entering directory `/home/netfpga/netfpga/projects/reference_switch'
3446make -C sw
3447make[3]: Entering directory `/home/netfpga/netfpga/projects/reference_switch/sw'
3448/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_switch
3449
3450NetFPGA environment:
3451  Root dir:       /home/netfpga/netfpga
3452  Project name:   reference_switch
3453  Project dir:    /home/netfpga/netfpga/projects/reference_switch
3454  Work dir:       /tmp/netfpga
3455
3456Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3457Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3458Processing /home/netfpga/netfpga/projects/reference_switch/include/project.xml...
3459
3460Project: 'Reference Switch' (reference_switch)
3461Description: Reference Switch
3462Version: 1.0.0
3463Device ID: 3
3464
3465Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
3466Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
3467WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
3468Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
3469WARNING: No module specific XML found for module 'core/nf2/generic_top'
3470WARNING: No module specific XML found for module 'core/nf2/reference_core'
3471Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/learning_cam_switch/xml/learning_cam_switch.xml...
3472Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
3473WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
3474WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
3475WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
3476Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3477WARNING: No module specific XML found for module 'core/cpci_bus'
3478Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3479WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
3480Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
3481Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3482make[3]: Leaving directory `/home/netfpga/netfpga/projects/reference_switch/sw'
3483make[2]: Leaving directory `/home/netfpga/netfpga/projects/reference_switch'
3484make -C router_buffer_sizing
3485make[2]: Entering directory `/home/netfpga/netfpga/projects/router_buffer_sizing'
3486make -C sw
3487make[3]: Entering directory `/home/netfpga/netfpga/projects/router_buffer_sizing/sw'
3488make[3]: Nothing to be done for `all'.
3489make[3]: Leaving directory `/home/netfpga/netfpga/projects/router_buffer_sizing/sw'
3490make[2]: Leaving directory `/home/netfpga/netfpga/projects/router_buffer_sizing'
3491make -C router_kit
3492make[2]: Entering directory `/home/netfpga/netfpga/projects/router_kit'
3493make -C sw
3494make[3]: Entering directory `/home/netfpga/netfpga/projects/router_kit/sw'
3495/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_router
3496
3497NetFPGA environment:
3498  Root dir:       /home/netfpga/netfpga
3499  Project name:   reference_router
3500  Project dir:    /home/netfpga/netfpga/projects/reference_router
3501  Work dir:       /tmp/netfpga
3502
3503Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3504Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3505Processing /home/netfpga/netfpga/projects/reference_router/include/project.xml...
3506
3507Project: 'Reference router' (reference_router)
3508Description: Reference IPv4 router
3509Version: 1.0.0
3510Device ID: 2
3511
3512Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
3513Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
3514WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
3515Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
3516WARNING: No module specific XML found for module 'core/nf2/generic_top'
3517WARNING: No module specific XML found for module 'core/nf2/reference_core'
3518Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/cam_router/xml/cam_router.xml...
3519Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
3520WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
3521WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
3522Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3523WARNING: No module specific XML found for module 'core/cpci_bus'
3524Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3525WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
3526WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
3527Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
3528Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3529WARNING: No module specific XML found for module 'core/utils/generic_regs'
3530ln -f -s ../../reference_router/lib/C/reg_defines_reference_router.h reg_defines.h
3531make[3]: Leaving directory `/home/netfpga/netfpga/projects/router_kit/sw'
3532make[2]: Leaving directory `/home/netfpga/netfpga/projects/router_kit'
3533make -C scone
3534make[2]: Entering directory `/home/netfpga/netfpga/projects/scone'
3535make -C sw
3536make[3]: Entering directory `/home/netfpga/netfpga/projects/scone/sw'
3537/home/netfpga/netfpga/bin/nf_register_gen.pl --project reference_router
3538
3539NetFPGA environment:
3540  Root dir:       /home/netfpga/netfpga
3541  Project name:   reference_router
3542  Project dir:    /home/netfpga/netfpga/projects/reference_router
3543  Work dir:       /tmp/netfpga
3544
3545Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3546Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3547Processing /home/netfpga/netfpga/projects/reference_router/include/project.xml...
3548
3549Project: 'Reference router' (reference_router)
3550Description: Reference IPv4 router
3551Version: 1.0.0
3552Device ID: 2
3553
3554Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/cpu_dma_queue/xml/cpu_dma_queue.xml...
3555Processing /home/netfpga/netfpga/lib/verilog/core/io_queues/ethernet_queue/xml/ethernet_mac.xml...
3556WARNING: No module specific XML found for module 'contrib/ucsd/gig_eth_mac'
3557Processing /home/netfpga/netfpga/lib/verilog/core/input_arbiter/rr_input_arbiter/xml/rr_input_arbiter.xml...
3558WARNING: No module specific XML found for module 'core/nf2/generic_top'
3559WARNING: No module specific XML found for module 'core/nf2/reference_core'
3560Processing /home/netfpga/netfpga/lib/verilog/core/output_port_lookup/cam_router/xml/cam_router.xml...
3561Processing /home/netfpga/netfpga/lib/verilog/core/output_queues/sram_rr_output_queues/xml/sram_rr_output_queues.xml...
3562WARNING: No module specific XML found for module 'core/sram_arbiter/sram_weighted_rr'
3563WARNING: No module specific XML found for module 'core/user_data_path/reference_user_data_path'
3564Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3565WARNING: No module specific XML found for module 'core/cpci_bus'
3566Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3567WARNING: No module specific XML found for module 'core/user_data_path/udp_reg_master'
3568WARNING: No module specific XML found for module 'core/io_queues/add_rm_hdr'
3569Processing /home/netfpga/netfpga/lib/verilog/core/strip_headers/keep_length/xml/strip_headers.xml...
3570Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3571WARNING: No module specific XML found for module 'core/utils/generic_regs'
3572ln -f -s /home/netfpga/netfpga/projects/reference_router/lib/C/reg_defines_reference_router.h reg_defines.h
3573make[3]: Leaving directory `/home/netfpga/netfpga/projects/scone/sw'
3574make[2]: Leaving directory `/home/netfpga/netfpga/projects/scone'
3575make -C selftest
3576make[2]: Entering directory `/home/netfpga/netfpga/projects/selftest'
3577make -C sw
3578make[3]: Entering directory `/home/netfpga/netfpga/projects/selftest/sw'
3579/home/netfpga/netfpga/bin/nf_register_gen.pl --project selftest
3580
3581NetFPGA environment:
3582  Root dir:       /home/netfpga/netfpga
3583  Project name:   selftest
3584  Project dir:    /home/netfpga/netfpga/projects/selftest
3585  Work dir:       /tmp/netfpga
3586
3587Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3588Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3589Processing /home/netfpga/netfpga/projects/selftest/include/project.xml...
3590
3591Project: 'Selftest' (selftest)
3592Description: NetFPGA selftest -- exercises all major subsystems of the board
3593Version: 1.1.0
3594Device ID: 5
3595
3596WARNING: No module specific XML found for module 'core/nf2/reference_core'
3597Processing /home/netfpga/netfpga/lib/verilog/core/io/mdio/xml/mdio.xml...
3598WARNING: No module specific XML found for module 'core/cpci_bus'
3599Processing /home/netfpga/netfpga/lib/verilog/core/dma/xml/dma.xml...
3600WARNING: No module specific XML found for module 'core/ddr2_controller'
3601Processing /home/netfpga/netfpga/lib/verilog/core/utils/xml/device_id_reg.xml...
3602Processing /home/netfpga/netfpga/projects/selftest/include/clock_test.xml...
3603Processing /home/netfpga/netfpga/projects/selftest/include/dram_test.xml...
3604Processing /home/netfpga/netfpga/projects/selftest/include/phy_test.xml...
3605Processing /home/netfpga/netfpga/projects/selftest/include/reg_file.xml...
3606Processing /home/netfpga/netfpga/projects/selftest/include/reg_reflect.xml...
3607Processing /home/netfpga/netfpga/projects/selftest/include/serial_test.xml...
3608Processing /home/netfpga/netfpga/projects/selftest/include/sram_msb.xml...
3609Processing /home/netfpga/netfpga/projects/selftest/include/sram_test.xml...
3610/home/netfpga/netfpga/bin/nf_register_gen.pl --project cpci
3611
3612NetFPGA environment:
3613  Root dir:       /home/netfpga/netfpga
3614  Project name:   cpci
3615  Project dir:    /home/netfpga/netfpga/projects/cpci
3616  Work dir:       /tmp/netfpga
3617
3618Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/global.xml...
3619Processing /home/netfpga/netfpga/lib/verilog/core/common/xml/nf_defines.xml...
3620Processing /home/netfpga/netfpga/projects/cpci/include/project.xml...
3621
3622Project: 'CPCI' (cpci)
3623Description: NetFPGA PCI interface
3624Version: 4.1.0
3625Device ID: 0
3626
3627Processing /home/netfpga/netfpga/projects/cpci/include/cpci_regs.xml...
3628gcc -g   -c -o selftest_phy.o selftest_phy.c
3629gcc -lncurses  selftest.o selftest_dram.o selftest_sram.o selftest_serial.o selftest_phy.o selftest_mdio.o selftest_reg.o selftest_clk.o selftest_dma.o or_ip.o or_utils.o /home/netfpga/netfpga/lib/C/common/nf2util.o /home/netfpga/netfpga/lib/C/common/nf2util_proxy_common.o   -o selftest
3630make[3]: Leaving directory `/home/netfpga/netfpga/projects/selftest/sw'
3631make[2]: Leaving directory `/home/netfpga/netfpga/projects/selftest'
3632make[1]: Leaving directory `/home/netfpga/netfpga/projects'
3633]0;netfpga@node1-1: ~/netfpganetfpga@node1-1:~/netfpga$ cd -
3634/home/netfpga/netfpga/projects/selftest/sw
3635]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ cd -makecd -make[K[K[K[Ksudo select[K[K[Kftest[K[K[K[K[K[K[K[K,.[K[K[K[K[K[K[K./selftest -n
3636Found net device: nf2c0
3637CPCI Information
3638----------------
3639Version: 4 (rev 1)
3640
3641Device (Virtex) Information
3642---------------------------
3643Project directory: selftest
3644Project name: Selftest
3645Project description: NetFPGA selftest -- exercises all major subsystems of the board
3646
3647Device ID: 5
3648Version: 1.1.0
3649Built against CPCI version: 4 (rev 1)
3650
3651NetFPGA selftest 1.00 alpha
3652Running..... phyGetResult: port status badphyGetResult: found bad packetsphyGetResult: port status badphyGetResult: found bad packetsphyGetResult: port status badphyGetResult: found bad packetsphyGetResult: port status badphyGetResult: found bad packetsFAILED. Failing tests: PHY interface, DMA interface
3653]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ sudo bash[K[K[K[Ksu -
3654]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# cd /ho[K[K[K[K[K[Kexit[2Plsshutdown -r now[4Pupdate-grub[K[K[K[K[K[K[K[K[K[K[K~netfpga/proj[K[K[K[Knetfpga/projects/selftest/sw/
3655bad_pkt_dump  selftest     
3656root@node1-1:~# ~netfpga/netfpga/projects/selftest/sw/selftest -m[Kn
3657Found net device: nf2c0
3658CPCI Information
3659----------------
3660Version: 4 (rev 1)
3661
3662Device (Virtex) Information
3663---------------------------
3664Project directory: selftest
3665Project name: Selftest
3666Project description: NetFPGA selftest -- exercises all major subsystems of the board
3667
3668Device ID: 5
3669Version: 1.1.0
3670Built against CPCI version: 4 (rev 1)
3671
3672NetFPGA selftest 1.00 alpha
3673Running..... phyGetResult: port status badphyGetResult: found bad packetsphyGetResult: port status badphyGetResult: found bad packetsphyGetResult: port status badphyGetResult: found bad packetsphyGetResult: port status badphyGetResult: found bad packetsFAILED. Failing tests: PHY interface
3674]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# ls
3675[0m[01;31momf-common-5.2_ubuntu2_all.deb[0m
3676[m]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# ls -al
3677total 188
3678drwx------  6 root root   4096 2011-03-09 20:36 [0m[01;34m.[0m
3679drwxr-xr-x 21 root root   4096 2010-10-22 03:51 [01;34m..[0m
3680drwx------  2 root root   4096 2010-01-29 02:36 [01;34m.aptitude[0m
3681-rw-------  1 root root    751 2011-03-10 14:50 .bash_history
3682-rw-r--r--  1 root root   2227 2009-04-27 09:56 .bashrc
3683drwxr-xr-x  2 root root   4096 2010-02-01 05:12 [01;34m.cache[0m
3684drwxr-xr-x  2 root root   4096 2010-01-29 02:36 [01;34m.debtags[0m
3685-rw-r--r--  1 root root 140614 2011-01-19 04:26 [01;31momf-common-5.2_ubuntu2_all.deb[0m
3686-rw-r--r--  1 root root    140 2007-11-19 17:57 .profile
3687-rw-------  1 root root   6120 2011-03-09 20:36 .viminfo
3688drwx------  2 root root   4096 2010-02-01 05:44 [01;34m.w3m[0m
3689[m]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# exit
3690logout
3691]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ vi selftest.c[K[K_phy.c[K[K[K[K[K[K[Kt.c
3692[?1049h[?1h=[1;44r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[44;1H"selftest.c" 512L, 10370C[>c[1;1H[34m/* ****************************************************************************
3693 * vim:set shiftwidth=2 softtabstop=2 expandtab:
3694 * $Id: selftest.c 6010 2010-03-14 08:24:50Z grg $
3695 *
3696 * Module: selftest.c
3697 * Project: NetFPGA 2.1
3698 * Description: Interface with the self-test modules on the NetFPGA
3699 * to help diagnose problems.
3700 *
3701 * Change history:
3702 *
3703 */[m
3704
3705[35m#include [m[31m<stdio.h>[m
3706[35m#include [m[31m<stdlib.h>[m
3707[35m#include [m[31m<unistd.h>[m
3708
3709[35m#include [m[31m<sys/types.h>[m
3710[35m#include [m[31m<sys/stat.h>[m
3711[35m#include [m[31m<sys/socket.h>[m
3712[35m#include [m[31m<sys/time.h>[m
3713
3714[35m#include [m[31m<net/if.h>[m
3715
3716[35m#include [m[31m<time.h>[m
3717
3718[35m#include [m[31m<signal.h>[m
3719
3720[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
3721[35m#include [m[31m"../../cpci/lib/C/reg_defines_cpci.h"[m
3722[35m#include [m[31m"../../../lib/C/common/nf2util.h"[m
3723[35m#include [m[31m<curses.h>[m
3724[35m#include [m[31m"selftest.h"[m
3725[35m#include [m[31m"selftest_dram.h"[m
3726[35m#include [m[31m"selftest_sram.h"[m
3727[35m#include [m[31m"selftest_serial.h"[m
3728[35m#include [m[31m"selftest_phy.h"[m
3729[35m#include [m[31m"selftest_mdio.h"[m
3730[35m#include [m[31m"selftest_reg.h"[m
3731[35m#include [m[31m"selftest_clk.h"[m
3732[35m#include [m[31m"selftest_dma.h"[m
3733
3734[35m#define PATHLEN         [m[31m80[m[44;142H1,1[11CTop[1;1H[?12l[?25hP+q436f\P+q6b75\P+q6b64\P+q6b72\P+q6b6c\P+q2332\P+q2334\P+q2569\P+q2a37\P+q6b31\P+q6b32\[27m[m[H[2J[?25l[1;1H[34m/* ****************************************************************************
3735 * vim:set shiftwidth=2 softtabstop=2 expandtab:
3736 * $Id: selftest.c 6010 2010-03-14 08:24:50Z grg $
3737 *
3738 * Module: selftest.c
3739 * Project: NetFPGA 2.1
3740 * Description: Interface with the self-test modules on the NetFPGA
3741 * to help diagnose problems.
3742 *
3743 * Change history:
3744 *
3745 */[m
3746
3747[35m#include [m[31m<stdio.h>[m
3748[35m#include [m[31m<stdlib.h>[m
3749[35m#include [m[31m<unistd.h>[m
3750
3751[35m#include [m[31m<sys/types.h>[m
3752[35m#include [m[31m<sys/stat.h>[m
3753[35m#include [m[31m<sys/socket.h>[m
3754[35m#include [m[31m<sys/time.h>[m
3755
3756[35m#include [m[31m<net/if.h>[m
3757
3758[35m#include [m[31m<time.h>[m
3759
3760[35m#include [m[31m<signal.h>[m
3761
3762[35m#include [m[31m"../lib/C/reg_defines_selftest.h"[m
3763[35m#include [m[31m"../../cpci/lib/C/reg_defines_cpci.h"[m
3764[35m#include [m[31m"../../../lib/C/common/nf2util.h"[m
3765[35m#include [m[31m<curses.h>[m
3766[35m#include [m[31m"selftest.h"[m
3767[35m#include [m[31m"selftest_dram.h"[m
3768[35m#include [m[31m"selftest_sram.h"[m
3769[35m#include [m[31m"selftest_serial.h"[m
3770[35m#include [m[31m"selftest_phy.h"[m
3771[35m#include [m[31m"selftest_mdio.h"[m
3772[35m#include [m[31m"selftest_reg.h"[m
3773[35m#include [m[31m"selftest_clk.h"[m
3774[35m#include [m[31m"selftest_dma.h"[m
3775
3776[35m#define PATHLEN         [m[31m80[m[44;142H1,1[11CTop "selftest.c" 512L, 10370C[44;142H[K[44;142H1,1[11CTop[1;1H[?12l[?25hP+q6b33\[?25l[?12l[?25hP+q6b34\P+q6b35\P+q6b36\P+q6b37\P+q6b38\P+q6b39\P+q6b3b\P+q4631\P+q4632\P+q2531\P+q2638\P+q6b62\P+q6b49\P+q6b44\P+q6b68\P+q4037\P+q6b50\P+q6b4e\P+q4b31\P+q4b33\P+q4b34\P+q4b35\P+q6b42\[?25l[44;1H[K[44;1H:[?12l[?25h$[?25l[?12l[?25h [?25l[27m[m[H[2J[1;1H[34m//          verbose = 1;
3777//          break;
3778//       case 'l':   /* log file */
3779//          log_file_name = optarg;
3780//          break;[m[6;9H [38;5;130mcase[m [31m'i'[m:   [34m/* interface name */[m[7;12H nf2.device_name = optarg;[8;12H [38;5;130mbreak[m;
3781   [38;5;130mcase[m [31m'n'[m: [34m/* without SATA test */[m[10;6H no_sata_flg = [31m1[m;[11;6H [38;5;130mbreak[m;[12;9H [38;5;130mcase[m [31m'?'[m:[13;12H [38;5;130mif[m (isprint (optopt))[14;15H fprintf ([31mstderr[m, [31m"Unknown option `-[m[35m%c[m[31m'.[m[35m\n[m[31m"[m, optopt);[15;12H [38;5;130melse[m[16;15H fprintf ([31mstderr[m,[17;24H [31m"Unknown option character `[m[35m\\[m[31mx[m[35m%x[m[31m'.[m[35m\n[m[31m"[m,[18;24H optopt);[19;9H [38;5;130mdefault[m:[20;12H usage(argv[[31m0[m]);[21;12H exit([31m1[m);[22;9H }
3782
3783[34m//   if (verbose) {
3784//      printf ("logfile = %s.   bin file = %s\n", log_file_name, bin_file_name);
3785//   }[m
3786
3787}
3788
3789[34m/*
3790 * Describe usage of this program.
3791 */[m
3792[32mvoid[m usage ([32mchar[m *prog) {
3793   printf([31m"Usage: [m[35m%s[m[31m <options>  [filename.bin | filename.bit][m[35m\n[m[31m"[m, prog);
3794   printf([31m"[m[35m\n[m[31mOptions: -l <logfile> (default is stdout).[m[35m\n[m[31m"[m);
3795   printf([31m"         -i <iface> : interface name.[m[35m\n[m[31m"[m);
3796   printf([31m"         -v : be verbose.[m[35m\n[m[31m"[m);
3797   printf([31m"         -c : run continuously[m[35m\n[m[31m"[m);
3798   printf([31m"         -s : short test mode[m[35m\n[m[31m"[m);
3799   printf([31m"         -n : disable SATA testing[m[35m\n[m[31m"[m);
3800}[44;142H512,0-1[7CBot[43;1H[?12l[?25h[?25l[44;144H1[42;1H[?12l[?25h[?25l[33;25H[106m{[41;1H}[m[44;144H0,1  [41;1H[?12l[?25h[?25l[33;25H{[41;1H}[44;143H09[40;1H[?12l[?25h[?25l[44;144H8[39;1H[?12l[?25h[?25l[44;144H7[38;1H[?12l[?25h[?25l[44;144H6[37;1H[?12l[?25h[?25l[44;144H5[36;1H[?12l[?25h[?25l[44;144H4[35;1H[?12l[?25h[?25l[44;144H3[34;1H[?12l[?25h[?25l[44;144H2[33;1H[?12l[?25h[?25l[44;144H1[32;1H[?12l[?25h[?25l[44;144H0[31;1H[?12l[?25h[?25l[44;142H499[30;1H[?12l[?25h[?25l[44;144H8,0-1[29;1H[?12l[?25h[?25l[44;144H7,1  [28;1H[?12l[?25h[?25l[44;144H6,0-1[27;1H[?12l[?25h[?25l[44;144H5,1  [26;1H[?12l[?25h[?25l[44;144H4[25;1H[?12l[?25h[?25l[44;144H3[24;1H[?12l[?25h[?25l[44;144H2,0-1[23;1H[?12l[?25h[?25l[44;144H1,1-8[22;8H[?12l[?25h[?25l[44;144H0[21;8H[?12l[?25h[?25l[44;143H89[20;8H[?12l[?25h[?25l[44;144H8[19;8H[?12l[?25h[?25l[44;144H7,1  [18;1H[?12l[?25h[?25l[44;144H6[17;1H[?12l[?25h[?25l[44;144H5[16;1H[?12l[?25h[?25l[44;144H4,1-8[15;8H[?12l[?25h[?25l[44;144H3,1  [14;1H[?12l[?25h[?25l[44;144H2,1-8[13;8H[?12l[?25h[?25l[44;144H1[12;8H[?12l[?25h[?25l[44;144H0,1  [11;1H[?12l[?25h[?25l[44;143H79[10;1H[?12l[?25h[?25l[44;144H8[9;1H[?12l[?25h[?25l[44;144H7,1-8[8;8H[?12l[?25h[?25l[44;144H6[7;8H[?12l[?25h[?25l[44;144H5[6;8H[?12l[?25h[?25l[44;144H4,1  [5;1H[?12l[?25h[?25l[44;144H3[4;1H[?12l[?25h[?25l[44;144H2[3;1H[?12l[?25h[?25l[44;144H1[2;1H[?12l[?25h[?25l[44;144H0[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m//       case 'v':[m[44;142H[K[44;142H469,1[9C99%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;12H [38;5;130mbreak[m;[44;142H[K[44;142H468,1-8[7C99%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;12H continuous = [31m0[m;[44;142H[K[44;142H467,1-8[7C99%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;12H shortrun = [31m1[m;[44;142H[K[44;142H466,1-8[7C99%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;9H [38;5;130mcase[m [31m's'[m:[44;142H[K[44;142H465,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;12H [38;5;130mbreak[m;[44;142H[K[44;142H464,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;12H shortrun = [31m0[m;[44;142H[K[44;142H463,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;12H continuous = [31m1[m;[44;142H[K[44;142H462,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;9H [38;5;130mcase[m [31m'c'[m:[44;142H[K[44;142H461,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;9H {[44;142H[K[44;142H460,1-8[7C97%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;6H [38;5;130mswitch[m (c)[44;142H[K[44;142H459,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [38;5;130mwhile[m ((c = getopt (argc, argv, [31m"csi:n"[m)) != -[31m1[m)[44;142H[K[44;142H458,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H opterr = [31m0[m;[44;142H[K[44;142H457,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [34m/* don't want getopt to moan - I can do that just fine thanks! */[m[44;142H[K[44;142H456,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H455,0-1[7C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H verbose = [31m0[m;[44;142H[K[44;142H454,1[9C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [34m/* set defaults */[m[44;142H[K[44;142H453,1[9C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H452,0-1[7C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [32mchar[m c;[44;142H[K[44;142H451,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H450,0-1[7C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[32mvoid[m processArgs ([32mint[m argc, [32mchar[m **argv ) {[44;142H[K[44;142H449,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m */[m[44;142H[K[44;142H448,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m * Process the arguments.[m[44;142H[K[44;142H447,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m/*[m[44;142H[K[44;142H446,1[9C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H445,0-1[7C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H444,0-1[7C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H}[44;142H[K[44;142H443,1[9C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, SERIAL_TEST_CTRL_1_REG, [31m0[m);[44;142H[K[44;142H442,1[9C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, SERIAL_TEST_CTRL_0_REG, [31m0[m);[44;142H[K[44;142H441,1[9C93%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, SERIAL_TEST_CTRL_REG, [31m0[m);[44;142H[K[44;142H440,1[9C93%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H [34m//writeReg(&nf2, SERIAL_TEST_CTRL_REG, SERIAL_TEST_GLBL_CTRL_NONSTOP);[m[44;142H[K[44;142H439,1[9C93%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, SERIAL_TEST_CTRL_REG, SERIAL_TEST_GLBL_CTRL_RESTART);[44;142H[K[44;142H438,1[9C93%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H437,0-1[7C92%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, DRAM_TEST_CTRL_REG, DRAM_TEST_CTRL_REPEAT);[44;142H[K[44;142H436,1[9C92%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H usleep([31m100000[m);[44;142H[K[44;142H435,1[9C92%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, DRAM_TEST_CTRL_REG, [31m0x0[m);[44;142H[K[44;142H434,1[9C92%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, DRAM_TEST_EN_REG, DRAM_TEST_ENABLE_ENABLE_MASK);[44;142H[K[44;142H433,1[9C92%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;6H SRAM_TEST_ENABLE_SRAM_EN_MASK);[44;142H[K[44;142H432,1[9C91%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;6H SRAM_TEST_ENABLE_TEST_EN_MASK |[44;142H[K[44;142H431,1[9C91%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, SRAM_TEST_EN_REG,[44;142H[K[44;142H430,1[9C91%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H429,0-1[7C91%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, SRAM_TEST_RAND_SEED_LO_REG, data2);[44;142H[K[44;142H428,1[9C91%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H writeReg(&nf2, SRAM_TEST_RAND_SEED_HI_REG, data1 & [31m0xf[m);[44;142H[K[44;142H427,1[9C90%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H data2 = lrand48();[44;142H[K[44;142H426,1[9C90%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H data1 = lrand48();[44;142H[K[44;142H425,1[9C90%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H [34m// program h/w random test with a different test seed for each iteration[m[44;142H[K[44;142H424,1[9C90%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H423,0-1[7C89%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H move([31m10[m,[31m0[m);[44;142H[K[44;142H422,1[9C89%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H [32munsigned[m [32mint[m data1, data2;[44;142H[K[44;142H421,1[9C89%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H420,0-1[7C89%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H [32mint[m i;[44;142H[K[44;142H419,1[9C89%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;2H [32munsigned[m [32mint[m val;[44;142H[K[44;142H418,1[9C88%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[32mvoid[m reset_tests([32mvoid[m) {[44;142H[K[44;142H417,1[9C88%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m// Reset the status of all tests[m[44;142H[K[44;142H416,1[9C88%[1;1H[?12l[?25h[?25l[44;144H7[2;1H[?12l[?25h[?25l[44;144H8[3;1H[?12l[?25h[?25l[44;144H9[4;1H[?12l[?25h[?25l[44;143H20,0-1[5;1H[?12l[?25h[?25l[44;144H1,1  [6;1H[?12l[?25h[?25l[44;144H2[7;1H[?12l[?25h[?25l[44;144H3,0-1[8;1H[?12l[?25h[?25l[44;144H4,1  [9;1H[?12l[?25h[?25l[44;144H5[10;1H[?12l[?25h[?25l[44;144H6[11;1H[?12l[?25h[?25l[44;144H7[12;1H[?12l[?25h[?25l[44;144H8[13;1H[?12l[?25h[?25l[44;144H9,0-1[14;1H[?12l[?25h[?25l[44;143H30,1  [15;1H[?12l[?25h[?25l[44;144H1[16;1H[?12l[?25h[?25l[44;144H2[17;1H[?12l[?25h[?25l[44;144H3[18;1H[?12l[?25h[?25l[44;144H4[19;1H[?12l[?25h[?25l[44;144H5[20;1H[?12l[?25h[?25l[44;144H6[21;1H[?12l[?25h[?25l[44;144H7,0-1[22;1H[?12l[?25h[?25l[44;144H8,1  [23;1H[?12l[?25h[?25l[44;144H9[24;1H[?12l[?25h[?25l[44;143H40[25;1H[?12l[?25h[?25l[44;144H1[26;1H[?12l[?25h[?25l[44;144H2[27;1H[?12l[?25h[?25l[2;24H[106m{[28;1H}[m[44;144H3[28;1H[?12l[?25h[?25l[2;24H{[28;1H}[44;144H4,0-1[29;1H[?12l[?25h[?25l[44;144H5[30;1H[?12l[?25h[?25l[44;144H6,1  [31;1H[?12l[?25h[?25l[44;144H7[32;1H[?12l[?25h[?25l[44;144H8[33;1H[?12l[?25h[?25l[44;144H9[34;1H[?12l[?25h[?25l[44;143H50,0-1[35;1H[?12l[?25h[?25l[44;144H1,1  [36;1H[?12l[?25h[?25l[44;144H2,0-1[37;1H[?12l[?25h[?25l[44;144H3,1  [38;1H[?12l[?25h[?25l[44;144H4[39;1H[?12l[?25h[?25l[44;144H5,0-1[40;1H[?12l[?25h[?25l[44;144H6,1  [41;1H[?12l[?25h[?25l[44;144H7[42;1H[?12l[?25h[?25l[44;144H8[43;1H[?12l[?25h[?25l[1;43r[43;1H
3801[1;44r[43;6H [38;5;130mswitch[m (c)[44;142H[K[44;142H459,1[9C88%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3802[1;44r[43;9H {[44;142H[K[44;142H460,1-8[7C88%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3803[1;44r[43;9H [38;5;130mcase[m [31m'c'[m:[44;142H[K[44;142H461,1-8[7C89%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3804[1;44r[43;12H continuous = [31m1[m;[44;142H[K[44;142H462,1-8[7C89%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3805[1;44r[43;12H shortrun = [31m0[m;[44;142H[K[44;142H463,1-8[7C89%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3806[1;44r[43;12H [38;5;130mbreak[m;[44;142H[K[44;142H464,1-8[7C89%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3807[1;44r[43;9H [38;5;130mcase[m [31m's'[m:[44;142H[K[44;142H465,1-8[7C89%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3808[1;44r[43;12H shortrun = [31m1[m;[44;142H[K[44;142H466,1-8[7C90%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3809[1;44r[43;12H continuous = [31m0[m;[44;142H[K[44;142H467,1-8[7C90%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3810[1;44r[43;12H [38;5;130mbreak[m;[44;142H[K[44;142H468,1-8[7C90%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3811[1;44r[43;1H[34m//       case 'v':[m[44;142H[K[44;142H469,1[9C90%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3812[1;44r[43;1H[34m//          verbose = 1;[m[44;142H[K[44;142H470,1[9C91%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3813[1;44r[43;1H[34m//          break;[m[44;142H[K[44;142H471,1[9C91%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3814[1;44r[43;1H[34m//       case 'l':   /* log file */[m[44;142H[K[44;142H472,1[9C91%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3815[1;44r[43;1H[34m//          log_file_name = optarg;[m[44;142H[K[44;142H473,1[9C91%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3816[1;44r[43;1H[34m//          break;[m[44;142H[K[44;142H474,1[9C91%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3817[1;44r[43;9H [38;5;130mcase[m [31m'i'[m:   [34m/* interface name */[m[44;142H[K[44;142H475,1-8[7C92%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3818[1;44r[43;12H nf2.device_name = optarg;[44;142H[K[44;142H476,1-8[7C92%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3819[1;44r[43;12H [38;5;130mbreak[m;[44;142H[K[44;142H477,1-8[7C92%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3820[1;44r[43;3H [38;5;130mcase[m [31m'n'[m: [34m/* without SATA test */[m[44;142H[K[44;142H478,1[9C92%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3821[1;44r[43;6H no_sata_flg = [31m1[m;[44;142H[K[44;142H479,1[9C92%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3822[1;44r[43;6H [38;5;130mbreak[m;[44;142H[K[44;142H480,1[9C93%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3823[1;44r[43;9H [38;5;130mcase[m [31m'?'[m:[44;142H[K[44;142H481,1-8[7C93%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3824[1;44r[43;12H [38;5;130mif[m (isprint (optopt))[44;142H[K[44;142H482,1-8[7C93%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3825[1;44r[43;15H fprintf ([31mstderr[m, [31m"Unknown option `-[m[35m%c[m[31m'.[m[35m\n[m[31m"[m, optopt);[44;142H[K[44;142H483,1[9C93%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3826[1;44r[43;12H [38;5;130melse[m[44;142H[K[44;142H484,1-8[7C94%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3827[1;44r[43;15H fprintf ([31mstderr[m,[44;142H[K[44;142H485,1[9C94%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3828[1;44r[43;24H [31m"Unknown option character `[m[35m\\[m[31mx[m[35m%x[m[31m'.[m[35m\n[m[31m"[m,[44;142H[K[44;142H486,1[9C94%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3829[1;44r[43;24H optopt);[44;142H[K[44;142H487,1[9C94%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3830[1;44r[43;9H [38;5;130mdefault[m:[44;142H[K[44;142H488,1-8[7C94%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3831[1;44r[43;12H usage(argv[[31m0[m]);[44;142H[K[44;142H489,1-8[7C95%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3832[1;44r[43;12H exit([31m1[m);[44;142H[K[44;142H490,1-8[7C95%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3833[1;44r[43;9H }[44;142H[K[44;142H491,1-8[7C95%[43;8H[?12l[?25h[?25l[1;43r[43;1H
3834[1;44r[44;142H[K[44;142H492,0-1[7C95%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3835[1;44r[43;1H[34m//   if (verbose) {[m[44;142H[K[44;142H493,1[9C95%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3836[1;44r[43;1H[34m//      printf ("logfile = %s.   bin file = %s\n", log_file_name, bin_file_name);[m[44;142H[K[44;142H494,1[9C96%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3837[1;44r[43;1H[34m//   }[m[44;142H[K[44;142H495,1[9C96%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3838[1;44r[44;142H[K[44;142H496,0-1[7C96%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3839[1;44r[43;1H}[44;142H[K[44;142H497,1[9C96%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3840[1;44r[44;142H[K[44;142H498,0-1[7C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3841[1;44r[43;1H[34m/*[m[44;142H[K[44;142H499,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3842[1;44r[43;1H[34m * Describe usage of this program.[m[44;142H[K[44;142H500,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3843[1;44r[43;1H[34m */[m[44;142H[K[44;142H501,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3844[1;44r[43;1H[32mvoid[m usage ([32mchar[m *prog) {[44;142H[K[44;142H502,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3845[1;44r[43;3H printf([31m"Usage: [m[35m%s[m[31m <options>  [filename.bin | filename.bit][m[35m\n[m[31m"[m, prog);[44;142H[K[44;142H503,1[9C98%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3846[1;44r[43;3H printf([31m"[m[35m\n[m[31mOptions: -l <logfile> (default is stdout).[m[35m\n[m[31m"[m);[44;142H[K[44;142H504,1[9C98%[43;1H[?12l[?25h[?25l[44;144H3[42;1H[?12l[?25h[?25l[44;144H2[41;1H[?12l[?25h[?25l[44;144H1[40;1H[?12l[?25h[?25l[44;144H0[39;1H[?12l[?25h[?25l[44;142H499[38;1H[?12l[?25h[?25l[44;144H8,0-1[37;1H[?12l[?25h[?25l[44;144H7,1  [36;1H[?12l[?25h[?25l[44;144H6,0-1[35;1H[?12l[?25h[?25l[44;144H5,1  [34;1H[?12l[?25h[?25l[44;144H4[33;1H[?12l[?25h[?25l[44;144H3[32;1H[?12l[?25h[?25l[44;144H2,0-1[31;1H[?12l[?25h[?25l[44;144H1,1-8[30;8H[?12l[?25h[?25l[44;144H0[29;8H[?12l[?25h[?25l[44;143H89[28;8H[?12l[?25h[?25l[44;144H8[27;8H[?12l[?25h[?25l[44;144H7,1  [26;1H[?12l[?25h[?25l[44;144H6[25;1H[?12l[?25h[?25l[44;144H5[24;1H[?12l[?25h[?25l[44;144H4,1-8[23;8H[?12l[?25h[?25l[44;144H3,1  [22;1H[?12l[?25h[?25l[44;144H2,1-8[21;8H[?12l[?25h[?25l[44;144H1[20;8H[?12l[?25h[?25l[44;144H0,1  [19;1H[?12l[?25h[?25l[44;143H79[18;1H[?12l[?25h[?25l[44;144H8[17;1H[?12l[?25h[?25l[44;144H7,1-8[16;8H[?12l[?25h[?25l[44;144H6[15;8H[?12l[?25h[?25l[44;144H5[14;8H[?12l[?25h[?25l[44;144H4,1  [13;1H[?12l[?25h[?25l[44;144H3[12;1H[?12l[?25h[?25l[44;144H2[11;1H[?12l[?25h[?25l[44;144H1[10;1H[?12l[?25h[?25l[44;144H0[9;1H[?12l[?25h[?25l[44;143H69[8;1H[?12l[?25h[?25l[44;144H8,1-8[7;8H[?12l[?25h[?25l[44;144H7[6;8H[?12l[?25h[?25l[44;144H6[5;8H[?12l[?25h[?25l[44;144H5[4;8H[?12l[?25h[?25l[44;144H4[3;8H[?12l[?25h[?25l[44;144H3[2;8H[?12l[?25h[?25l[44;144H2[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;9H [38;5;130mcase[m [31m'c'[m:[44;142H[K[44;142H461,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;9H {[44;142H[K[44;142H460,1-8[7C97%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;6H [38;5;130mswitch[m (c)[44;142H[K[44;142H459,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [38;5;130mwhile[m ((c = getopt (argc, argv, [31m"csi:n"[m)) != -[31m1[m)[44;142H[K[44;142H458,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H opterr = [31m0[m;[44;142H[K[44;142H457,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [34m/* don't want getopt to moan - I can do that just fine thanks! */[m[44;142H[K[44;142H456,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H455,0-1[7C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H verbose = [31m0[m;[44;142H[K[44;142H454,1[9C96%[1;1H[?12l[?25h[?25l[44;144H5,0-1[2;1H[?12l[?25h[?25l[44;144H6,1  [3;1H[?12l[?25h[?25l[44;144H7[4;1H[?12l[?25h[?25l[44;144H8[5;1H[?12l[?25h[?25l[44;144H9[6;1H[?12l[?25h[?25l[44;143H60,1-8[7;8H[?12l[?25h[?25l[44;144H1[8;8H[?12l[?25h[?25l[44;144H2[9;8H[?12l[?25h[?25l[44;144H3[10;8H[?12l[?25h[?25l[44;144H4[11;8H[?12l[?25h[?25l[44;144H5[12;8H[?12l[?25h[?25l[44;144H6[13;8H[?12l[?25h[?25l[44;144H7[14;8H[?12l[?25h[?25l[44;144H8[15;8H[?12l[?25h[?25l[44;144H9,1  [16;1H[?12l[?25h[?25l[44;143H70[17;1H[?12l[?25h[?25l[44;144H1[18;1H[?12l[?25h[?25l[44;144H2[19;1H[?12l[?25h[?25l[44;144H3[20;1H[?12l[?25h[?25l[44;144H4[21;1H[?12l[?25h[?25l[44;144H5,1-8[22;8H[?12l[?25h[?25l[44;144H6[23;8H[?12l[?25h[?25l[44;144H7[24;8H[?12l[?25h[?25l[44;144H8,1  [25;1H[?12l[?25h[?25l[44;144H9[26;1H[?12l[?25h[?25l[44;143H80[27;1H[?12l[?25h[?25l[44;144H1,1-8[28;8H[?12l[?25h[?25l[44;144H2[29;8H[?12l[?25h[?25l[44;144H3,1  [30;1H[?12l[?25h[?25l[44;144H4,1-8[31;8H[?12l[?25h[?25l[44;144H5,1  [32;1H[?12l[?25h[?25l[44;144H6[33;1H[?12l[?25h[?25l[44;144H7[34;1H[?12l[?25h[?25l[44;144H8,1-8[35;8H[?12l[?25h[?25l[44;144H7,1  [34;1H[?12l[?25h[?25l[44;144H6[33;1H[?12l[?25h[?25l[44;144H5[32;1H[?12l[?25h[?25l[44;144H4,1-8[31;8H[?12l[?25h[?25l[44;144H3,1  [30;1H[?12l[?25h[?25l[44;144H2,1-8[29;8H[?12l[?25h[?25l[44;144H1[28;8H[?12l[?25h[?25l[44;144H0,1  [27;1H[?12l[?25h[?25l[44;143H79[26;1H[?12l[?25h[?25l[44;143H80[27;1H[?12l[?25h[?25l[44;144H1,1-8[28;8H[?12l[?25h[?25l[44;144H2[29;8H[?12l[?25h[?25l[44;144H3,1  [30;1H[?12l[?25h[?25l[44;144H4,1-8[31;8H[?12l[?25h[?25l[44;144H5,1  [32;1H[?12l[?25h[?25l[44;144H6[33;1H[?12l[?25h[?25l[44;144H7[34;1H[?12l[?25h[?25l[44;144H8,1-8[35;8H[?12l[?25h[?25l[44;144H9[36;8H[?12l[?25h[?25l[44;143H90[37;8H[?12l[?25h[?25l[44;144H1[38;8H[?12l[?25h[?25l[44;144H2,0-1[39;1H[?12l[?25h[?25l[44;144H3,1  [40;1H[?12l[?25h[?25l[44;144H4[41;1H[?12l[?25h[?25l[44;144H5[42;1H[?12l[?25h[?25l[44;144H6,0-1[43;1H[?12l[?25h[?25l[1;43r[43;1H
3847[1;44r[43;1H}[44;142H[K[44;142H497,1[9C96%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3848[1;44r[44;142H[K[44;142H498,0-1[7C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3849[1;44r[43;1H[34m/*[m[44;142H[K[44;142H499,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3850[1;44r[43;1H[34m * Describe usage of this program.[m[44;142H[K[44;142H500,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3851[1;44r[43;1H[34m */[m[44;142H[K[44;142H501,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3852[1;44r[43;1H[32mvoid[m usage ([32mchar[m *prog) {[44;142H[K[44;142H502,1[9C97%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3853[1;44r[43;3H printf([31m"Usage: [m[35m%s[m[31m <options>  [filename.bin | filename.bit][m[35m\n[m[31m"[m, prog);[44;142H[K[44;142H503,1[9C98%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3854[1;44r[43;3H printf([31m"[m[35m\n[m[31mOptions: -l <logfile> (default is stdout).[m[35m\n[m[31m"[m);[44;142H[K[44;142H504,1[9C98%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3855[1;44r[43;3H printf([31m"         -i <iface> : interface name.[m[35m\n[m[31m"[m);[44;142H[K[44;142H505,1[9C98%[43;1H[?12l[?25h[?25l[44;144H4[42;1H[?12l[?25h[?25l[44;144H3[41;1H[?12l[?25h[?25l[44;144H2[40;1H[?12l[?25h[?25l[44;144H1[39;1H[?12l[?25h[?25l[44;144H0[38;1H[?12l[?25h[?25l[44;142H499[37;1H[?12l[?25h[?25l[44;144H8,0-1[36;1H[?12l[?25h[?25l[44;144H7,1  [35;1H[?12l[?25h[?25l[44;144H6,0-1[34;1H[?12l[?25h[?25l[44;144H5,1  [33;1H[?12l[?25h[?25l[44;144H4[32;1H[?12l[?25h[?25l[44;144H3[31;1H[?12l[?25h[?25l[44;144H2,0-1[30;1H[?12l[?25h[?25l[44;144H1,1-8[29;8H[?12l[?25h[?25l[44;144H0[28;8H[?12l[?25h[?25l[44;143H89[27;8H[?12l[?25h[?25l[44;144H8[26;8H[?12l[?25h[?25l[44;144H7,1  [25;1H[?12l[?25h[?25l[44;144H6[24;1H[?12l[?25h[?25l[44;144H5[23;1H[?12l[?25h[?25l[44;144H4,1-8[22;8H[?12l[?25h[?25l[44;144H3,1  [21;1H[?12l[?25h[?25l[44;144H2,1-8[20;8H[?12l[?25h[?25l[44;144H1[19;8H[?12l[?25h[?25l[44;144H0,1  [18;1H[?12l[?25h[?25l[44;143H79[17;1H[?12l[?25h[?25l[44;144H8[16;1H[?12l[?25h[?25l[44;144H7,1-8[15;8H[?12l[?25h[?25l[44;144H6[14;8H[?12l[?25h[?25l[44;144H5[13;8H[?12l[?25h[?25l[44;144H4,1  [12;1H[?12l[?25h[?25l[44;144H3[11;1H[?12l[?25h[?25l[44;144H2[10;1H[?12l[?25h[?25l[44;144H1[9;1H[?12l[?25h[?25l[44;144H0[8;1H[?12l[?25h[?25l[44;143H69[7;1H[?12l[?25h[?25l[44;144H8,1-8[6;8H[?12l[?25h[?25l[44;144H7[5;8H[?12l[?25h[?25l[44;144H6[4;8H[?12l[?25h[?25l[44;144H5[3;8H[?12l[?25h[?25l[44;144H4[2;8H[?12l[?25h[?25l[44;144H3[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;12H continuous = [31m1[m;[44;142H[K[44;142H462,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;9H [38;5;130mcase[m [31m'c'[m:[44;142H[K[44;142H461,1-8[7C98%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;9H {[44;142H[K[44;142H460,1-8[7C97%[1;8H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;6H [38;5;130mswitch[m (c)[44;142H[K[44;142H459,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [38;5;130mwhile[m ((c = getopt (argc, argv, [31m"csi:n"[m)) != -[31m1[m)[44;142H[K[44;142H458,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H opterr = [31m0[m;[44;142H[K[44;142H457,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [34m/* don't want getopt to moan - I can do that just fine thanks! */[m[44;142H[K[44;142H456,1[9C97%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H455,0-1[7C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H verbose = [31m0[m;[44;142H[K[44;142H454,1[9C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [34m/* set defaults */[m[44;142H[K[44;142H453,1[9C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H452,0-1[7C96%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;3H [32mchar[m c;[44;142H[K[44;142H451,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H450,0-1[7C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[32mvoid[m processArgs ([32mint[m argc, [32mchar[m **argv ) {[44;142H[K[44;142H449,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m */[m[44;142H[K[44;142H448,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m * Process the arguments.[m[44;142H[K[44;142H447,1[9C95%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[1;1H[34m/*[m[44;142H[K[44;142H446,1[9C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H445,0-1[7C94%[1;1H[?12l[?25h[?25l[1;43r[1;1H[L[1;44r[44;142H[K[44;142H444,0-1[7C94%[1;1H[?12l[?25h[?25l[44;144H5[2;1H[?12l[?25h[?25l[44;144H6,1  [3;1H[?12l[?25h[?25l[44;144H7[4;1H[?12l[?25h[?25l[44;144H6[3;1H[?12l[?25h[?25l[44;144H7[4;1H[?12l[?25h[?25l[44;144H8[5;1H[?12l[?25h[?25l[44;144H9[6;1H[?12l[?25h[?25l[44;146H6[6;6H[?12l[?25h[?25l[44;1H/\<processArgs\>[44;142H[K[44;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H[32mint[m verbose = [31m0[m;
3856[32mint[m continuous = [31m0[m;
3857[32mint[m shortrun = [31m1[m;
3858[32mint[m no_sata_flg = [31m0[m;
3859
3860[32mFILE[m * log_file;
3861WINDOW *w;
3862
3863[34m/* Function declarations */[m
3864[32mvoid[m mainContinuous([32mvoid[m);
3865[32mvoid[m mainOneShot([32mvoid[m);
3866[34m//void init_work(void);[m
3867[32mvoid[m reset_tests([32mvoid[m);
3868[34m//void show_stats (int loop_iter);
3869//bool show_status_serial_test(void);
3870//bool show_status_sram_test(void);
3871//bool show_status_dram_test(void);
3872//bool show_status_mii_test(void);
3873//bool show_status_phy_test(void);
3874//bool show_status_reg_test(void);
3875//void sram_sw_test(SW_TEST_EFFORT_LEVEL );[m
3876[32mvoid[m processArgs ([32mint[m, [32mchar[m **);
3877[32mvoid[m usage ([32mchar[m*);
3878[32mvoid[m run_continuous([32mvoid[m);
3879[32mvoid[m reset_continuous([32mvoid[m);
3880[32mvoid[m stop_continuous([32mvoid[m);
3881[32mvoid[m sigint_handler([32mint[m signum);
3882[32mvoid[m reset_board([32mvoid[m);
3883[32mvoid[m title_bar([32mvoid[m);
3884[32mvoid[m clear_line([32mvoid[m);
3885
3886[35m#define NUM_TESTS [m[31m8[m
3887[34m/* Selftest module interface */[m
3888[32mstruct[m test_module modules[NUM_TESTS] = {
3889  {
3890    [31m"Clock select"[m,
3891    clkResetContinuous,
3892    clkShowStatusContinuous,
3893    clkStopContinuous,
3894    clkGetResult,
3895  },
3896  {
3897    [31m"Register interface"[m,[44;142H75,6[10C11% [31msearch hit BOTTOM, continuing at TOP[m[44;142H[K[44;142H75,6[10C11%[22;6H[?12l[?25h[?25l[44;1H/\<processArgs\>[44;17H[K[44;1H[27m[m[H[2J[1;4H serialGetResult,
3898  },
3899  {
3900    [31m"DMA interface"[m,
3901    dmaResetContinuous,
3902    dmaShowStatusContinuous,
3903    dmaStopContinuous,
3904    dmaGetResult,
3905  },
3906};
3907
3908
3909[34m/*
3910 * Main function
3911 */[m
3912[32mint[m main([32mint[m argc, [32mchar[m *argv[])
3913{
3914  [34m// Set the default device[m
3915  nf2.device_name = DEFAULT_IFACE;
3916
3917  [34m// Process the command line arguments[m
3918  processArgs(argc, argv);
3919
3920  [34m// Check that the interface is valid and open it if possible[m
3921  [38;5;130mif[m (check_iface(&nf2))
3922  {
3923    exit([31m1[m);
3924  }
3925  [38;5;130mif[m (openDescriptor(&nf2))
3926  {
3927    exit([31m1[m);
3928  }
3929
3930  [34m// Verify that the correct device is downloaded[m
3931  [38;5;130mif[m (!checkVirtexBitfile(&nf2, DEVICE_PROJ_DIR,[36;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY,[37;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY)) {
3932    fprintf([31mstderr[m, [31m"[m[35m%s\n[m[31m"[m, getVirtexBitfileErr());
3933    exit([31m1[m);
3934  }
3935  [38;5;130melse[m {
3936    printf(getDeviceInfoStr(&nf2));
3937  }[44;142H156,3[9C28%[22;3H[?12l[?25h[?25l[44;144H7,0-1[23;1H[?12l[?25h[?25l[44;144H8,3  [24;3H[?12l[?25h[?25l[44;144H9[25;3H[?12l[?25h[?25l
3938  [106m{
3939
3940[m  [106m}[m[44;143H60[26;3H[?12l[?25h[?25l{
3941
3942  }[44;144H1[27;3H[?12l[?25h[?25l[26;3H[106m{
3943
3944[m  [106m}[m[44;144H2[28;3H[?12l[?25h[?25l[26;3H{
3945
3946  }[44;144H3[29;3H[?12l[?25h[?25l
3947  [106m{
3948
3949[m  [106m}[m[44;144H4[30;3H[?12l[?25h[?25l{
3950
3951  }[44;144H5[31;3H[?12l[?25h[?25l[30;3H[106m{
3952
3953[m  [106m}[m[44;144H6[32;3H[?12l[?25h[?25l[30;3H{
3954
3955  }[44;144H7,0-1[33;1H[?12l[?25h[?25l[44;144H8,3  [34;3H[?12l[?25h[?25l[44;144H9[35;3H[?12l[?25h[?25l[44;143H70,1-8[36;8H[?12l[?25h[?25l[44;144H1[37;8H[?12l[?25h[?25l[44;144H2,3  [38;3H[?12l[?25h[?25l[44;144H3[39;3H[?12l[?25h[?25l[37;67H[106m{[40;3H}[m[44;144H4[40;3H[?12l[?25h[?25l[37;67H{[40;3H}[44;144H5[41;3H[?12l[?25h[?25l[44;144H6[42;3H[?12l[?25h[?25l[41;8H[106m{
3956
3957[m  [106m}[m[44;144H7[43;3H[?12l[?25h[?25l[1;43r[43;1H
3958[1;44r[40;8H{
3959
3960  }[44;142H[K[44;142H178,0-1[7C28%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3961[1;44r[43;2H [34m// Add a signal handler[m[44;142H[K[44;142H179,3[9C28%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3962[1;44r[43;2H signal([31mSIGINT[m, sigint_handler);[44;142H[K[44;142H180,3[9C29%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3963[1;44r[44;142H[K[44;142H181,0-1[7C29%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3964[1;44r[43;2H [34m// Measure the clock rates[m[44;142H[K[44;142H182,3[9C29%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3965[1;44r[43;2H measureClocks();[44;142H[K[44;142H183,3[9C29%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3966[1;44r[44;142H[K[44;142H184,0-1[7C30%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3967[1;44r[43;2H [34m// Run the appropriate test[m[44;142H[K[44;142H185,3[9C30%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3968[1;44r[43;2H [38;5;130mif[m (continuous) {[44;142H[K[44;142H186,3[9C30%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3969[1;44r[43;4H mainContinuous();[44;142H[K[44;142H187,3[9C30%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3970[1;44r[41;19H[106m{[m
3971
3972  [106m}[m[44;142H[K[44;142H188,3[9C30%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3973[1;44r[40;19H{
3974
3975  }
3976  [38;5;130melse[m [38;5;130mif[m (shortrun) {[44;142H[K[44;142H189,3[9C31%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3977[1;44r[43;4H mainOneShot();[44;142H[K[44;142H190,3[9C31%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3978[1;44r[41;22H[106m{[m
3979
3980  [106m}[m[44;142H[K[44;142H191,3[9C31%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3981[1;44r[40;22H{
3982
3983  }[44;142H[K[44;142H192,0-1[7C31%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3984[1;44r[43;2H [34m// Close the network descriptor[m[44;142H[K[44;142H193,3[9C31%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3985[1;44r[43;2H closeDescriptor(&nf2);[44;142H[K[44;142H194,3[9C32%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3986[1;44r[44;142H[K[44;142H195,0-1[7C32%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3987[1;44r[43;2H [38;5;130mreturn[m [31m0[m;[44;142H[K[44;142H196,3[9C32%[43;3H[?12l[?25h[?25l[1;43r[43;1H
3988[1;44r[43;1H}[44;142H[K[44;142H197,1[9C32%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3989[1;44r[44;142H[K[44;142H198,0-1[7C33%[43;1H[?12l[?25h[?25l[1;43r[43;1H
3990[1;44r[43;1H[34m/*[m[44;142H[K[44;142H199,2[9C33%[43;2H[?12l[?25h[?25l[44;144H8,0-1[42;1H[?12l[?25h[?25l[44;144H7,1  [41;1H[?12l[?25h[?25l[44;144H6,3[40;3H[?12l[?25h[?25l[44;144H5,0-1[39;1H[?12l[?25h[?25l[44;144H4,3  [38;3H[?12l[?25h[?25l[44;144H3[37;3H[?12l[?25h[?25l[44;144H2,0-1[36;1H[?12l[?25h[?25l[33;22H[106m{
3991
3992[m  [106m}[m[44;144H1,3  [35;3H[?12l[?25h[?25l[33;22H{
3993
3994  }[44;144H0[34;3H[?12l[?25h[?25l[44;143H89[33;3H[?12l[?25h[?25l[30;19H[106m{
3995
3996[m  [106m}[m[44;144H8[32;3H[?12l[?25h[?25l[30;19H{
3997
3998  }[44;144H7[31;3H[?12l[?25h[?25l[44;144H6[30;3H[?12l[?25h[?25l[44;144H7[31;3H[?12l[?25h[?25l[30;19H[106m{
3999
4000[m  [106m}[m[44;144H8[32;3H[?12l[?25h[?25l[30;19H{
4001
4002  }[44;144H9[33;3H[?12l[?25h[?25l[44;143H90[34;3H[?12l[?25h[?25l[33;22H[106m{
4003
4004[m  [106m}[m[44;144H1[35;3H[?12l[?25h[?25l[33;22H{
4005
4006  }[44;144H0[34;3H[?12l[?25h[?25l[44;146H4[34;4H[?12l[?25h[?25l[44;146H5[34;5H[?12l[?25h[?25l[44;143H89[33;5H[?12l[?25h[?25l[44;146H8[33;8H[?12l[?25h[?25l[3C[106m([8C)[m[44;146H11[33;11H[?12l[?25h[?25l([8C)[44;147H2[33;12H[?12l[?25h[?25l[44;1H/\<shortrun\>[44;142H[K[44;1H[27m[m[H[2J[1;2H writeReg(&nf2, SERIAL_TEST_CTRL_1_REG, [31m0[m);
4007}
4008
4009
4010[34m/*
4011 * Process the arguments.
4012 */[m
4013[32mvoid[m processArgs ([32mint[m argc, [32mchar[m **argv ) {
4014
4015   [32mchar[m c;
4016
4017   [34m/* set defaults */[m
4018   verbose = [31m0[m;
4019
4020   [34m/* don't want getopt to moan - I can do that just fine thanks! */[m
4021   opterr = [31m0[m;
4022   [38;5;130mwhile[m ((c = getopt (argc, argv, [31m"csi:n"[m)) != -[31m1[m)[18;6H [38;5;130mswitch[m (c)[19;9H {[20;9H [38;5;130mcase[m [31m'c'[m:[21;12H continuous = [31m1[m;[22;12H shortrun = [31m0[m;[23;12H [38;5;130mbreak[m;[24;9H [38;5;130mcase[m [31m's'[m:[25;12H shortrun = [31m1[m;[26;12H continuous = [31m0[m;[27;12H [38;5;130mbreak[m;
4023[34m//       case 'v':
4024//          verbose = 1;
4025//          break;
4026//       case 'l':   /* log file */
4027//          log_file_name = optarg;
4028//          break;[m[34;9H [38;5;130mcase[m [31m'i'[m:   [34m/* interface name */[m[35;12H nf2.device_name = optarg;[36;12H [38;5;130mbreak[m;
4029   [38;5;130mcase[m [31m'n'[m: [34m/* without SATA test */[m[38;6H no_sata_flg = [31m1[m;[39;6H [38;5;130mbreak[m;[40;9H [38;5;130mcase[m [31m'?'[m:[41;12H [38;5;130mif[m (isprint (optopt))[42;15H fprintf ([31mstderr[m, [31m"Unknown option `-[m[35m%c[m[31m'.[m[35m\n[m[31m"[m, optopt);[43;12H [38;5;130melse[m[44;142H463,6-13      94%[22;13H[?12l[?25h[?25l[44;144H4[23;13H[?12l[?25h[?25l[44;144H5[24;13H[?12l[?25h[?25l[44;144H6[25;13H[?12l[?25h[?25l[44;144H7[26;13H[?12l[?25h[?25l[44;144H8[27;13H[?12l[?25h[?25l[44;144H9,8[28;13H[?12l[?25h[?25l[44;143H70[29;13H[?12l[?25h[?25l[44;144H1[30;13H[?12l[?25h[?25l[44;144H2[31;13H[?12l[?25h[?25l[44;144H3[32;13H[?12l[?25h[?25l[44;144H4[33;13H[?12l[?25h[?25l[44;144H5,6[34;13H[?12l[?25h[?25l[44;144H6[35;13H[?12l[?25h[?25l[44;144H7[36;13H[?12l[?25h[?25l[44;144H8,13  [37;13H[?12l[?25h[?25l[44;144H9[38;13H[?12l[?25h[?25l[44;143H80,12[39;12H[?12l[?25h[?25l[44;144H1,6-13[40;13H[?12l[?25h[?25l[44;144H2[41;13H[?12l[?25h[?25l[44;144H1[40;13H[?12l[?25h[?25l[44;144H0,12  [39;12H[?12l[?25h[?25l[44;143H79,13[38;13H[?12l[?25h[?25l[44;144H8[37;13H[?12l[?25h[?25l[44;144H7,6-13[36;13H[?12l[?25h[?25l[44;144H6[35;13H[?12l[?25h[?25l[44;144H5[34;13H[?12l[?25h[?25l[44;144H4,8[33;13H[?12l[?25h[?25l[44;144H3[32;13H[?12l[?25h[?25l[44;144H2[31;13H[?12l[?25h[?25l[44;144H1[30;13H[?12l[?25h[?25l[44;144H0[29;13H[?12l[?25h[?25l[44;143H69[28;13H[?12l[?25h[?25l[44;144H8,6[27;13H[?12l[?25h[?25l[44;144H7[26;13H[?12l[?25h[?25l[44;144H6[25;13H[?12l[?25h[?25l[44;144H5[24;13H[?12l[?25h[?25l[44;144H4[23;13H[?12l[?25h[?25l[44;144H3[22;13H[?12l[?25h[?25l[44;144H2[21;13H[?12l[?25h[?25l[44;1H/\<shortrun\>[44;142H[K[44;1H[141C463,6-13      94%[22;13H[?12l[?25h[?25l[44;142H[K[44;1H[141C466,6-13      94%[25;13H[?12l[?25h[?25l[44;142H[K[44;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H[35m#include [m[31m"selftest_sram.h"[m
4030[35m#include [m[31m"selftest_serial.h"[m
4031[35m#include [m[31m"selftest_phy.h"[m
4032[35m#include [m[31m"selftest_mdio.h"[m
4033[35m#include [m[31m"selftest_reg.h"[m
4034[35m#include [m[31m"selftest_clk.h"[m
4035[35m#include [m[31m"selftest_dma.h"[m
4036
4037[35m#define PATHLEN         [m[31m80[m
4038
4039[35m#define DEFAULT_IFACE   [m[31m"nf2c0"[m
4040[35m#define SELFTEST_VERSION  [m[31m"1.00 alpha"[m
4041
4042[35m#define ONE_SHOT_ITER   [m[31m5[m
4043
4044[32mtypedef[m [32menum[m {LOW = [31m0[m, HIGH = [31m1[m} SW_TEST_EFFORT_LEVEL;
4045
4046[34m/* Global vars */[m
4047[32mstruct[m nf2device nf2;
4048[32mint[m verbose = [31m0[m;
4049[32mint[m continuous = [31m0[m;
4050[32mint[m shortrun = [31m1[m;
4051[32mint[m no_sata_flg = [31m0[m;
4052
4053[32mFILE[m * log_file;
4054WINDOW *w;
4055
4056[34m/* Function declarations */[m
4057[32mvoid[m mainContinuous([32mvoid[m);
4058[32mvoid[m mainOneShot([32mvoid[m);
4059[34m//void init_work(void);[m
4060[32mvoid[m reset_tests([32mvoid[m);
4061[34m//void show_stats (int loop_iter);
4062//bool show_status_serial_test(void);
4063//bool show_status_sram_test(void);
4064//bool show_status_dram_test(void);
4065//bool show_status_mii_test(void);
4066//bool show_status_phy_test(void);
4067//bool show_status_reg_test(void);
4068//void sram_sw_test(SW_TEST_EFFORT_LEVEL );[m
4069[32mvoid[m processArgs ([32mint[m, [32mchar[m **);
4070[32mvoid[m usage ([32mchar[m*);
4071[32mvoid[m run_continuous([32mvoid[m);[44;142H56,5[11C7% [31msearch hit BOTTOM, continuing at TOP[m[44;142H[K[44;142H56,5[11C7%[22;5H[?12l[?25h[?25l[44;1H/\<shortrun\>[44;14H[K[44;1H[27m[m[H[2J[1;2H [34m// Verify that the correct device is downloaded[m
4072  [38;5;130mif[m (!checkVirtexBitfile(&nf2, DEVICE_PROJ_DIR,[3;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY,[4;24H DEVICE_MAJOR, DEVICE_MINOR, VERSION_ANY)) {
4073    fprintf([31mstderr[m, [31m"[m[35m%s\n[m[31m"[m, getVirtexBitfileErr());
4074    exit([31m1[m);
4075  }
4076  [38;5;130melse[m {
4077    printf(getDeviceInfoStr(&nf2));
4078  }
4079
4080  [34m// Add a signal handler[m
4081  signal([31mSIGINT[m, sigint_handler);
4082
4083  [34m// Measure the clock rates[m
4084  measureClocks();
4085
4086  [34m// Run the appropriate test[m
4087  [38;5;130mif[m (continuous) {
4088    mainContinuous();
4089  }
4090  [38;5;130melse[m [38;5;130mif[m (shortrun) {
4091    mainOneShot();
4092  }
4093
4094  [34m// Close the network descriptor[m
4095  closeDescriptor(&nf2);
4096
4097  [38;5;130mreturn[m [31m0[m;
4098}
4099
4100[34m/*
4101 * "Main" function for continuous mode
4102 */[m
4103[32mvoid[m mainContinuous([32mvoid[m)
4104{
4105  [34m// Set up curses[m
4106  w = initscr();
4107  cbreak();
4108  halfdelay([31m1[m);
4109  noecho();
4110
4111  [34m//init_work(); //initialization. one time effort[m[44;142H189,12[8C35%[22;12H[?12l[?25h[?25l[44;143H90[23;12H[?12l[?25h[?25l[44;146H5 [23;5H[?12l[?25h[?25l[44;1H/\<mainOneShot\>[44;142H[K[44;1H[1;43r[1;1H[13M[1;44r[32;2H [34m// Run the test in continuous mode[m
4112  run_continuous();
4113  stop_continuous();
4114
4115  [34m// End the curses[m
4116  endwin();
4117}
4118
4119[34m/*
4120 * "Main" function for one-shot mode
4121 */[m
4122[32mvoid[m mainOneShot([32mvoid[m)[44;1H[K[44;142H223,6[9C38%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4123[1;44r[43;1H{[44;142H[K[44;142H224,1[9C38%[43;1H[?12l[?25h[?25l[1;43r[43;1H
4124[1;44r[43;2H [32mint[m i;[44;142H[K[44;142H225,6[9C38%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4125[1;44r[43;2H [32mint[m failed = [31m0[m;[44;142H[K[44;142H226,6[9C39%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4126[1;44r[44;142H[K[44;142H227,0-1[7C39%[43;1H[?12l[?25h[?25l[1;43r[43;1H
4127[1;44r[43;2H [34m// Reset the board and initialize the tests[m[44;142H[K[44;142H228,6[9C39%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4128[1;44r[43;2H reset_board();[44;142H[K[44;142H229,6[9C39%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4129[1;44r[43;2H reset_continuous();[44;142H[K[44;142H230,6[9C39%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4130[1;44r[44;142H[K[44;142H231,0-1[7C40%[43;1H[?12l[?25h[?25l[1;43r[43;1H
4131[1;44r[43;2H [34m// Run the test in one-shot mode mode[m[44;142H[K[44;142H232,6[9C40%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4132[1;44r[43;2H printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);[44;142H[K[44;142H233,6[9C40%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4133[1;44r[43;2H printf([31m"Running"[m);[44;142H[K[44;142H234,6[9C40%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4134[1;44r[43;2H fflush([31mstdout[m);[44;142H[K[44;142H235,6[9C40%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4135[1;44r[43;2H [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {[44;142H[K[44;142H236,6[9C41%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4136[1;44r[43;4H sleep([31m1[m);[44;142H[K[44;142H237,6[9C41%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4137[1;44r[43;4H printf([31m"."[m);[44;142H[K[44;142H238,6[9C41%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4138[1;44r[43;4H fflush([31mstdout[m);[44;142H[K[44;142H239,6[9C41%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4139[1;44r[39;39H[106m{[m[43;2H [106m}[m[44;142H[K[44;142H240,3[9C42%[43;3H[?12l[?25h[?25l[1;43r[43;1H
4140[1;44r[38;39H{[42;3H}
4141  printf([31m" "[m);[44;142H[K[44;142H241,6[9C42%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4142[1;44r[44;142H[K[44;142H242,0-1[7C42%[43;1H[?12l[?25h[?25l[1;43r[43;1H
4143[1;44r[43;2H [34m// Verify the results[m[44;142H[K[44;142H243,6[9C42%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4144[1;44r[43;2H [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {[44;142H[K[44;142H244,6[9C42%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4145[1;44r[43;4H [38;5;130mif[m (!modules[i].get_result()) {[44;142H[K[44;142H245,6[9C43%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4146[1;44r[43;6H [38;5;130mif[m (!failed)[44;142H[K[44;142H246,6[9C43%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4147[1;44r[43;8H printf([31m"FAILED. Failing tests: "[m);[44;142H[K[44;142H247,6[9C43%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4148[1;44r[43;6H [38;5;130melse[m[44;142H[K[44;142H248,6[9C43%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4149[1;44r[43;8H printf([31m", "[m);[44;142H[K[44;142H249,6[9C43%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4150[1;44r[43;6H printf(modules[i].name);[44;142H[K[44;142H250,6[9C44%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4151[1;44r[44;142H[K[44;142H251,0-1[7C44%[43;1H[?12l[?25h[?25l[1;43r[43;1H
4152[1;44r[43;6H [34m// Record that the tests have failed[m[44;142H[K[44;142H252,6[9C44%[43;6H[?12l[?25h[?25l[1;43r[43;1H
4153[1;44r[43;6H failed = [31m1[m;[44;142H[K[44;142H253,6[9C44%[43;6H[?12l[?25h[?25l[44;144H2[42;6H[?12l[?25h[?25l[44;144H1,0-1[41;1H[?12l[?25h[?25l[44;144H0,6  [40;6H[?12l[?25h[?25l[44;143H49[39;6H[?12l[?25h[?25l[44;144H8[38;6H[?12l[?25h[?25l[44;144H7[37;6H[?12l[?25h[?25l[44;144H6[36;6H[?12l[?25h[?25l[44;144H5[35;6H[?12l[?25h[?25l[44;144H4[34;6H[?12l[?25h[?25l[44;144H3[33;6H[?12l[?25h[?25l[44;144H2,0-1[32;1H[?12l[?25h[?25l[44;144H1,6  [31;6H[?12l[?25h[?25l[26;39H[106m{[30;3H}[m[44;144H0,3[30;3H[?12l[?25h[?25l[26;39H{[30;3H}[44;143H39,6[29;6H[?12l[?25h[?25l[44;144H8[28;6H[?12l[?25h[?25l[44;144H7[27;6H[?12l[?25h[?25l[44;144H6[26;6H[?12l[?25h[?25l[44;144H5[25;6H[?12l[?25h[?25l[44;144H4[24;6H[?12l[?25h[?25l[44;144H3[23;6H[?12l[?25h[?25l[44;144H2[22;6H[?12l[?25h[?25l[44;144H1,0-1[21;1H[?12l[?25h[?25l[44;144H0,6  [20;6H[?12l[?25h[?25l[44;143H29[19;6H[?12l[?25h[?25l[44;146H3[19;3H[?12l[?25h[?25l[44;1H/\<reset_board\>[44;142H[K[44;1H[27m[m[H[2J[1;1H[34m * Clear a line
4154 */[m
4155[32mvoid[m clear_line([32mvoid[m) {
4156  [32mint[m n;
4157
4158  n = COLS;
4159  [38;5;130mfor[m (; n > [31m0[m; n--)[8;6H addch([31m' '[m);
4160}
4161
4162[34m/*
4163 * Run the program in continuous mode
4164 */[m
4165[32mvoid[m run_continuous([32mvoid[m) {
4166  [32mint[m ch = ERR;
4167  [32mint[m count;
4168  [32mint[m prev_lines;
4169  [32mint[m prev_cols;
4170  [32mint[m i;
4171
4172  [34m// Reset the board and initialize the tests[m
4173  reset_board();
4174  reset_continuous();[26;2H [34m// Run the tests continuously and wait[m
4175  [38;5;130mwhile[m ([31m1[m) {
4176    [34m// Remember the screen dimensions[m
4177    prev_lines = LINES;
4178    prev_cols = COLS;[32;4H [34m// Clear the screen and move to the top corner[m
4179    erase();
4180    move([31m0[m,[31m0[m);[36;4H [34m// Display a title bar[m
4181    title_bar();[39;4H [34m// Display the output of the tests[m
4182    move([31m2[m,[31m0[m);[42;4H [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {[43;6H modules[i].show_status_continuous();[44;142H301,3[9C59%[22;3H[?12l[?25h[?25l[44;1H/\<reset_board\>[44;142H[K[44;1H[27m[m[H[2J[1;4H move(LINES - [31m2[m,[31m0[m);[3;4H [34m// Draw the screen[m
4183    refresh();[6;4H [34m// Sleep for a while, looking for key presses[m
4184    count = [31m0[m;
4185    ch = ERR;
4186    [38;5;130mwhile[m (count < [31m10[m && ch != [31m'q'[m && ch != [31m'Q'[m && prev_lines == LINES && prev_cols == COLS) {[10;6H ch = getch();[11;6H count++;
4187    }
4188    [38;5;130mif[m (ch == [31m'q'[m || ch == [31m'Q'[m) {[14;6H [38;5;130mreturn[m;
4189    }
4190  }
4191}
4192
4193[34m/*
4194 * Reset the board
4195 */[m
4196[32mvoid[m reset_board([32mvoid[m) {
4197   u_int val;
4198
4199   [34m/* Read the current value of the control register so that we can modify
4200    * it to do a reset */[m
4201   readReg(&nf2, CPCI_CTRL_REG, &val);
4202
4203   [34m/* Write to the control register to reset it */[m
4204   writeReg(&nf2, CPCI_CTRL_REG, val | CPCI_CTRL_CNET_RESET);
4205}
4206
4207[34m/*
4208 * Handle SIGINT gracefully
4209 */[m
4210[32mvoid[m sigint_handler([32mint[m signum) {
4211  [38;5;130mif[m (signum == [31mSIGINT[m) {
4212    endwin();[40;4H [38;5;130mif[m (continuous)[41;6H stop_continuous();[43;4H printf([31m"Caught SIGINT. Exiting...[m[35m\n[m[31m"[m);[44;142H354,6[9C70%[22;6H[?12l[?25h[?25l[44;144H5[23;6H[?12l[?25h[?25l[44;1H/\<reset_board\>[44;142H[K[44;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1HWINDOW *w;
4213
4214[34m/* Function declarations */[m
4215[32mvoid[m mainContinuous([32mvoid[m);
4216[32mvoid[m mainOneShot([32mvoid[m);
4217[34m//void init_work(void);[m
4218[32mvoid[m reset_tests([32mvoid[m);
4219[34m//void show_stats (int loop_iter);
4220//bool show_status_serial_test(void);
4221//bool show_status_sram_test(void);
4222//bool show_status_dram_test(void);
4223//bool show_status_mii_test(void);
4224//bool show_status_phy_test(void);
4225//bool show_status_reg_test(void);
4226//void sram_sw_test(SW_TEST_EFFORT_LEVEL );[m
4227[32mvoid[m processArgs ([32mint[m, [32mchar[m **);
4228[32mvoid[m usage ([32mchar[m*);
4229[32mvoid[m run_continuous([32mvoid[m);
4230[32mvoid[m reset_continuous([32mvoid[m);
4231[32mvoid[m stop_continuous([32mvoid[m);
4232[32mvoid[m sigint_handler([32mint[m signum);
4233[32mvoid[m reset_board([32mvoid[m);
4234[32mvoid[m title_bar([32mvoid[m);
4235[32mvoid[m clear_line([32mvoid[m);
4236
4237[35m#define NUM_TESTS [m[31m8[m
4238[34m/* Selftest module interface */[m
4239[32mstruct[m test_module modules[NUM_TESTS] = {
4240  {
4241    [31m"Clock select"[m,
4242    clkResetContinuous,
4243    clkShowStatusContinuous,
4244    clkStopContinuous,
4245    clkGetResult,
4246  },
4247  {
4248    [31m"Register interface"[m,
4249    regResetContinuous,
4250    regShowStatusContinuous,
4251    regStopContinuous,
4252    regGetResult,
4253  },
4254  {[44;142H81,6[10C12% [31msearch hit BOTTOM, continuing at TOP[m[44;142H[K[44;142H81,6[10C12%[22;6H[?12l[?25h[?25l[44;1H/\<reset_board\>[44;17H[K[44;1H[27m[m[H[2J[1;2H noecho();
4255
4256  [34m//init_work(); //initialization. one time effort[m
4257
4258  [34m// Run the test in continuous mode[m
4259  run_continuous();
4260  stop_continuous();
4261
4262  [34m// End the curses[m
4263  endwin();
4264}
4265
4266[34m/*
4267 * "Main" function for one-shot mode
4268 */[m
4269[32mvoid[m mainOneShot([32mvoid[m)
4270{
4271  [32mint[m i;
4272  [32mint[m failed = [31m0[m;
4273
4274  [34m// Reset the board and initialize the tests[m
4275  reset_board();
4276  reset_continuous();
4277
4278  [34m// Run the test in one-shot mode mode[m
4279  printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);
4280  printf([31m"Running"[m);
4281  fflush([31mstdout[m);
4282  [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {
4283    sleep([31m1[m);
4284    printf([31m"."[m);
4285    fflush([31mstdout[m);
4286  }
4287  printf([31m" "[m);
4288
4289  [34m// Verify the results[m
4290  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
4291    [38;5;130mif[m (!modules[i].get_result()) {[39;6H [38;5;130mif[m (!failed)[40;8H printf([31m"FAILED. Failing tests: "[m);[41;6H [38;5;130melse[m[42;8H printf([31m", "[m);[43;6H printf(modules[i].name);[44;142H229,3[9C44%[22;3H[?12l[?25h[?25l[44;143H30[23;3H[?12l[?25h[?25l[44;1H/\<reset_continuous\>[44;142H[K[44;1H[27m[m[H[2J[1;1H[34m */[m
4292[32mvoid[m clear_line([32mvoid[m) {
4293  [32mint[m n;
4294
4295  n = COLS;
4296  [38;5;130mfor[m (; n > [31m0[m; n--)[7;6H addch([31m' '[m);
4297}
4298
4299[34m/*
4300 * Run the program in continuous mode
4301 */[m
4302[32mvoid[m run_continuous([32mvoid[m) {
4303  [32mint[m ch = ERR;
4304  [32mint[m count;
4305  [32mint[m prev_lines;
4306  [32mint[m prev_cols;
4307  [32mint[m i;
4308
4309  [34m// Reset the board and initialize the tests[m
4310  reset_board();
4311  reset_continuous();[25;2H [34m// Run the tests continuously and wait[m
4312  [38;5;130mwhile[m ([31m1[m) {
4313    [34m// Remember the screen dimensions[m
4314    prev_lines = LINES;
4315    prev_cols = COLS;[31;4H [34m// Clear the screen and move to the top corner[m
4316    erase();
4317    move([31m0[m,[31m0[m);[35;4H [34m// Display a title bar[m
4318    title_bar();[38;4H [34m// Display the output of the tests[m
4319    move([31m2[m,[31m0[m);[41;4H [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {[42;6H modules[i].show_status_continuous();
4320    }[44;142H302,3[9C59%[22;3H[?12l[?25h[?25l[44;1H/\<reset_continuous\>[44;142H[K[44;1H[27m[m[H[2J[1;3H writeReg(&nf2, CPCI_CTRL_REG, val | CPCI_CTRL_CNET_RESET);
4321}
4322
4323[34m/*
4324 * Handle SIGINT gracefully
4325 */[m
4326[32mvoid[m sigint_handler([32mint[m signum) {
4327  [38;5;130mif[m (signum == [31mSIGINT[m) {
4328    endwin();[11;4H [38;5;130mif[m (continuous)[12;6H stop_continuous();[14;4H printf([31m"Caught SIGINT. Exiting...[m[35m\n[m[31m"[m);
4329    exit([31m0[m);
4330  }
4331}
4332
4333[34m/*
4334 * Invoke the reset functions for continuous mode
4335 */[m
4336[32mvoid[m reset_continuous([32mvoid[m) {
4337  [32mint[m i;
4338
4339  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
4340    modules[i].reset_continuous();
4341  }
4342}
4343
4344[34m/*
4345 * Invoke the stop functions for continuous mode
4346 */[m
4347[32mvoid[m stop_continuous([32mvoid[m) {
4348  [32mint[m i;
4349
4350  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
4351    modules[i].stop_continuous();
4352  }
4353}
4354
4355[34m//initialize. this is one time effort
4356/*void init_work() {
4357  struct timeval tv;[m[44;142H383,6[9C76%[22;6H[?12l[?25h[?25l[44;144H4[23;6H[?12l[?25h[?25l[44;144H5,0-1[24;1H[?12l[?25h[?25l[44;144H6,6  [25;6H[?12l[?25h[?25l[44;144H7[26;6H[?12l[?25h[?25l[44;1H/\<reset_continuous\>[44;142H[K[44;1H[141C387,16[8C76%[26;16H[?12l[?25h[?25l[44;142H[K[44;1H[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H[32mint[m no_sata_flg = [31m0[m;
4358
4359[32mFILE[m * log_file;
4360WINDOW *w;
4361
4362[34m/* Function declarations */[m
4363[32mvoid[m mainContinuous([32mvoid[m);
4364[32mvoid[m mainOneShot([32mvoid[m);
4365[34m//void init_work(void);[m
4366[32mvoid[m reset_tests([32mvoid[m);
4367[34m//void show_stats (int loop_iter);
4368//bool show_status_serial_test(void);
4369//bool show_status_sram_test(void);
4370//bool show_status_dram_test(void);
4371//bool show_status_mii_test(void);
4372//bool show_status_phy_test(void);
4373//bool show_status_reg_test(void);
4374//void sram_sw_test(SW_TEST_EFFORT_LEVEL );[m
4375[32mvoid[m processArgs ([32mint[m, [32mchar[m **);
4376[32mvoid[m usage ([32mchar[m*);
4377[32mvoid[m run_continuous([32mvoid[m);
4378[32mvoid[m reset_continuous([32mvoid[m);
4379[32mvoid[m stop_continuous([32mvoid[m);
4380[32mvoid[m sigint_handler([32mint[m signum);
4381[32mvoid[m reset_board([32mvoid[m);
4382[32mvoid[m title_bar([32mvoid[m);
4383[32mvoid[m clear_line([32mvoid[m);
4384
4385[35m#define NUM_TESTS [m[31m8[m
4386[34m/* Selftest module interface */[m
4387[32mstruct[m test_module modules[NUM_TESTS] = {
4388  {
4389    [31m"Clock select"[m,
4390    clkResetContinuous,
4391    clkShowStatusContinuous,
4392    clkStopContinuous,
4393    clkGetResult,
4394  },
4395  {
4396    [31m"Register interface"[m,
4397    regResetContinuous,
4398    regShowStatusContinuous,
4399    regStopContinuous,[44;142H78,6[10C11% [31msearch hit BOTTOM, continuing at TOP[m[44;142H[K[44;142H78,6[10C11%[22;6H[?12l[?25h[?25l[44;1H/\<reset_continuous\>[44;22H[K[44;1H[27m[m[H[2J[2;2H [34m//init_work(); //initialization. one time effort[m
4400
4401  [34m// Run the test in continuous mode[m
4402  run_continuous();
4403  stop_continuous();
4404
4405  [34m// End the curses[m
4406  endwin();
4407}
4408
4409[34m/*
4410 * "Main" function for one-shot mode
4411 */[m
4412[32mvoid[m mainOneShot([32mvoid[m)
4413{
4414  [32mint[m i;
4415  [32mint[m failed = [31m0[m;
4416
4417  [34m// Reset the board and initialize the tests[m
4418  reset_board();
4419  reset_continuous();
4420
4421  [34m// Run the test in one-shot mode mode[m
4422  printf([31m"NetFPGA selftest [m[35m%s\n[m[31m"[m, SELFTEST_VERSION);
4423  printf([31m"Running"[m);
4424  fflush([31mstdout[m);
4425  [38;5;130mfor[m (i = [31m0[m; i < ONE_SHOT_ITER; i++) {
4426    sleep([31m1[m);
4427    printf([31m"."[m);
4428    fflush([31mstdout[m);
4429  }
4430  printf([31m" "[m);
4431
4432  [34m// Verify the results[m
4433  [38;5;130mfor[m (i = [31m0[m; i < NUM_TESTS; i++) {
4434    [38;5;130mif[m (!modules[i].get_result()) {[38;6H [38;5;130mif[m (!failed)[39;8H printf([31m"FAILED. Failing tests: "[m);[40;6H [38;5;130melse[m[41;8H printf([31m", "[m);[42;6H printf(modules[i].name);[44;142H230,3[9C44%[22;3H[?12l[?25h[?25l[44;142H[K[44;1H:[?12l[?25hq[?25l[?12l[?25h [?25l[44;1H[K[44;1H[?1l>[?12l[?25h[?1049l]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ pwd
4435/home/netfpga/netfpga/projects/selftest/sw
4436]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ pwdvi selftest.c [5Psudo su -
4437]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# exitls -al[K~netfpga/netfpga/projects/selftest/sw/selftest -ncn
4438Found net device: nf2c0
4439CPCI Information
4440----------------
4441Version: 4 (rev 1)
4442
4443Device (Virtex) Information
4444---------------------------
4445Project directory: selftest
4446Project name: Selftest
4447Project description: NetFPGA selftest -- exercises all major subsystems of the board
4448
4449Device ID: 5
4450Version: 1.1.0
4451Built against CPCI version: 4 (rev 1)
4452
4453[?1049h[1;44r[m(B[4l[?7h[H[2J[0;7m(B    NetFPGA selftest v1.00 alpha                                                                                                                               [3;1H[m(BClock test: pass
4454Reg test: pass
4455MDIO test: pass
4456[6GPhy 1: rev 1   up, 1000Base-TX full
4457[6GPhy 2: rev 1   up, 1000Base-TX full
4458[6GPhy 3: rev 1   up, 1000Base-TX full
4459[6GPhy 4: rev 1   up, 1000Base-TX full
4460PHY test: fail
4461   Port 1: link w/ 4 Good: 10187   Bad: 7129
4462   Port 2: link w/ 4 Good: 10050   Bad: 7268
4463   Port 3: no link Good: 10110   Bad: 7209
4464   Port 4: link w/ 3 Good: 10136   Bad: 7185
4465DRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4466SRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4467SATA Test Disabled
4468DMA test: Iteration(one pkt write, read, compare): 40   Good: 40   Bad: 0 [44d[0;7m(BQ[m(B Quit [A[11;12Hno link Good: 30354   Bad: 77576[K[12;12Hno link Good: 28729   Bad: 79203[K[13;26H29345[13;40H8589[14;12Hno link Good: 29590   Bad: 78345[K[15;23H3[15;33H2[15;51H10.74 Gbps[16;23H34   Good: 33   Bad: 0   B/W: 4.43 Gbps[18;52H8[18;63H8 [43d[11;26H55457[11;39H142845[12;26H52463[12;39H145840[13;26H53620[13;39H144684[14;12Hlink w/ 2 Good: 54014   Bad: 144291[15;23H6[15;33H5[15;52H3.42[16;23H67[16;34H66[18;52H120   Good: 120   Bad: 0 [43d[11;12Hlink w/ 3 Good: 108530   Bad: 180155[12;26H104779   Bad: 183907[13;26H106286   Bad: 182401[14;28H106771   Bad: 181917[15;23H8[15;33H7[15;52H2.53[16;23H100   Good: 99   Bad: 0   B/W: 4.43 Gbps[18;53H6[18;65H6 [43d[11;20H2[11;29H53341[11;42H225742[12;27H48562[12;40H230522[13;27H50487[13;40H228598[14;20H3[14;29H51227[14;42H227859[15;23H10   Good: 9   Bad: 0   B/W: 9.66[16;24H34[16;35H133   Bad: 0   B/W: 3.57 Gbps[18;52H20[18;64H20 [43d[11;20H4[11;29H72497[11;43H96979[12;27H6609[12;40H303385[13;27H68839[13;40H300639[14;12Hno link Good: 169723   Bad: 299757[K[15;24H3[15;34H12   Bad: 0   B/W: 10.74 Gbps[16;24H67[16;36H66[16;57H71[18;53H4[18;65H4 [43d[11;12Hno link Good: 211272   Bad: 348601[K[12;12Hlink w/ 4 Good: 203832   Bad: 356042[13;26H207000[13;41H52876[14;12Hlink w/ 1 Good: 208196   Bad: 351681[15;24H5[15;35H4[16;23H200[16;36H99[16;57H82[18;53H8[18;65H8 [43d[11;12Hlink w/ 2 Good: 264351   Bad: 385917[12;12Hno link Good: 256176   Bad: 394093[K[13;27H59669[13;41H90601[14;20H2[14;29H60992[14;43H89280[15;24H7[15;35H6[16;24H33[16;35H232[16;58H9[18;52H32[18;64H32 [43d[11;12Hno link Good: 291105   Bad: 449561[K[12;27H81464[12;40H459204[13;27H85535[13;40H455134[14;12Hno link Good: 286984   Bad: 453686[K[15;23H20[15;35H9[15;54H1.33[16;24H66[16;36H65[16;57H95[18;53H6[18;65H6 [43d[11;26H310304[11;40H520758[12;27H99072[12;40H531991[13;12Hlink w/ 1 Good: 303814   Bad: 527250[14;26H305503[14;40H525563[15;24H2[15;34H21[15;56H27[16;24H99[16;36H98[16;55H4.00[18;52H40[18;64H40 [43d[11;27H6267[11;41H58784[12;12Hlink w/ 3 Good: 350792   Bad: 570667[13;20H4[13;29H55877[13;43H65583[14;27H57678[14;41H63784[15;24H5[15;35H4[15;56H71[16;23H332[16;35H331[16;58H4[18;53H4[18;65H4 [43d[11;26H409550[11;40H602296[12;12Hno link Good: 396727   Bad: 615120[K[13;28H402278[13;42H609571[14;26H404149[14;40H607701[15;24H7[15;35H6[15;56H63[16;24H66[16;36H65[16;58H8[18;53H8[18;65H8 [43d[11;27H28639[11;41H73611[12;26H414364[12;41H87887[13;20H1[13;29H20333[13;43H81919[14;12Hlink w/ 3 Good: 422673   Bad: 679580[15;24H9[15;35H8[15;56H56[16;24H99[16;36H98[16;57H11[18;52H52[18;64H52 [43d[11;27H56468[11;40H736177[12;27H40915[12;40H751731[13;12Hno link Good: 447453   Bad: 745194[K[14;12Hno link Good: 450012   Bad: 742636[K[15;23H32[15;34H31[15;56H10[16;23H432[16;35H431[16;55H3.86[18;53H6[18;65H6 [43d[11;26H50947[11;41H73558[12;12Hlink w/ 1 Good: 493300   Bad: 789738[13;12Hlink w/ 1 Good: 500140   Bad: 782899[14;12Hlink w/ 2 Good: 502784   Bad: 780256[15;24H4[15;35H3[15;56H07[16;24H65[16;36H64[16;58H9[18;52H60[18;64H60 [43d[11;12Hlink w/ 3 Good: 542714   Bad: 830723[12;20H3[28G525238[12;42H848200[13;12Hno link Good: 532562   Bad: 840877[K[14;12Hno link Good: 535390   Bad: 838050[K[15;24H6[15;35H5[15;57H5[16;24H98[16;36H97[16;57H92[18;53H4[18;65H4 [43d[11;20H2[11;29H63607[11;42H900226[12;12Hno link Good: 544878   Bad: 918956[K[13;12Hlink w/ 1 Good: 552821   Bad: 911015[14;27H55944[14;40H907893[15;24H9[15;35H8[15;56H33[16;23H531[16;35H530[16;58H5[18;53H8[18;65H8 [43d[11;12Hno link Good: 589948   Bad: 964283[K[12;12Hlink w/ 3 Good: 569839   Bad: 984394[13;12Hno link Good: 578276   Bad: 975958[K[14;27H81589[14;41H72646[15;23H41[15;34H40[15;57H0[16;24H64[16;36H63[16;58H8[18;52H72[18;64H72 [43d[11;26H609041[11;40H1035587[12;12Hno link Good: 587472   Bad: 1057158[K[13;27H96548[13;40H1048083[14;12Hlink w/ 3 Good: 600052   Bad: 1044580[15;24H4[15;35H3[15;56H54[16;24H98[16;36H97[16;55H4.01[18;53H6[18;65H6 [43d[11;12Hlink w/ 3 Good: 661762   Bad: 1073261[12;26H639537[12;42H95487[13;26H648890[13;42H86135[14;20H2[14;29H5257[14;44H82455[15;24H6[15;35H5[15;57H0[16;23H631[16;35H630[16;58H3[18;52H80[18;64H80 [43d[11;12Hno link Good: 708300   Bad: 1117120[K[12;27H85329[12;41H140092[13;12Hlink w/ 1 Good: 694944   Bad: 1130478[14;12Hno link Good: 698679   Bad: 1126744[K[15;24H8[15;35H7[15;56H47[16;24H64[16;36H63[16;58H4[18;53H4[18;65H4 [43d[11;12Hlink w/ 3 Good: 727362   Bad: 1188455[12;26H702901[12;41H212917[13;20H2[28G713123[13;43H202696[14;26H717223[14;42H98598[15;23H51[15;34H50[15;56H6[16;24H97[16;36H96[16;58H6[18;53H8[18;65H8 [43d[11;20H4[11;29H5457[11;43H251639[12;12Hlink w/ 4 Good: 728623   Bad: 1277589[13;20H1[13;29H39309[13;44H66904[14;27H43789[14;41H262425[15;24H3[15;35H2[15;56H1[16;23H730[16;35H729[16;55H3.91[18;52H92[18;64H92 [43d[11;12Hno link Good: 807609   Bad: 1288999[K[12;12Hno link Good: 780960   Bad: 1315649[K[13;20H4[13;29H9197[13;43H304632[14;27H96586[14;41H300026[15;24H5[15;35H4[15;57H5[16;24H63[16;36H62[16;58H3[18;53H6[18;65H6 [43d[11;27H40441[11;41H346563[12;26H812575[12;42H74430[13;12Hno link Good: 824013   Bad: 1362993[K[14;26H828890[14;42H58117[15;24H8[15;35H7[15;56H33[16;24H96[16;36H95[16;58H5[18;52H1000   Good: 1000   Bad: 0 [43d[11;27H59545[11;41H417855[12;27H30203[12;41H447198[13;12Hlink w/ 4 Good: 842184   Bad: 1435219[14;12Hlink w/ 3 Good: 847378   Bad: 1430026[15;23H60[15;35H9[15;57H1[16;23H830[16;35H829[16;58H7
4469
4470[54G4[18;67H4 [43d[11;26H905770[11;42H62026[12;27H75530[12;42H92267[13;20H2[13;29H87795[13;44H80003[14;29H93257[14;44H74543[15;24H3[15;34H62[15;56H48[16;24H63[16;36H62[16;58H9
4471
4472[54G8[18;67H8 [43d[11;27H58958[11;42H99233[12;26H927868[12;41H530325[13;12Hno link Good: 940506   Bad: 1517688[K[14;12Hno link Good: 946070   Bad: 1512126[K[15;24H5[15;35H4[15;57H5[16;24H96[16;36H95[16;55H4.00[18;53H12[18;66H12 [43d[11;12Hlink w/ 3 Good: 978182   Bad: 1570401[12;27H45407[12;41H603177[13;27H5869[13;42H89889[14;27H64582[14;42H84004[15;24H7[15;35H6[15;57H3[16;23H929[16;35H928[16;58H2
4473
4474[54G6[18;67H6 [43d[11;20H2[28G1004029   Bad: 1634957[12;27H69950[12;42H6903[13;12Hlink w/ 4 Good: 983814   Bad: 1655174[14;12Hlink w/ 3 Good: 990054   Bad: 1648935[15;23H70[15;35H9[15;56H58[16;24H62[16;36H61[16;58H3[18;53H20[18;66H20 [43d[11;30H57120[11;45H72262[12;12Hlink w/ 4 Good: 1022328   Bad: 1707055[13;20H1[28G1036480   Bad: 1692904[14;12Hno link Good: 1042795   Bad: 1686590[K[15;24H2[15;34H71[15;57H5[16;24H95[16;36H94[16;58H4
4475
4476[54G4[18;67H4 [43d[11;20H3[11;29H10107[11;44H718708[12;12Hno link Good: 1065288   Bad: 1754491[K[13;12Hno link Good: 1079883   Bad: 1739897[K[14;28H86307[14;42H733474[15;24H4[15;35H3[15;56H20[16;23H1028   Good: 1027   Bad: 0   B/W: 3.94 Gbps[18;54H8[18;67H8 [43d[11;12Hno link Good: 1120144   Bad: 1790030[K[12;12Hlink w/ 3 Good: 1082899   Bad: 1827276[13;28H98135[13;42H812042[14;27H104830[14;42H805348[15;24H7[15;35H6[15;56H33[16;25H62[16;38H61[16;60H6[18;53H32[18;66H32 [43d[11;28H59809[11;42H840758[12;20H1[12;29H121491[12;45H79077[13;12Hlink w/ 1 Good: 1137227   Bad: 1863342[14;12Hlink w/ 2 Good: 1144086   Bad: 1856484[15;24H9[15;35H8[15;57H2[16;25H95[16;38H94[16;60H7[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 1212857   Bad: 1878109[12;20H3[12;30H73864[12;44H917103[13;12Hno link Good: 1189954   Bad: 1901014[K[14;20H3[14;30H96847[14;45H94122[15;23H82[15;34H81[15;56H44[16;24H128[16;37H127[16;60H8[18;53H40[18;66H40 [43d[11;12Hno link Good: 1238565   Bad: 1942792[K[12;12Hno link Good: 1198336   Bad: 1983022[K[13;12Hlink w/ 1 Good: 1214971   Bad: 1966388[14;12Hno link Good: 1221913   Bad: 1959447[K[15;24H4[15;35H3[15;57H3[16;25H61[16;38H60[16;60H9[18;54H4[18;67H4 [43d[11;28H5789[11;41H2013863[12;27H216239[12;41H2055520[13;12Hno link Good: 1233431   Bad: 2038329[K[14;12Hlink w/ 3 Good: 1240775   Bad: 2030986[15;24H6[15;35H5[15;57H1[16;25H94[16;38H93[16;57H4.00[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 1310997   Bad: 2051156[12;12Hlink w/ 3 Good: 1268563   Bad: 2093591[13;12Hlink w/ 2 Good: 1286136   Bad: 2076019[14;30H93568[14;45H68588[15;24H9[15;35H8[15;56H52[16;24H227[16;37H226[16;60H1[18;53H52[18;66H52 [43d[11;12Hno link Good: 1356935   Bad: 2095614[K[12;12Hno link Good: 1313594   Bad: 2138956[K[13;29H331667[13;44H120885[14;29H339157[14;44H113396[15;23H91[15;34H90[15;57H0[16;25H60[16;38H59[16;60H2[18;54H6[18;67H6 [43d[11;28H76079[11;42H166867[12;28H31156[12;42H211791[13;12Hno link Good: 1349858   Bad: 2193090[K[14;12Hno link Good: 1357662   Bad: 2185287[K[15;24H3[15;35H2[15;56H49[16;25H94[16;38H93[16;60H4[18;53H60[18;66H60 [43d[11;27H404857[11;42H228485[12;28H58559[12;43H74784[13;28H77910[13;42H255434[14;12Hlink w/ 1 Good: 1385938   Bad: 2247407[15;24H6[15;35H5[15;56H33[16;24H327[16;37H326[16;57H3.95[18;54H4[18;67H4 [43d[11;28H5799[11;43H65741[12;12Hlink w/ 3 Good: 1410843   Bad: 2312896[13;12Hlink w/ 1 Good: 1430618   Bad: 2293122[14;29H438804[14;45H84938[15;24H8[15;35H7[15;57H2[16;25H60[16;38H59[16;60H7[18;54H8[18;67H8 [43d[11;28H90275[11;42H323857[12;12Hno link Good: 1441869   Bad: 2372264[K[13;30H62160[13;44H351975[14;12Hno link Good: 1470538   Bad: 2343598[K[15;23H101   Good: 100   Bad: 0   B/W: 11.42 Gbps[16;25H93[16;38H92[16;60H8[18;53H72[18;66H72 [43d[11;12Hlink w/ 2 Good: 1512054   Bad: 2392477[12;28H62451[12;42H442081[13;30H83253[13;44H421280[14;28H9191[14;42H412616[15;25H3[15;37H2[15;59H1[16;24H426[16;37H425[18;54H6[18;67H6 [43d[11;12Hno link Good: 1537494   Bad: 2457434[K[12;28H86368[12;42H508562[13;12Hno link Good: 1507865   Bad: 2487066[K[14;27H516766[14;43H7816[15;25H5[15;37H4[15;58H39[16;25H59[16;38H58[16;60H9[18;53H80[18;66H80 [43d[11;12Hlink w/ 3 Good: 1557093   Bad: 2528230[12;27H504615[12;43H80709[13;28H26726[13;42H558600[14;28H35871[14;42H54945[15;25H8[15;37H7[15;58H4[16;25H92[16;38H91[16;57H4.00[18;54H4[18;67H4 [43d[11;12Hno link Good: 1610223   Bad: 2565495[K[12;28H56943[12;42H618776[13;28H79414[13;43H96307[14;12Hlink w/ 3 Good: 1588619   Bad: 2587103[15;24H10[15;37H9[15;59H7[16;24H526[16;37H525[16;60H1[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 1655936   Bad: 2610180[12;27H601638[12;43H64479[13;27H624559[13;42H641560[14;12Hno link Good: 1633881   Bad: 2632239[K[15;25H2[15;36H11[15;59H6[16;25H59[16;38H58[16;60H2[18;53H92[18;66H92 [43d[11;12Hno link Good: 1675022   Bad: 2681490[K[12;28H19302[12;42H737212[13;12Hlink w/ 1 Good: 1642866   Bad: 2713649[14;28H52354[14;42H704162[15;25H5[15;37H4[15;58H55[16;25H92[16;38H91[16;60H3[18;54H6[18;67H6 [43d[11;12Hlink w/ 3 Good: 1703966   Bad: 2742942[12;12Hlink w/ 3 Good: 1646949   Bad: 2799961[13;20H2[13;30H70989[13;45H75922[14;28H80860[14;43H6605[15;25H7[15;37H6[15;58H32[16;24H625[16;37H624[16;57H3.96[18;52H200[18;65H200 [43d[11;12Hno link Good: 1757036   Bad: 2780267[K[12;12Hno link Good: 1699281   Bad: 2838023[K[13;20H1[13;29H723682[13;44H813624[14;27H733626[14;42H803681[15;24H20[15;37H9[15;58H41[16;25H58[16;38H57[16;60H7[18;54H4[18;67H4 [43d[11;28H88994[11;42H838706[12;27H730080[12;43H97622[13;12Hno link Good: 1754937   Bad: 2872765[K[14;28H64990[14;43H62714[15;25H2[15;36H21[15;59H0[16;25H91[16;38H90[16;60H8[18;54H8[18;67H8 [43d[11;27H808022[11;42H910071[12;28H4771[12;42H970384[13;12Hlink w/ 4 Good: 1773088   Bad: 2945007[14;28H83475[14;42H934622[15;25H4[15;37H3[15;58H39[16;24H724[16;37H723[16;60H9[18;53H12[18;66H12 [43d[11;28H5515[11;43H53340[12;12Hlink w/ 4 Good: 1793936   Bad: 3014558[13;29H819673[13;45H88822[14;27H830236[14;43H78260[15;25H7[15;37H6[15;58H47[16;25H58[16;38H57[16;57H4.00[18;54H6[18;67H6 [43d[11;12Hlink w/ 3 Good: 1907383   Bad: 2991498[12;12Hno link Good: 1845379   Bad: 3053503[K[13;12Hno link Good: 1871499   Bad: 3027384[K[14;28H82133[14;41H3016751[15;25H9[15;37H8[15;59H5[16;25H91[16;38H90[18;53H20[18;66H20 [43d[11;12Hno link Good: 1926459   Bad: 3062824[K[12;28H63015[12;42H126269[13;28H89826[13;43H99459[14;27H900579[14;43H88708[15;24H32[15;36H31[15;58H53[16;24H824[16;37H823[16;60H1[18;54H4[18;67H4 [43d[11;12Hlink w/ 2 Good: 1953250   Bad: 3126433[12;12Hlink w/ 1 Good: 1888537   Bad: 3191148[13;12Hlink w/ 4 Good: 1915956   Bad: 3163730[14;28H26870[14;42H152817[15;25H4[15;37H3[15;59H2[16;25H57[16;38H56[16;60H2[18;54H8[18;67H8 [43d[11;28H2006276[11;45H63799[12;29H940888[12;44H229189[13;30H68568[13;44H20151[14;12Hlink w/ 3 Good: 1979641   Bad: 3190438[15;25H6[15;37H5[15;59H0[16;25H90[16;38H89[18;53H32[18;66H32 [43d[11;12Hno link Good: 2049328   Bad: 3211142[K[12;20H4[12;30H82952[12;45H7751[13;12Hno link Good: 2011090   Bad: 3249382[K[14;12Hno link Good: 2022275   Bad: 3238199[K[15;25H9[15;37H8[15;58H4[16;24H923[16;37H922[16;57H3.97[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 2068489   Bad: 3282379[12;12Hno link Good: 2000556   Bad: 3350314[K[13;28H29311[13;42H321560[14;12Hlink w/ 2 Good: 2040799   Bad: 3310073[15;24H41[15;36H40[15;58H39[16;25H57[16;38H56[16;60H8[18;53H40[18;66H40 [43d[11;29H109072[11;44H332194[12;12Hlink w/ 3 Good: 2040096   Bad: 3401171[13;12Hlink w/ 4 Good: 2069220   Bad: 3372048[14;30H80984[14;45H60285[15;25H3[15;37H2[15;59H8[16;25H90[16;38H89[18;54H4[18;67H4 [43d[11;12Hno link Good: 2162202   Bad: 3369458[K[12;20H4[12;30H92428[12;45H39234[13;12Hno link Good: 2121894   Bad: 3409769[K[14;20H1[14;29H133739[14;45H9792[15;25H6[15;37H5[15;58H45[16;23H2023[16;36H2022[16;60H9[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 2187025   Bad: 3435032[12;12Hno link Good: 2115876   Bad: 3506182[K[13;28H45931[13;43H76128[14;30H57921[14;44H464140[15;25H8[15;37H7[15;59H4[16;25H56[16;38H55[16;57H4.00[18;53H52[18;66H52 [43d[11;29H207317[11;44H505131[12;28H34698[12;43H77751[13;28H65396[13;42H547054[14;20H3[14;30H77619[14;44H534832[15;24H51[15;36H50[15;58H50[16;25H89[16;38H88[18;54H6[18;67H6 [43d[11;20H4[11;30H60398[11;45H42448[12;12Hlink w/ 1 Good: 2187080   Bad: 3615768[13;12Hlink w/ 2 Good: 2218032   Bad: 3584817[14;12Hno link Good: 2230404   Bad: 3572446[K[15;25H3[15;37H2[15;58H49[16;24H122[16;37H121[16;60H1[18;53H60[18;66H60 [43d[11;20H2[11;29H305470[11;45H87775[12;12Hno link Good: 2231180   Bad: 3662066[K[13;12Hno link Good: 2262554   Bad: 3630694[K[14;28H75047[14;42H618202[15;25H5[15;37H4[15;59H8[16;25H55[16;38H54[16;60H2[18;54H4[18;67H4 [43d[11;12Hno link Good: 2324533   Bad: 3659103[K[12;28H48813[12;42H734825[13;28H80871[13;42H702768[14;28H93481[14;43H90159[15;25H8[15;37H7[15;58H55[16;25H89[16;38H88[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 2352968   Bad: 3721067[12;12Hlink w/ 1 Good: 2275990   Bad: 3798046[13;27H308488[13;43H65549[14;12Hlink w/ 2 Good: 2321491   Bad: 3752547[15;24H60[15;37H9[15;58H38[16;24H222[16;37H221[16;57H3.97[18;53H72[18;66H72 [43d[11;20H3[11;29H406091[11;45H58343[12;12Hno link Good: 2328296   Bad: 3836139[K[13;12Hlink w/ 4 Good: 2361162   Bad: 3803274[14;20H1[14;30H74284[14;45H90153[15;25H2[15;36H61[15;59H7[16;25H55[16;38H54[16;60H8[18;54H6[18;67H6 [43d[11;12Hno link Good: 2437465   Bad: 3817367[K[12;28H58369[12;43H96464[13;12Hno link Good: 2391841   Bad: 3862993[K[14;12Hno link Good: 2405143   Bad: 3849692[K[15;25H5[15;37H4[15;58H43[16;25H88[16;38H87[16;60H9[18;53H80[18;66H80 [43d[11;12Hlink w/ 2 Good: 2460251   Bad: 3884974[12;28H79792[12;42H96543[13;12Hlink w/ 2 Good: 2413780   Bad: 3931448[14;28H27371[14;42H917858[15;25H7[15;37H6[16;24H321[16;37H320[18;54H4[18;67H4 [43d[11;12Hno link Good: 2484747   Bad: 3950875[K[12;27H402837[12;41H4032786[13;12Hno link Good: 2437436   Bad: 3998188[K[14;12Hlink w/ 3 Good: 2451363   Bad: 3984263[15;24H70[15;37H9[15;59H8[16;25H54[16;38H53[16;57H4.00[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 2505316   Bad: 4020703[12;12Hlink w/ 3 Good: 2421927   Bad: 4104093[13;28H57093[13;41H4068929[14;20H1[14;30H7143[14;43H4054590[15;25H2[15;36H71[16;25H87[16;38H86[18;53H92[18;66H92 [43d[11;20H3[11;30H5837[11;45H58037[12;12Hno link Good: 2474294   Bad: 4142120[K[13;12Hlink w/ 1 Good: 2509751   Bad: 4106664[14;20H3[14;29H524188[14;45H92228[15;25H4[15;37H3[15;59H7[16;24H421[16;37H420[16;60H1[18;54H6[18;67H6 [43d[11;12Hno link Good: 2603133   Bad: 4103679[K[12;27H518097[12;43H88717[13;12Hno link Good: 2554037   Bad: 4152778[K[14;20H1[14;30H68541[14;44H138275[15;25H7[15;37H6[15;58H52[16;25H54[16;38H53[16;60H2[18;52H300[18;65H300 [43d[11;28H22265[11;43H74944[12;28H35702[12;42H261508[13;28H72300[13;42H224911[14;20H2[14;30H87087[14;44H21012[15;25H9[15;37H8[15;59H1[16;25H87[16;38H86[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 2652260   Bad: 4235341[12;12Hlink w/ 1 Good: 2564448   Bad: 4323154[13;27H601569[13;43H86034[14;20H3[14;29H616471[14;45H71134[15;24H81[15;36H80[15;58H37[16;24H520[16;37H519[16;57H3.98[18;54H8[18;67H8 [43d[11;20H3[11;29H705255[11;45H72742[12;12Hno link Good: 2616814   Bad: 4361184[K[13;28H54287[13;42H323712[14;12Hno link Good: 2669295   Bad: 4308705[K[15;25H4[15;37H3[15;58H42[16;25H53[16;38H52[18;53H12[18;66H12 [43d[11;12Hno link Good: 2736424   Bad: 4331971[K[12;28H4664[12;42H421752[13;28H84724[13;43H83674[14;28H99867[14;43H68531[15;25H6[15;37H5[16;25H86[16;38H85[16;60H9[18;54H6[18;67H6 [43d[11;28H55496[11;42H403293[12;28H64288[12;43H9450[13;27H703037[13;42H45575[14;27H718439[14;42H440353[15;25H9[15;37H8[15;59H7[16;24H619[16;37H618[18;53H20[18;66H20 [43d[11;27H803487[11;43H45700[12;12Hlink w/ 4 Good: 2711467   Bad: 4537721[13;12Hlink w/ 2 Good: 2750510   Bad: 4498679[14;12Hlink w/ 1 Good: 2766120   Bad: 4483070[15;24H91[15;36H90[15;59H6[16;25H53[16;38H52[16;57H4.00[18;54H4[18;67H4 [43d[11;12Hlink w/ 2 Good: 2854947   Bad: 4484636[12;12Hno link Good: 2762057   Bad: 4577527[K[13;20H4[13;29H80139[13;44H538196[14;12Hno link Good: 2817163   Bad: 4522424[K[15;25H3[15;37H2[15;59H5[16;25H86[16;38H85[18;54H8[18;67H8 [43d[11;12Hno link Good: 2874143   Bad: 4555838[K[12;28H79822[12;42H650160[13;20H2[13;30H19713[13;44H610270[14;28H35715[14;43H94270[15;25H6[15;37H5[15;58H50[16;24H719[16;37H718[16;60H1[18;53H32[18;66H32 [43d[11;27H901761[11;42H618614[12;12Hlink w/ 1 Good: 2806298   Bad: 4714078[13;12Hno link Good: 2846774   Bad: 4673604[K[14;12Hlink w/ 1 Good: 2862983   Bad: 4657396[15;25H8[15;37H7[16;25H52[16;38H51[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 2954776   Bad: 4655997[12;12Hno link Good: 2858610   Bad: 4752164[K[13;12Hlink w/ 1 Good: 2899473   Bad: 4711303[14;20H3[14;29H915760[14;45H95017[15;23H200[15;37H9[15;58H37[16;25H85[16;38H84[16;57H3.98[18;53H40[18;66H40 [43d[11;20H3[11;30H96845[11;44H704321[12;28H99751[12;42H801416[13;12Hno link Good: 2941067   Bad: 4760101[K[14;12Hno link Good: 2957465   Bad: 4743704[K[15;25H3[15;35H202[15;58H42[16;24H818[16;37H817[18;54H4[18;67H4 [43d[11;20H4[28G3015991[11;45H75575[12;12Hlink w/ 4 Good: 2917348   Bad: 4874219[13;28H59391[13;42H832177[14;12Hlink w/ 2 Good: 2975873   Bad: 4815696[15;25H5[15;37H4[15;59H1[16;25H51[16;38H50[18;54H8[18;67H8 [43d[11;12Hno link Good: 3057370   Bad: 4824590[K[12;30H57813[12;44H92414[13;26H3000330[13;43H81633[14;12Hno link Good: 3016954   Bad: 4865010[K[15;25H8[15;37H7[15;59H6[16;25H85[16;38H84[16;60H9[18;53H52[18;66H52 [43d[11;12Hlink w/ 2 Good: 3110441   Bad: 4861914[12;12Hno link Good: 3010219   Bad: 4962137[K[13;12Hlink w/ 2 Good: 3052961   Bad: 4919397[14;28H69795[14;42H902563[15;24H10[15;37H9[15;59H5[16;24H918[16;37H917[16;57H4.00[18;54H6[18;67H6 [43d[11;12Hno link Good: 3134500   Bad: 4928249[K[12;28H32773[12;41H5029978[13;12Hno link Good: 3076082   Bad: 4986670[K[14;28H93180[14;43H6957[15;25H2[15;36H11[15;59H4[16;25H51[16;38H50[18;53H60[18;66H60 [43d[11;12Hlink w/ 3 Good: 3155634   Bad: 4997517[12;12Hlink w/ 1 Good: 3052529   Bad: 5100623[13;12Hlink w/ 4 Good: 3096449   Bad: 5056704[14;12Hlink w/ 3 Good: 3113849   Bad: 5039305[15;25H5[15;37H4[15;59H9[16;25H84[16;38H83[18;54H4[18;67H4 [43d[11;12Hno link Good: 3208734   Bad: 5034807[K[12;20H4[12;29H104791[12;45H38752[13;12Hno link Good: 3149111   Bad: 5094433[K[14;20H1[14;30H66632[14;45H76913[15;25H7[15;37H6[15;59H8[16;23H3017[16;36H3016[16;60H1[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 3252984   Bad: 5080957[12;20H1[12;30H48070[12;45H8587[13;28H92768[13;42H141175[14;20H3[14;29H210410[14;44H123534[15;25H9[15;37H8[15;59H7[16;25H50[16;38H49[18;53H72[18;66H72 [43d[11;12Hno link Good: 3272024   Bad: 5152314[K[12;12Hno link Good: 3165739   Bad: 5258601[K[13;27H211050[13;42H213291[14;12Hno link Good: 3228771   Bad: 5195571[K[15;24H22[15;36H21[15;59H1[16;25H83[16;38H82[16;57H3.98[18;54H6[18;67H6 [43d[11;27H301375[11;42H213357[12;28H9379[12;42H320934[13;28H39696[13;43H75039[14;28H57647[14;42H257089[15;25H4[15;37H3[15;59H0[16;24H117[16;37H116[18;53H80[18;66H80 [43d[11;28H5450[11;43H50623[12;12Hlink w/ 4 Good: 3246079   Bad: 5359051[13;12Hlink w/ 4 Good: 3292310   Bad: 5312821[14;12Hlink w/ 2 Good: 3310406   Bad: 5294726[15;25H7[15;37H6[15;59H5[16;25H50[16;38H49[16;60H9[18;54H4[18;67H4 [43d[11;12Hlink w/ 2 Good: 3384942   Bad: 5310583[12;12Hno link Good: 3275423   Bad: 5420103[K[13;12Hno link Good: 3322094   Bad: 5373434[K[14;12Hno link Good: 3340325   Bad: 5355204[K[15;25H9[15;37H8[15;59H4[16;25H83[16;38H82[18;54H8[18;67H8 [43d[11;20H3[11;29H408584[11;45H77335[12;12Hlink w/ 3 Good: 3297759   Bad: 5488161[13;12Hlink w/ 4 Good: 3344932   Bad: 5440990[14;12Hlink w/ 1 Good: 3363486   Bad: 5422437[15;24H31[15;36H30[15;59H3[16;24H216[16;37H215[16;57H4.00[18;53H92[18;66H92 [43d[11;12Hno link Good: 3432087   Bad: 5444231[K[12;12Hno link Good: 3319839   Bad: 5556481[K[13;12Hno link Good: 3367870   Bad: 5508451[K[14;12Hno link Good: 3386482   Bad: 5489840[K[15;25H4[15;37H3[15;59H8[16;25H49[16;38H48[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 3453464   Bad: 5513251[12;28H39816[12;42H626900[13;12Hlink w/ 1 Good: 3388550   Bad: 5578167[14;12Hlink w/ 3 Good: 3407437   Bad: 5559281[15;25H6[15;37H5[15;59H7[16;25H82[16;38H81[18;52H400[18;65H400 [43d[11;12Hno link Good: 3506551   Bad: 5550559[K[12;12Hlink w/ 3 Good: 3392163   Bad: 5664948[13;12Hno link Good: 3441159   Bad: 5615953[K[14;20H1[14;30H60180[14;45H96934[15;25H9[15;37H8[15;58H51[16;24H315[16;37H314[16;60H1[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 3550462   Bad: 5597045[12;12Hno link Good: 3435156   Bad: 5712353[K[13;28H84491[13;43H63019[14;12Hno link Good: 3503617   Bad: 5643894[K[15;24H41[15;36H40[15;59H0[16;25H49[16;38H48[18;54H8[18;67H8 [43d[11;12Hno link Good: 3569658   Bad: 5668244[K[12;28H52709[12;43H85194[13;27H502633[13;42H735271[14;28H22373[14;42H715532[15;25H3[15;37H2[15;58H4[16;25H82[16;38H81[16;57H3.98[18;53H12[18;66H12 [43d[11;12Hlink w/ 4 Good: 3600547   Bad: 5727751[12;28H82195[12;42H84610[13;12Hlink w/ 1 Good: 3532678   Bad: 5795623[14;28H52781[14;43H75521[15;25H6[15;37H5[15;59H4[16;24H415[16;37H414[18;54H6[18;67H6 [43d[11;30H53675[11;45H65018[12;12Hlink w/ 1 Good: 3534508   Bad: 5884186[13;20H4[13;30H85340[13;44H833355[14;27H605669[14;42H813027[15;25H8[15;37H7[15;59H3[16;25H48[16;38H47[16;60H9[18;53H20[18;66H20 [43d[11;30H83860[11;44H825231[12;12Hno link Good: 3563448   Bad: 5945644[K[13;12Hno link Good: 3614830   Bad: 5894263[K[14;12Hlink w/ 3 Good: 3635291   Bad: 5873803[15;24H50[15;37H9[16;25H81[16;38H80[18;54H4[18;67H4 [43d[11;12Hno link Good: 3703078   Bad: 5896407[K[12;12Hlink w/ 4 Good: 3581059   Bad: 6018427[13;28H32998[13;42H966489[14;12Hno link Good: 3653858   Bad: 5945631[K[15;25H3[15;36H52[15;59H7[16;24H514[16;37H513[16;57H4.00[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 3751886   Bad: 5937998[12;20H3[12;29H629064[12;45H60821[13;12Hlink w/ 2 Good: 3681406   Bad: 6008480[14;12Hlink w/ 1 Good: 3702424   Bad: 5987464[15;25H5[15;37H4[15;59H6[16;25H47[16;38H46[18;53H32[18;66H32 [43d[11;20H3[11;29H802379[11;45H77895[12;12Hno link Good: 3678689   Bad: 6101586[K[13;12Hno link Good: 3731371   Bad: 6048905[K[14;12Hno link Good: 3752568   Bad: 6027709[K[15;25H8[15;37H7[15;58H50[16;25H81[16;38H80[18;54H6[18;67H6 [43d[11;12Hno link Good: 3821450   Bad: 6049224[K[12;28H96381[12;43H74294[13;12Hlink w/ 1 Good: 3749707   Bad: 6120969[14;28H7104[14;43H9962[15;24H60[15;37H9[15;58H49[16;24H614[16;37H613[16;60H1[18;53H40[18;66H40 [43d[11;12Hlink w/ 3 Good: 3850011   Bad: 6111060[12;27H723733[12;42H237339[13;20H2[13;30H77581[13;45H83492[14;12Hlink w/ 1 Good: 3799391   Bad: 6161683[15;25H2[15;36H61[16;25H47[16;38H46[18;54H4[18;67H4 [43d[11;29H903103[11;45H48362[12;28H7606[12;43H75403[13;29H830278[13;44H221190[14;20H2[14;29H852226[14;45H9924[15;25H5[15;37H4[15;59H3[16;25H80[16;38H79[16;57H3.98[18;54H8[18;67H8 [43d[11;20H4[11;30H46549[11;45H95313[12;27H818545[12;42H323318[13;12Hno link Good: 3873324   Bad: 6268540[K[14;12Hno link Good: 3895212   Bad: 6246653[K[15;25H7[15;37H6[15;59H2[16;24H713[16;37H712[16;60H9[18;53H52[18;66H52 [43d[11;12Hno link Good: 3965681   Bad: 6266578[K[12;28H36149[12;43H96111[13;28H91445[13;42H340816[14;12Hlink w/ 3 Good: 3913779   Bad: 6318484[15;25H9[15;37H8[16;25H46[16;38H45[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 4007808   Bad: 6314846[12;28H77603[12;42H445052[13;27H933249[13;43H89407[14;12Hno link Good: 3955778   Bad: 6366879[K[15;24H72[15;36H71[15;59H6[16;25H79[16;38H78[18;53H60[18;66H60 [43d[11;12Hno link Good: 4060877   Bad: 6352173[K[12;12Hlink w/ 4 Good: 3929900   Bad: 6483151[13;28H85933[13;42H427119[14;12Hlink w/ 1 Good: 4008536   Bad: 6404518[15;25H4[15;37H3[15;59H5[16;24H813[16;37H812[16;57H4.00[18;54H4[18;67H4 [43d[11;28H8392[11;42H419520[12;12Hno link Good: 3951368   Bad: 6552080[K[13;26H4008149[13;43H95301[14;12Hno link Good: 4030961   Bad: 6472490[K[15;25H7[15;37H6[15;59H9[16;25H46[16;38H45[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 4105907   Bad: 6487937[12;28H72012[12;42H621834[13;12Hlink w/ 4 Good: 4029220   Bad: 6564627[14;12Hlink w/ 1 Good: 4052513   Bad: 6541335[15;25H9[15;37H8[15;59H8[16;25H79[16;38H78[18;53H72[18;66H72 [43d[11;20H2[11;30H59001[11;44H525238[12;12Hlink w/ 4 Good: 4024372   Bad: 6659869[13;12Hno link Good: 4081875   Bad: 6602367[K[14;29H105281[14;45H78962[15;24H81[15;36H80[16;24H912[16;37H911[16;60H1[18;54H6[18;67H6 [43d[11;12Hno link Good: 4202324   Bad: 6572310[K[12;12Hno link Good: 4066676   Bad: 6707960[K[13;27H124663[13;43H49974[14;12Hno link Good: 4148150   Bad: 6626488[K[15;25H4[15;37H3[15;58H51[16;25H45[16;38H44[18;53H80[18;66H80 [43d[11;12Hlink w/ 4 Good: 4221452   Bad: 6643580[12;12Hlink w/ 4 Good: 4084307   Bad: 6780727[13;12Hlink w/ 1 Good: 4142985   Bad: 6722050[14;28H66737[14;43H98299[15;25H6[15;37H5[15;58H42[16;25H78[16;38H77[16;57H3.98[18;54H4[18;67H4 [43d[11;12Hno link Good: 4252674   Bad: 6702752[K[12;20H1[12;29H114254[12;44H841174[13;12Hno link Good: 4173470   Bad: 6781959[K[14;28H97440[14;42H757990[15;25H8[15;37H7[15;59H1[16;23H4012[16;36H4011[16;60H9[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 4305757   Bad: 6740068[12;20H3[12;30H66636[12;45H79190[13;12Hlink w/ 4 Good: 4226233   Bad: 6819594[14;12Hlink w/ 3 Good: 4250194   Bad: 6795634[15;24H91[15;36H90[15;59H5[16;25H45[16;38H44[18;53H92[18;66H92 [43d[11;12Hno link Good: 4335356   Bad: 6800865[K[12;12Hno link Good: 4195022   Bad: 6941200[K[13;12Hno link Good: 4255111   Bad: 6881112[K[14;12Hno link Good: 4279205   Bad: 6857019[K[15;25H3[15;37H2[15;59H4[16;25H78[16;38H77[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 4359876   Bad: 6866739[12;12Hlink w/ 4 Good: 4218196   Bad: 7008420[13;28H78752[13;42H947865[14;27H30329[14;42H923323[15;25H6[15;37H5[15;59H8[16;24H111[16;37H110[16;57H4.00[18;52H500[18;65H500 [43d[11;12Hno link Good: 4382603   Bad: 6934409[K[12;12Hno link Good: 4239596   Bad: 7077417[K[13;27H300675[13;41H7016340[14;28H25378[14;43H91638[15;25H8[15;37H7[15;59H7[16;25H44[16;38H43[18;54H4[18;67H4 [43d[11;27H404969[11;41H7002437[12;12Hlink w/ 1 Good: 4260490   Bad: 7146918[13;12Hlink w/ 4 Good: 4322209   Bad: 7085200[14;12Hlink w/ 3 Good: 4347203   Bad: 7060207[15;23H300[15;37H9[16;25H77[16;38H76[18;54H8[18;67H8 [43d[11;28H58090[11;43H39713[12;12Hno link Good: 4312820   Bad: 7184984[K[13;30H74873[13;44H122932[14;20H2[14;29H400066[14;45H97741[15;25H3[15;35H302[15;58H50[16;24H210[16;37H209[16;60H1[18;53H12[18;66H12 [43d[11;27H50124[11;43H86962[12;28H54799[12;42H23340[13;12Hno link Good: 4417269   Bad: 7170935[K[14;12Hno link Good: 4442525   Bad: 7145681[K[15;25H5[15;37H4[15;58H49[16;25H44[16;38H43[18;54H6[18;67H6 [43d[11;28H20299[11;42H158299[12;28H72512[12;42H306087[13;28H3552[13;42H243071[14;28H61069[14;42H217533[15;25H7[15;37H6[15;59H1[16;25H77[16;38H76[16;57H3.99[18;53H20[18;66H20 [43d[11;28H52048[11;42H216944[12;27H402984[12;43H66009[13;12Hlink w/ 4 Good: 4466433   Bad: 7302562[14;28H92198[14;43H76798[15;24H10[15;37H9[15;59H4[16;24H310[16;37H309[18;54H4[18;67H4 [43d[11;27H60510[11;43H54280[12;12Hlink w/ 4 Good: 4455349   Bad: 7404041[13;12Hno link Good: 4519095   Bad: 7340296[K[14;12Hlink w/ 3 Good: 4544958   Bad: 7314434[15;25H2[15;36H11[16;25H43[16;38H42[18;54H8[18;67H8 [43d[11;28H34565[11;42H31522[12;12Hno link Good: 4483411   Bad: 7466375[K[13;28H47638[13;42H402149[14;12Hno link Good: 4573755   Bad: 7376033[K[15;25H5[15;37H4[15;59H7[16;25H76[16;38H75[18;53H32[18;66H32 [43d[11;28H53667[11;43H86515[12;27H501038[12;42H53914[13;28H65974[13;43H74210[14;28H92288[14;42H447897[15;25H7[15;37H6[15;59H6[16;24H409[16;37H408[16;57H4.00[18;54H6[18;67H6 [43d[11;27H703322[11;42H427256[12;28H49964[12;43H8061[13;27H61521[13;42H515366[14;27H64169[14;43H88884[15;25H9[15;37H8[16;25H42[16;38H41[18;53H40[18;66H40 [43d[11;28H52889[11;43H68084[12;28H98698[12;42H622276[13;12Hlink w/ 1 Good: 4664344   Bad: 7556632[14;28H90906[14;42H530071[15;24H22[15;36H21[15;59H9[16;25H76[16;38H75[18;54H4[18;67H4 [43d[11;28H7201[11;42H539352[12;27H616299[12;43H95073[13;12Hno link Good: 4682590   Bad: 7628784[K[14;12Hlink w/ 3 Good: 4709343   Bad: 7602032[15;25H4[15;37H3[15;59H8[16;24H509[16;37H508[16;60H1[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 4801481   Bad: 7600280[12;12Hlink w/ 1 Good: 4644466   Bad: 7757297[13;27H711409[13;43H90355[14;20H1[14;30H38260[14;45H63505[15;25H6[15;37H5[16;25H42[16;38H41[18;53H52[18;66H52 [43d[11;12Hno link Good: 4854518   Bad: 7637646[K[12;30H96838[12;45H9532[13;12Hlink w/ 2 Good: 4764044   Bad: 7728122[14;12Hno link Good: 4791037   Bad: 7701130[K[15;25H9[15;37H8[15;59H3[16;25H75[16;38H74[16;57H3.99[18;54H6[18;67H6 [43d[11;28H95889[11;43H86672[12;12Hno link Good: 4737041   Bad: 7845521[K[13;12Hno link Good: 4804810   Bad: 7777753[K[14;27H83189[14;43H50667[15;24H31[15;36H30[16;24H608[16;37H607[18;53H60[18;66H60 [43d[11;12Hlink w/ 4 Good: 4915084   Bad: 7757869[12;28H5471[12;42H918244[13;12Hlink w/ 4 Good: 4823174   Bad: 7849782[14;28H50364[14;42H822593[15;25H4[15;37H3[15;59H6[16;25H41[16;38H40[18;54H4[18;67H4 [43d[11;20H2[11;30H58220[11;44H80512[12;12Hlink w/ 1 Good: 4796879   Bad: 7966471[13;30H65729[13;45H9762[14;12Hlink w/ 2 Good: 4893288   Bad: 7870064[15;25H6[15;37H5[16;25H74[16;38H73[18;54H8[18;67H8 [43d[11;28H5011297[11;45H4244[12;12Hno link Good: 4849294   Bad: 8004453[K[13;12Hno link Good: 4918410   Bad: 7935338[K[14;29H946080[14;44H907669[15;25H8[15;37H7[15;59H5[16;24H708[16;37H707[16;57H4.00[18;53H72[18;66H72 [43d[11;12Hno link Good: 5033528   Bad: 7910607[K[12;28H70013[12;43H7412[13;12Hlink w/ 4 Good: 4939758   Bad: 8004379[14;12Hno link Good: 4967597   Bad: 7976541[K[15;24H41[15;36H40[15;59H8[16;25H41[16;38H40[18;54H6[18;67H6 [43d[11;28H56485[11;43H78053[12;28H91542[12;42H142998[13;12Hno link Good: 4961880   Bad: 8072661[K[14;28H89993[14;41H8044549[15;25H3[15;37H2[16;25H74[16;38H73[18;53H80[18;66H80 [43d[11;12Hlink w/ 2 Good: 5109552   Bad: 8015383[12;12Hlink w/ 4 Good: 4943898   Bad: 8181038[13;12Hlink w/ 1 Good: 5014492   Bad: 8110445[14;12Hlink w/ 1 Good: 5042741   Bad: 8082198[15;25H6[15;37H5[15;58H50[16;24H807[16;37H806[16;60H1[18;54H4[18;67H4 [43d[11;12Hno link Good: 5152057   Bad: 8063275[K[12;12Hno link Good: 4985318   Bad: 8230016[K[13;12Hno link Good: 5056367   Bad: 8158968[K[14;12Hno link Good: 5084814   Bad: 8130522[K[15;25H8[15;37H7[16;25H40[16;38H39[18;54H8[18;67H8 [43d[11;28H71123[11;42H134604[12;26H5002804[12;42H302925[13;28H74614[13;42H231116[14;27H10329[14;42H202437[15;24H50[15;37H9[15;58H42[16;25H73[16;38H72[16;57H3.99[18;53H92[18;66H92 [43d[11;12Hlink w/ 2 Good: 5202162   Bad: 8193958[12;12Hlink w/ 4 Good: 5032626   Bad: 8363495[13;12Hlink w/ 1 Good: 5104998   Bad: 8291124[14;12Hlink w/ 1 Good: 5133857   Bad: 8262266[15;25H3[15;36H52[15;59H5[16;24H906[16;37H905[18;54H6[18;67H6 [43d[11;12Hno link Good: 5255259   Bad: 8231255[K[12;20H3[12;30H85051[12;44H401464[13;30H57671[13;44H328846[14;30H8660[14;45H99911[15;25H5[15;37H4[16;25H40[16;38H39[18;52H600[18;65H600 [43d[11;12Hlink w/ 3 Good: 5284018   Bad: 8292899[12;12Hno link Good: 5112590   Bad: 8464328[K[13;12Hno link Good: 5185631   Bad: 8391288[K[14;12Hno link Good: 5214875   Bad: 8362045[K[15;25H7[15;37H6[15;59H4[16;25H73[16;38H72[16;57H4.00[18;54H4[18;67H4 [43d[11;29H30949[11;44H357813[12;12Hlink w/ 3 Good: 5136730   Bad: 8530582[13;12Hlink w/ 2 Good: 5210315   Bad: 8456998[14;12Hlink w/ 2 Good: 5239940   Bad: 8427375[15;24H60[15;37H9[15;59H7[16;23H5006[16;36H5005[18;54H8[18;67H8 [43d[11;12Hno link Good: 5331344   Bad: 8426364[K[12;12Hno link Good: 5157102   Bad: 8600607[K[13;30H31454[13;44H526256[14;12Hno link Good: 5261231   Bad: 8496480[K[15;25H2[15;36H61[16;25H39[16;38H38[18;53H12[18;66H12 [43d[11;12Hlink w/ 4 Good: 5354505   Bad: 8493594[12;12Hlink w/ 1 Good: 5179039   Bad: 8669062[13;30H53856[13;45H9424[14;12Hlink w/ 1 Good: 5283888   Bad: 8564215[15;25H5[15;37H4[15;58H50[16;25H72[16;38H71[18;54H6[18;67H6 [43d[11;20H2[11;29H407630[11;44H530873[12;12Hno link Good: 5231390   Bad: 8707113[K[13;12Hno link Good: 5306541   Bad: 8631964[K[14;20H3[14;29H336700[14;44H601806[15;25H7[15;37H6[15;58H49[16;24H105[16;37H104[16;60H1[18;53H20[18;66H20 [43d[11;12Hno link Good: 5449828   Bad: 8579071[K[12;28H72529[12;43H56371[13;28H48207[13;43H8069[14;12Hno link Good: 5378440   Bad: 8650462[K[15;25H9[15;37H8[16;25H38[16;38H37[18;54H4[18;67H4 [43d[11;12Hlink w/ 2 Good: 5468900   Bad: 8650394[12;28H90140[12;42H829155[13;28H66515[13;42H752782[14;28H96954[14;42H722344[15;24H72[15;36H71[15;59H5[16;25H72[16;38H71[16;57H3.99[18;54H8[18;67H8 [43d[11;20H3[11;29H50144[11;44H708248[12;12Hlink w/ 4 Good: 5321399   Bad: 8888290[13;12Hlink w/ 2 Good: 5398514   Bad: 8811177[14;12Hlink w/ 3 Good: 5429015   Bad: 8780677[15;25H4[15;37H3[15;59H4[16;24H205[16;37H204[18;53H32[18;66H32 [43d[11;12Hno link Good: 5554552   Bad: 8745531[K[12;20H3[12;30H73695[12;44H9263[13;20H1[13;29H451189[13;45H4889[14;12Hno link Good: 5481745   Bad: 8818342[K[15;25H6[15;37H5[16;25H38[16;38H37[18;54H6[18;67H6 [43d[11;28H82966[11;42H807516[12;12Hno link Good: 5400824   Bad: 8989659[K[13;20H2[13;30H78922[13;44H911563[14;27H509591[14;43H80895[15;25H9[15;37H8[15;59H7[16;25H71[16;38H70[16;57H4.00[18;53H40[18;66H40 [43d[11;27H602078[11;43H78797[12;28H18438[12;41H9062438[13;12Hno link Good: 5497205   Bad: 8983673[K[14;28H2808[14;42H952798[15;24H81[15;36H80[15;59H6[16;24H304[16;37H303[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 5652744   Bad: 8918531[12;28H68269[12;42H103007[13;12Hlink w/ 4 Good: 5547341   Bad: 9023937[14;28H78473[14;43H92805[15;25H4[15;37H3[15;59H9[16;25H37[16;38H36[18;54H8[18;67H8 [43d[11;12Hno link Good: 5701530   Bad: 8960139[K[12;12Hlink w/ 3 Good: 5516033   Bad: 9145637[13;12Hno link Good: 5595518   Bad: 9066154[K[14;27H626770[14;41H9034902[15;25H6[15;37H5[15;59H8[16;25H70[16;38H69[18;53H52[18;66H52 [43d[11;28H20579[11;41H9031487[12;12Hno link Good: 5533613   Bad: 9218455[K[13;27H613744[13;42H138325[14;28H45254[14;42H106816[15;25H8[15;37H7[16;24H404[16;37H403[16;60H1[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 5750794   Bad: 9091670[12;28H62802[12;43H79663[13;12Hlink w/ 1 Good: 5643384   Bad: 9199082[14;28H75077[14;43H67390[15;24H91[15;36H90[15;58H50[16;25H37[16;38H36[18;53H60[18;66H60 [43d[11;29H803891[11;44H128968[12;12Hlink w/ 1 Good: 5615056   Bad: 9317804[13;30H96068[13;44H236793[14;27H727805[14;42H205057[15;25H3[15;37H2[15;58H44[16;25H70[16;38H69[16;57H3.99[18;54H4[18;67H4 [43d[11;20H4[11;30H43286[11;45H79[12;30H53255[12;45H70000[13;12Hno link Good: 5734844   Bad: 9288412[K[14;28H66726[14;43H56531[15;25H5[15;37H4[15;59H3[16;24H503[16;37H502[18;54H8[18;67H8 [43d[11;12Hno link Good: 5862401   Bad: 9251247[K[12;12Hno link Good: 5670989   Bad: 9442660[K[13;12Hlink w/ 1 Good: 5753079   Bad: 9360572[14;28H85387[14;42H328265[15;25H8[15;37H7[15;59H6[16;25H36[16;38H35[18;53H72[18;66H72 [43d[11;12Hlink w/ 3 Good: 5906510   Bad: 9297534[12;12Hlink w/ 4 Good: 5714105   Bad: 9489940[13;12Hno link Good: 5796546   Bad: 9407500[K[14;27H829160[14;43H74887[15;23H400[15;37H9[16;25H69[16;38H68[16;57H4.00[18;54H6[18;67H6 [43d[11;12Hno link Good: 5959581   Bad: 9334856[K[12;12Hno link Good: 5766444   Bad: 9527994[K[13;27H849245[13;43H45194[14;12Hlink w/ 3 Good: 5881935   Bad: 9412505[15;25H3[15;35H402[15;59H8[16;24H602[16;37H601[18;53H80[18;66H80 [43d[11;28H80819[11;42H404020[12;28H86249[12;43H98591[13;28H69758[13;42H515083[14;12Hno link Good: 5902568   Bad: 9482274[K[15;25H5[15;37H4[16;25H36[16;38H35[18;54H4[18;67H4 [43d[11;26H6004651[11;43H70584[12;12Hlink w/ 3 Good: 5808677   Bad: 9666560[13;12Hlink w/ 1 Good: 5892720   Bad: 9582518[14;28H25966[14;42H549273[15;25H7[15;37H6[15;59H7[16;25H69[16;38H68[18;54H8[18;67H8 [43d[11;28H5768[11;42H507950[12;12Hno link Good: 5860989   Bad: 9704643[K[13;29H945329[13;44H620304[14;28H78724[14;43H86910[15;24H10[15;37H9[15;58H50[16;24H702[16;37H701[16;60H1[18;53H92[18;66H92 [43d[11;28H99298[11;43H5673[12;12Hlink w/ 4 Good: 5901474   Bad: 9754555[13;12Hno link Good: 5986383   Bad: 9669647[K[14;26H6019842[14;42H636189[15;25H2[15;36H11[15;58H49[16;25H35[16;38H34[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 6118428   Bad: 9627996[12;12Hno link Good: 5919096   Bad: 9827329[K[13;12Hlink w/ 2 Good: 6004638   Bad: 9741788[14;28H38414[14;42H708013[15;25H4[15;37H3[15;59H3[16;25H68[16;38H67[16;57H3.99[18;52H700[18;65H700 [43d[11;20H3[11;30H51406[11;45H85414[12;12Hlink w/ 1 Good: 5950918   Bad: 9885904[13;12Hno link Good: 6036980   Bad: 9799843[K[14;12Hlink w/ 3 Good: 6070919   Bad: 9765905[15;25H7[15;37H6[15;59H5[16;24H801[16;37H800[18;54H4[18;67H4 [43d[11;12Hno link Good: 6204474   Bad: 9722739[K[12;12Hno link Good: 6003286   Bad: 9923929[K[13;12Hlink w/ 4 Good: 6089703   Bad: 9837513[14;12Hno link Good: 6123681   Bad: 9803536[K[15;25H9[15;37H8[16;25H34[16;38H33[18;54H8[18;67H8 [43d[11;28H3246[11;43H85147[12;28H29773[12;43H8783[13;12Hno link Good: 6116732   Bad: 9900881[K[14;28H50995[14;43H66619[15;24H22[15;36H21[15;59H7[16;25H68[16;38H67[16;57H4.00[18;53H12[18;66H12 [43d[11;12Hlink w/ 3 Good: 6258628   Bad: 9849379[12;12Hlink w/ 4 Good: 6054881   Bad: 10053127[13;12Hlink w/ 4 Good: 6142310   Bad: 9965699[14;28H76947[14;42H931063[15;25H4[15;37H3[16;24H901[16;37H900[18;54H6[18;67H6 [43d[11;12Hno link Good: 6279753   Bad: 9918650[K[12;12Hno link Good: 6074359   Bad: 10124045[K[13;30H62478[13;43H10035927[14;12Hlink w/ 1 Good: 6197296   Bad: 10001110[15;25H6[15;37H5[16;25H34[16;38H33[18;53H20[18;66H20 [43d[11;27H303790[11;43H85008[12;12Hlink w/ 1 Good: 6097094   Bad: 10191706[13;12Hno link Good: 6185769   Bad: 10103032[K[14;12Hno link Good: 6220919   Bad: 10067883[K[15;25H9[15;37H8[15;59H9[16;25H67[16;38H66[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 6356841   Bad: 10022353[12;29H149456[12;45H229739[13;12Hlink w/ 4 Good: 6238399   Bad: 10140798[14;28H7370[14;43H105489[15;24H31[15;36H30[16;23H6000[16;38H99[16;60H1[18;54H8[18;67H8 [43d[11;12Hno link Good: 6398230   Bad: 10071362[K[12;12Hno link Good: 6189603   Bad: 10279990[K[13;12Hno link Good: 6279088   Bad: 10190506[K[14;27H314453[14;44H55143[15;25H3[15;37H2[15;59H8[16;25H33[16;36H6032[18;53H32[18;66H32 [43d[11;27H417266[11;43H142717[12;27H207215[12;43H352769[13;28H97372[13;43H262613[14;28H33036[14;43H226950[15;25H6[15;37H5[15;59H5[16;25H66[16;38H65[16;57H3.99[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 6449493   Bad: 10200891[12;28H38423[12;43H411962[13;12Hlink w/ 1 Good: 6328943   Bad: 10321443[14;12Hlink w/ 1 Good: 6364832   Bad: 10285555[15;25H8[15;37H7[15;59H4[16;24H100[16;38H99[18;53H40[18;66H40 [43d[11;20H3[11;29H502607[11;46H38176[12;12Hlink w/ 4 Good: 6290746   Bad: 10450038[13;12Hno link Good: 6381664   Bad: 10359121[K[14;12Hno link Good: 6417641   Bad: 10323146[K[15;24H41[15;36H40[15;59H7[16;25H33[16;37H132[16;57H4.00[18;54H4[18;67H4 [43d[11;20H4[11;30H30208[11;45H300969[12;29H316893[12;45H514286[13;12Hlink w/ 1 Good: 6408553   Bad: 10422627[14;28H44626[14;44H86555[15;25H3[15;37H2[15;59H6[16;25H66[16;38H65[18;54H8[18;67H8 [43d[11;12Hno link Good: 6549313   Bad: 10372258[K[12;12Hno link Good: 6334451   Bad: 10587122[K[13;12Hno link Good: 6426789   Bad: 10494785[K[14;28H63223[14;43H458352[15;25H5[15;37H4[16;25H99[16;38H98[18;53H52[18;66H52 [43d[11;12Hlink w/ 3 Good: 6600856   Bad: 10411113[12;28H85193[12;43H626778[13;28H77904[13;43H534068[14;27H514420[14;44H97553[15;25H8[15;37H7[15;59H8[16;24H232[16;37H231[18;54H6[18;67H6 [43d[11;12Hno link Good: 6648590   Bad: 10453777[K[12;12Hlink w/ 4 Good: 6432155   Bad: 10670213[13;27H525218[13;44H77151[14;28H61782[14;43H540588[15;24H50[15;37H9[16;25H65[16;38H64[18;53H60[18;66H60 [43d[11;28H67697[11;43H525066[12;12Hno link Good: 6449695   Bad: 10743069[K[13;28H43550[13;43H649215[14;28H8037[14;43H612395[15;25H3[15;36H52[15;58H50[16;25H99[16;38H98[16;60H1[18;54H4[18;67H4 [43d[11;28H98913[11;44H84241[12;12Hlink w/ 4 Good: 6479664   Bad: 10803491[13;12Hlink w/ 4 Good: 6574058   Bad: 10709099[14;12Hlink w/ 3 Good: 6611168   Bad: 10671990[15;25H5[15;37H4[16;24H332[16;37H331[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 6752034   Bad: 10621521[12;12Hno link Good: 6531981   Bad: 10841575[K[13;12Hno link Good: 6626702   Bad: 10746855[K[14;30H63940[14;45H709619[15;25H7[15;37H6[15;58H44[16;25H65[16;38H64[16;57H3.99[18;53H72[18;66H72 [43d[11;12Hno link Good: 6790368   Bad: 10673581[K[12;28H6944[12;44H94509[13;28H64528[13;44H99423[14;12Hno link Good: 6701911   Bad: 10762041[K[15;24H60[15;37H9[15;59H6[16;25H98[16;38H97[18;54H6[18;67H6 [43d[11;27H809532[11;43H744814[12;28H86906[12;43H967442[13;28H82745[13;43H871604[14;28H20442[14;43H833908[15;25H2[15;36H61[16;24H431[16;37H430[16;57H4.00[18;53H80[18;66H80 [43d[11;28H54441[11;44H90300[12;12Hlink w/ 3 Good: 6630984   Bad: 11013758[13;12Hlink w/ 4 Good: 6727167   Bad: 10917577[14;12Hlink w/ 1 Good: 6765045   Bad: 10879700[15;25H4[15;37H3[15;59H5[16;25H64[16;38H63[18;54H4[18;67H4 [43d[11;27H907526[11;43H82761[12;12Hno link Good: 6683346   Bad: 11051791[K[13;12Hno link Good: 6779868   Bad: 10955270[K[14;12Hno link Good: 6817877   Bad: 10917262[K[15;25H7[15;37H6[15;59H8[16;25H97[16;38H96[18;54H8[18;67H8 [43d[11;28H2793[11;44H97595[12;27H702255[12;43H123277[13;28H99434[13;42H1026099[14;28H37535[14;44H87999[15;25H9[15;37H8[15;59H7[16;24H531[16;37H530[18;53H92[18;66H92 [43d[11;12Hlink w/ 3 Good: 6952519   Bad: 10963410[12;28H25601[12;44H90329[13;12Hlink w/ 4 Good: 6823279   Bad: 11092653[14;12Hlink w/ 2 Good: 6861659   Bad: 11054274[15;24H72[15;36H71[15;59H9[16;25H64[16;38H63[18;54H6[18;67H6 [43d[11;12Hno link Good: 7005543   Bad: 11000783[K[12;12Hlink w/ 4 Good: 6778016   Bad: 11228312[13;12Hno link Good: 6875953   Bad: 11130376[K[14;20H1[14;29H914412[14;46H91918[15;25H4[15;37H3[16;25H97[16;38H96[16;60H1[18;52H800[18;65H800 [43d[11;12Hlink w/ 4 Good: 7046240   Bad: 11050478[12;12Hno link Good: 6817677   Bad: 11279042[K[13;12Hlink w/ 1 Good: 6916039   Bad: 11180681[14;12Hno link Good: 6954566   Bad: 11142156[K[15;25H6[15;37H5[16;24H630[16;37H629[18;54H4[18;67H4 [43d[11;12Hno link Good: 7065346   Bad: 11121774[K[12;28H35333[12;43H351788[13;12Hno link Good: 6934327   Bad: 11252795[K[14;28H73082[14;43H214041[15;25H9[15;37H8[15;59H6[16;25H63[16;38H62[16;57H3.99[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 7099233   Bad: 11178281[12;12Hlink w/ 1 Good: 6867983   Bad: 11409532[13;28H67531[13;43H30998[14;26H7006525[14;44H70992[15;24H81[15;36H80[15;59H5[16;25H96[16;38H95[18;53H12[18;66H12 [43d[11;12Hno link Good: 7152249   Bad: 11215661[K[12;20H4[12;29H920275[12;46H47636[13;12Hlink w/ 4 Good: 7020168   Bad: 11347744[14;12Hlink w/ 3 Good: 7059350   Bad: 11308563[15;25H3[15;37H2[16;24H729[16;37H728[16;57H4.00[18;54H6[18;67H6 [43d[11;28H79232[11;44H79076[12;12Hno link Good: 6945897   Bad: 11512412[K[13;12Hno link Good: 7046382   Bad: 11411928[K[14;12Hno link Good: 7085667   Bad: 11372644[K[15;25H6[15;37H5[15;59H7[16;25H63[16;38H62[18;53H20[18;66H20 [43d[11;12Hlink w/ 3 Good: 7206371   Bad: 11342332[12;12Hlink w/ 3 Good: 6971889   Bad: 11576815[13;28H72869[13;44H75836[14;27H112452[14;43H43625[15;25H8[15;37H7[16;25H96[16;38H95[18;54H4[18;67H4 [43d[11;12Hno link Good: 7226580   Bad: 11412521[K[12;12Hno link Good: 6990509   Bad: 11648593[K[13;28H92178[13;43H546925[14;28H31909[14;43H507195[15;24H91[15;36H90[15;59H9[16;24H829[16;37H828[18;54H8[18;67H8 [43d[11;28H5154[11;44H77955[12;12Hlink w/ 1 Good: 7014122   Bad: 11715374[13;12Hlink w/ 2 Good: 7116562   Bad: 11612936[14;28H5625[14;44H73240[15;25H3[15;37H2[15;59H8[16;25H62[16;38H61[18;53H32[18;66H32 [43d[11;12Hlink w/ 4 Good: 7304642   Bad: 11515251[12;12Hno link Good: 7066483   Bad: 11753410[K[13;12Hno link Good: 7169234   Bad: 11650661[K[14;12Hlink w/ 3 Good: 7209059   Bad: 11610837[15;25H5[15;37H4[16;25H95[16;38H94[16;60H1[18;54H6[18;67H6 [43d[11;20H3[11;30H45057[11;46H65230[12;12Hlink w/ 4 Good: 7105839   Bad: 11804450[13;27H208985[13;43H701305[14;12Hno link Good: 7249030   Bad: 11661261[K[15;25H8[15;37H7[15;59H5[16;24H928[16;37H927[16;57H3.99[18;53H40[18;66H40 [43d[11;12Hno link Good: 7364235   Bad: 11636449[K[12;12Hno link Good: 7123456   Bad: 11877230[K[13;28H27258[13;44H73429[14;12Hlink w/ 1 Good: 7267533   Bad: 11733155[15;23H500[15;37H9[16;25H61[16;38H60[18;54H4[18;67H4 [43d[11;12Hlink w/ 2 Good: 7397513   Bad: 11693567[12;28H555[12;43H935525[13;28H59839[13;43H831243[14;20H3[14;29H300257[14;46H90827[15;25H2[15;35H501[16;25H95[16;38H94[18;54H8[18;67H8 [43d[11;12Hno link Good: 7450602   Bad: 11730873[K[12;12Hlink w/ 4 Good: 7207891   Bad: 11973585[13;12Hlink w/ 4 Good: 7312569   Bad: 11868908[14;12Hno link Good: 7352978   Bad: 11828500[K[15;25H5[15;37H4[15;59H7[16;23H7028[16;36H7027[16;57H4.00[18;53H52[18;66H52 [43d[11;28H77258[11;44H94616[12;12Hno link Good: 7233251   Bad: 12038624[K[13;12Hno link Good: 7338585   Bad: 11933291[K[14;28H79062[14;44H92815[15;25H7[15;37H6[15;59H6[16;25H61[16;38H60[18;54H6[18;67H6 [43d[11;28H96362[11;43H865905[12;28H50969[12;43H111299[13;28H56740[13;42H2005529[14;28H97560[14;43H964711[15;24H10[15;37H9[15;59H8[16;25H94[16;38H93[18;53H60[18;66H60 [43d[11;12Hlink w/ 3 Good: 7548710   Bad: 11903955[12;27H30261[12;44H50047[13;12Hlink w/ 4 Good: 7408704   Bad: 12043964[14;27H449665[14;42H2003004[15;25H2[15;36H11[16;24H127[16;37H126[18;54H4[18;67H4 [43d[11;12Hno link Good: 7595741   Bad: 11947644[K[12;12Hlink w/ 3 Good: 7348714   Bad: 12194672[13;12Hno link Good: 7455239   Bad: 12088149[K[14;28H96242[14;44H47147[15;25H4[15;37H3[16;25H60[16;38H59[18;54H8[18;67H8 [43d[11;27H614919[11;42H2018866[12;12Hno link Good: 7366314   Bad: 12267472[K[13;12Hlink w/ 2 Good: 7473457   Bad: 12160330[14;27H514786[14;43H119002[15;25H7[15;37H6[15;59H9[16;25H94[16;38H93[16;60H1[18;53H72[18;66H72 [43d[11;12Hlink w/ 4 Good: 7647188   Bad: 12076990[12;12Hlink w/ 3 Good: 7397362   Bad: 12326817[13;29H505016[13;45H219165[14;28H46580[14;44H77601[15;25H9[15;37H8[15;59H4[16;24H227[16;37H226[16;57H3.99[18;54H6[18;67H6 [43d[11;20H3[11;29H700227[11;45H114348[12;29H449683[12;46H64893[13;12Hno link Good: 7557669   Bad: 12256908[K[14;28H99365[14;43H215213[15;24H21[15;36H20[16;25H60[16;38H59[18;53H80[18;66H80 [43d[11;12Hno link Good: 7737618   Bad: 12167351[K[12;12Hno link Good: 7486046   Bad: 12418924[K[13;28H94482[13;43H310489[14;27H636367[14;44H68606[15;25H4[15;37H3[15;59H6[16;25H93[16;38H92[18;54H4[18;67H4 [43d[11;28H56736[11;43H238629[12;27H503624[12;44H91742[13;27H612667[13;44H82700[14;28H54790[14;43H340578[15;25H6[15;37H5[16;24H326[16;37H325[16;57H4.00[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 7802657   Bad: 12283104[12;12Hlink w/ 1 Good: 7548679   Bad: 12537084[13;12Hlink w/ 4 Good: 7658049   Bad: 12427715[14;12Hlink w/ 1 Good: 7700443   Bad: 12385322[15;25H9[15;37H8[15;59H8[16;25H59[16;38H58[18;53H92[18;66H92 [43d[11;20H2[11;30H55759[11;45H320398[12;29H601028[12;46H75131[13;29H710706[13;46H65454[14;30H53210[14;45H422951[15;24H31[15;36H30[15;59H7[16;25H92[16;38H91[18;54H6[18;67H6 [43d[11;12Hno link Good: 7875253   Bad: 12391303[K[12;12Hno link Good: 7618945   Bad: 12647612[K[13;12Hno link Good: 7729433   Bad: 12537126[K[14;12Hno link Good: 7772022   Bad: 12494538[K[15;25H3[15;37H2[16;24H426[16;37H425[18;52H900[18;65H900 [43d[11;27H900986[11;43H455968[12;12Hlink w/ 1 Good: 7643287   Bad: 12713668[13;28H54289[13;43H602667[14;28H97138[14;43H559819[15;25H6[15;37H5[15;59H9[16;25H59[16;38H58[18;54H4[18;67H4 [43d[11;28H5403[11;44H93311[12;20H3[12;30H95642[12;46H51706[13;12Hlink w/ 4 Good: 7806921   Bad: 12640428[14;12Hlink w/ 1 Good: 7849871   Bad: 12597480[15;25H8[15;37H7[16;25H92[16;38H91[16;60H1[18;54H8[18;67H8 [43d[11;28H93715[11;43H54403[12;12Hno link Good: 7734315   Bad: 12803432[K[13;12Hno link Good: 7845995   Bad: 12691753[K[14;12Hno link Good: 7889059   Bad: 12648690[K[15;24H40[15;37H9[15;59H4[16;24H525[16;37H524[16;57H3.99[18;53H12[18;66H12 [43d[11;26H8012867[11;43H615274[12;28H51850[12;44H7629[13;28H6430[13;43H763838[14;27H907567[14;43H720577[15;25H3[15;36H42[15;59H6[16;25H58[16;38H57[18;54H6[18;67H6 [43d[11;28H47808[11;44H70726[12;28H85684[12;43H932851[13;12Hlink w/ 2 Good: 7898560   Bad: 12819976[14;12Hlink w/ 3 Good: 7942033   Bad: 12776505[15;25H5[15;37H4[15;59H5[16;25H91[16;38H90[18;53H20[18;66H20 [43d[11;27H100881[11;43H708049[12;12Hlink w/ 1 Good: 7838059   Bad: 12970872[13;20H4[13;29H951212[13;46H57721[14;12Hno link Good: 7994795   Bad: 12814139[K[15;25H8[15;37H7[15;59H7[16;24H624[16;37H623[16;57H4.00[18;54H4[18;67H4 [43d[11;28H2684[11;44H72487[12;12Hno link Good: 7862579   Bad: 13036751[K[13;12Hno link Good: 7976369   Bad: 12922962[K[14;26H8020089[14;44H79243[15;24H50[15;37H9[16;25H58[16;38H57[18;54H8[18;67H8 [43d[11;28H55005[11;43H834721[12;12Hlink w/ 4 Good: 7889532   Bad: 13100195[13;26H8003677[13;44H86051[14;28H47897[14;43H941832[15;25H2[15;36H51[16;25H91[16;38H90[18;53H32[18;66H32 [43d[11;28H74104[11;43H906013[12;12Hno link Good: 7907161   Bad: 13172957[K[13;28H21938[13;42H3058182[14;12Hlink w/ 1 Good: 8066381   Bad: 13013740[15;25H5[15;37H4[15;59H8[16;24H724[16;37H723[18;54H6[18;67H6 [43d[11;27H200051[11;44H70465[12;12Hlink w/ 1 Good: 7931738   Bad: 13238780[13;28H47056[13;43H123463[14;12Hno link Good: 8091762   Bad: 13078758[K[15;25H7[15;37H6[16;25H57[16;38H56[18;53H40[18;66H40 [43d[11;12Hlink w/ 2 Good: 8253141   Bad: 13007770[12;20H4[12;30H84067[12;46H76845[13;12Hlink w/ 2 Good: 8099682   Bad: 13161232[14;27H144565[14;43H116350[15;24H60[15;37H9[15;58H50[16;25H90[16;38H89[16;60H1[18;54H4[18;67H4 [43d[11;20H3[11;30H92573[11;46H58731[12;12Hno link Good: 8022393   Bad: 13328912[K[13;12Hno link Good: 8138394   Bad: 13212912[K[14;28H83551[14;44H67756[15;25H2[15;36H61[15;58H45[16;24H823[16;37H822[16;57H3.99[18;54H8[18;67H8 [43d[11;12Hno link Good: 8311589   Bad: 13130118[K[12;12Hlink w/ 1 Good: 8040023   Bad: 13401685[13;28H56749[13;44H84960[14;27H201866[14;43H239844[15;25H4[15;37H3[16;25H56[16;38H55[18;53H52[18;66H52 [43d[11;12Hlink w/ 2 Good: 8346810   Bad: 13185287[12;30H74005[12;46H58093[13;12Hlink w/ 2 Good: 8191390   Bad: 13340709[14;12Hlink w/ 2 Good: 8236713   Bad: 13295387[15;25H7[15;37H6[15;59H7[16;25H90[16;38H89[16;57H4.00[18;54H6[18;67H6 [43d[11;12Hno link Good: 8399906   Bad: 13222592[K[12;29H126364[12;46H96135[13;20H1[13;29H244091[13;46H784[14;12Hno link Good: 8289526   Bad: 13332975[K[15;25H9[15;37H8[15;59H6[16;24H923[16;37H922[18;53H60[18;66H60 [43d[11;27H42559[11;44H87295[12;12Hno link Good: 8150665   Bad: 13562227[K[13;30H68980[13;45H443914[14;27H314452[14;44H98443[15;24H71[15;36H70[16;25H56[16;38H55[18;54H4[18;67H4 [43d[11;28H45138[11;43H358149[12;12Hlink w/ 1 Good: 8168556   Bad: 13634732[13;20H2[13;30H87413[13;45H515876[14;12Hlink w/ 3 Good: 8333402   Bad: 13469889[15;25H4[15;37H3[15;59H8[16;25H89[16;38H88[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 8498207   Bad: 13395479[12;20H4[12;29H220880[12;46H72807[13;20H1[13;29H340125[13;46H53564[14;20H1[14;30H86175[14;45H507515[15;25H6[15;37H5[16;23H8022[16;36H8021[18;53H72[18;66H72 [43d[11;12Hno link Good: 8544207   Bad: 13440202[K[12;12Hno link Good: 8266017   Bad: 13718393[K[13;12Hno link Good: 8385564   Bad: 13598847[K[14;20H2[14;29H431793[14;46H52619[15;25H9[15;37H8[15;59H9[16;25H55[16;38H54[18;54H6[18;67H6 [43d[11;28H63318[11;43H511484[12;12Hlink w/ 4 Good: 8283658   Bad: 13791145[13;27H403795[13;43H671009[14;20H1[14;30H50372[14;45H624434[15;24H81[15;36H80[16;25H89[16;38H88[16;60H1[18;53H80[18;66H80 [43d[11;12Hlink w/ 4 Good: 8596479   Bad: 13568719[12;12Hno link Good: 8315722   Bad: 13849477[K[13;12Hlink w/ 1 Good: 8436321   Bad: 13728880[14;30H83177[14;46H82025[15;25H3[15;37H2[15;59H5[16;24H122[16;37H121[16;57H3.99[18;54H4[18;67H4 [43d[11;12Hno link Good: 8649459   Bad: 13606131[K[12;28H68035[12;44H87556[13;20H2[13;30H89004[13;46H66589[14;29H535935[14;45H719659[15;25H6[15;37H5[15;59H6[16;25H55[16;38H54[18;54H8[18;67H8 [43d[11;28H85933[11;44H60060[12;27H40334[12;43H942649[13;29H524772[13;45H821223[14;30H7194[14;46H74052[15;25H8[15;37H7[16;25H88[16;38H87[16;57H4.00[18;53H92[18;66H92 [43d[11;27H705065[11;43H731323[12;28H21031[12;42H4015358[13;20H1[13;30H42995[13;46H93396[14;12Hno link Good: 8590418   Bad: 13845973[K[15;24H90[15;37H9[16;24H221[16;37H220[18;54H6[18;67H6 [43d[11;12Hlink w/ 3 Good: 8751976   Bad: 13774808[12;28H67065[12;44H59720[13;12Hno link Good: 8589396   Bad: 13937391[K[14;27H637052[14;44H89736[15;25H3[15;36H92[15;59H7[16;25H54[16;38H53[18;52H10000   Good: 10000   Bad: 0 [43d[11;12Hno link Good: 8804387   Bad: 13812794[K[12;12Hlink w/ 4 Good: 8518669   Bad: 14098514[13;12Hlink w/ 1 Good: 8641367   Bad: 13975817[14;12Hlink w/ 3 Good: 8689036   Bad: 13928149[15;25H5[15;37H4[16;25H87[16;38H86[18;55H4[18;69H4 [43d[11;28H2341[11;44H84158[12;30H36268[12;45H171308[13;12Hno link Good: 8659653   Bad: 14047924[K[14;20H2[14;29H707541[14;44H4000038[15;25H8[15;37H7[15;59H9[16;24H321[16;37H320[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 8850172   Bad: 13947802[12;20H1[12;30H61633[12;45H236342[13;12Hlink w/ 2 Good: 8685545   Bad: 14112432[14;12Hno link Good: 8733673   Bad: 14064305[K[15;23H600[15;37H9[16;25H54[16;38H53[18;54H12[18;68H12 [43d[11;12Hno link Good: 8903244   Bad: 13985125[K[12;20H3[12;29H613975[12;46H74395[13;20H1[13;29H738281[13;46H50091[14;12Hlink w/ 3 Good: 8786506   Bad: 14101867[15;25H2[15;35H601[15;59H8[16;25H87[16;38H86[16;60H1[18;55H6[18;69H6 [43d[11;12Hlink w/ 2 Good: 8941970   Bad: 14036796[12;12Hno link Good: 8651578   Bad: 14327189[K[13;12Hno link Good: 8776348   Bad: 14202420[K[14;12Hno link Good: 8824693   Bad: 14154076[K[15;25H5[15;37H4[15;59H6[16;24H420[16;37H419[16;57H3.99[18;54H20[18;68H20 [43d[11;12Hno link Good: 8961124   Bad: 14108040[K[12;28H69201[12;44H99964[13;28H94569[13;44H74597[14;28H43144[14;43H226023[15;25H7[15;37H6[16;25H53[16;38H52[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 8995895   Bad: 14163659[12;12Hlink w/ 3 Good: 8702900   Bad: 14456655[13;27H828755[13;43H330801[14;28H77657[14;44H81900[15;25H9[15;37H8[15;59H5[16;25H86[16;38H85[16;57H4.00[18;55H8[18;69H8 [43d[11;20H2[28G9049004[11;45H20094[12;12Hno link Good: 8755226   Bad: 14494728[K[13;28H81391[13;44H68564[14;27H930442[14;43H319514[15;24H12[15;36H11[15;59H7[16;24H519[16;37H518[18;54H32[18;68H32 [43d[11;12Hno link Good: 9074014   Bad: 14266331[K[12;12Hlink w/ 4 Good: 8778789   Bad: 14561557[13;12Hlink w/ 1 Good: 8905587   Bad: 14434760[14;12Hlink w/ 1 Good: 8954794   Bad: 14385555[15;25H4[15;37H3[16;25H53[16;38H52[18;55H6[18;69H6 [43d[11;27H102271[11;43H328474[12;12Hno link Good: 8805763   Bad: 14624983[K[13;30H33042[13;46H97706[14;12Hno link Good: 8982509   Bad: 14448240[K[15;25H7[15;37H6[15;59H8[16;25H86[16;38H85[18;54H40[18;68H40 [43d[11;28H21508[11;44H99635[12;28H23407[12;44H97737[13;12Hno link Good: 8951329   Bad: 14569816[K[14;26H9001083[14;43H520063[15;25H9[15;37H8[16;24H619[16;37H618[18;55H4[18;69H4 [43d[11;28H48562[11;43H462973[12;28H49104[12;43H762432[13;12Hlink w/ 1 Good: 8977634   Bad: 14633904[14;12Hlink w/ 2 Good: 9027445   Bad: 14584094[15;24H21[15;36H20[16;25H52[16;38H51[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 9201613   Bad: 14500318[12;12Hlink w/ 4 Good: 8901389   Bad: 14800543[13;20H2[28G9030232[13;46H71701[14;12Hno link Good: 9080201   Bad: 14621733[K[15;25H4[15;37H3[15;59H9[16;25H85[16;38H84[16;60H1[18;54H52[18;68H52 [43d[11;12Hno link Good: 9239987   Bad: 14552339[K[12;12Hno link Good: 8938731   Bad: 14853596[K[13;20H1[13;30H67990[13;45H724339[14;27H118143[14;44H74187[15;25H6[15;37H5[15;59H5[16;24H718[16;37H717[16;57H3.99[18;55H6[18;69H6 [43d[11;28H59072[11;43H623655[12;12Hlink w/ 4 Good: 8956229   Bad: 14926499[13;12Hno link Good: 9086196   Bad: 14796534[K[14;28H36600[14;43H746131[15;25H8[15;37H7[16;25H51[16;38H50[18;54H60[18;68H60 [43d[11;28H95331[11;44H77789[12;12Hno link Good: 8991316   Bad: 14981805[K[13;27H121738[13;43H851385[14;12Hlink w/ 1 Good: 9172378   Bad: 14800746[15;24H31[15;36H30[15;59H7[16;25H85[16;38H84[16;57H4.00[18;55H4[18;69H4 [43d[11;12Hlink w/ 4 Good: 9348465   Bad: 14715054[12;12Hlink w/ 1 Good: 9043599   Bad: 15019921[13;12Hlink w/ 4 Good: 9174433   Bad: 14889089[14;20H3[14;29H225177[14;46H383[15;25H3[15;37H2[15;59H6[16;24H818[16;37H817[18;55H8[18;69H8 [43d[11;20H2[11;30H73151[11;46H8076[12;12Hno link Good: 9066892   Bad: 15087024[K[13;20H1[13;30H98281[13;45H955637[14;12Hno link Good: 9249097   Bad: 14904822[K[15;25H6[15;37H5[15;59H8[16;25H51[16;38H50[18;54H72[18;68H72 [43d[11;12Hno link Good: 9393468   Bad: 14850841[K[12;12Hlink w/ 1 Good: 9085790   Bad: 15158520[13;12Hno link Good: 9217939   Bad: 15026372[K[14;28H68828[14;44H75485[15;25H8[15;37H7[16;25H84[16;38H83[18;55H6[18;69H6 [43d[11;27H446525[11;44H88182[12;12Hno link Good: 9138118   Bad: 15196591[K[13;12Hlink w/ 1 Good: 9270596   Bad: 15064114[14;27H32155[14;42H5013153[15;24H40[15;37H9[15;59H7[16;24H917[16;37H916[18;54H80[18;68H80 [43d[11;12Hlink w/ 4 Good: 9491503   Bad: 14933601[12;28H82125[12;43H242980[13;12Hno link Good: 9314976   Bad: 15110130[K[14;12Hlink w/ 1 Good: 9365970   Bad: 15059137[15;25H3[15;36H42[15;59H9[16;25H50[16;38H49[18;55H4[18;69H4 [43d[11;12Hno link Good: 9510623   Bad: 15004876[K[12;28H99723[12;43H315777[13;28H33223[13;44H82279[14;12Hno link Good: 9384469   Bad: 15131034[K[15;25H5[15;37H4[16;25H83[16;38H82[16;60H1[18;55H8[18;69H8 [43d[11;28H44702[11;44H61192[12;27H232758[12;44H73138[13;12Hlink w/ 1 Good: 9366595   Bad: 15239302[14;27H418107[14;44H87791[15;25H7[15;37H6[15;59H5[16;23H9017[16;36H9016[16;57H3.99[18;54H92[18;68H92 [43d[11;28H97810[11;44H98481[12;12Hlink w/ 3 Good: 9285133   Bad: 15411159[13;12Hno link Good: 9419277   Bad: 15277017[K[14;28H70938[14;43H225357[15;24H50[15;37H9[15;59H6[16;25H50[16;38H49[16;57H4.00[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 9633426   Bad: 15153260[12;12Hno link Good: 9319586   Bad: 15467101[K[13;28H54271[13;43H3324[14;27H506027[14;44H80662[15;25H2[15;36H51[16;25H83[16;38H82[18;53H100[18;67H100 [43d[11;12Hno link Good: 9652483   Bad: 15224601[K[12;28H37242[12;43H539844[13;28H72456[13;43H404631[14;28H24536[14;43H35255[15;25H5[15;37H4[15;59H7[16;24H116[16;37H115[18;55H4[18;69H4 [43d[11;27H700345[11;44H67135[12;12Hlink w/ 1 Good: 9384215   Bad: 15583267[13;12Hlink w/ 2 Good: 9519830   Bad: 15447653[14;12Hlink w/ 3 Good: 9572105   Bad: 15395379[15;25H7[15;37H6[16;25H49[16;38H48[18;55H8[18;69H8 [43d[11;28H51814[11;43H306063[12;12Hno link Good: 9434879   Bad: 15622999[K[13;30H70894[13;46H86986[14;12Hno link Good: 9623142   Bad: 15434738[K[15;25H9[15;37H8[16;25H82[16;38H81[18;54H12[18;68H12 [43d[11;12Hlink w/ 4 Good: 9770821   Bad: 15377452[12;28H5246[12;44H95805[13;12Hno link Good: 9589134   Bad: 15559141[K[14;28H41701[14;43H506576[15;24H62[15;36H61[15;59H8[16;24H216[16;37H215[18;55H6[18;69H6 [43d[11;12Hno link Good: 9798320   Bad: 15440349[K[12;28H78796[12;43H759874[13;12Hlink w/ 2 Good: 9615940   Bad: 15622731[14;28H68802[14;44H69870[15;25H4[15;37H3[16;25H49[16;38H48[18;54H20[18;68H20 [43d[11;12Hlink w/ 4 Good: 9851450   Bad: 15477615[12;12Hlink w/ 1 Good: 9531143   Bad: 15797923[13;20H1[13;30H68661[13;46H60406[14;27H721499[14;43H607569[15;25H7[15;37H6[15;58H50[16;25H82[16;38H81[16;60H1[18;55H4[18;69H4 [43d[11;20H2[11;30H89258[11;45H530201[12;12Hno link Good: 9567734   Bad: 15851727[K[13;12Hno link Good: 9705884   Bad: 15713578[K[14;28H58755[14;44H60708[15;25H9[15;37H8[15;58H46[16;24H315[16;37H314[16;57H3.99[18;55H8[18;69H8 [43d[11;12Hno link Good: 9908425   Bad: 15601431[K[12;28H8537[12;43H924483[13;28H24137[13;44H85722[14;28H773[14;43H732505[15;24H71[15;36H70[16;25H48[16;38H47[16;57H4.00[18;54H32[18;68H32 [43d[11;12Hlink w/ 2 Good: 9945291   Bad: 15654960[12;27H621113[12;44H79139[13;28H60375[13;43H839878[14;12Hlink w/ 2 Good: 9813778   Bad: 15786476[15;25H4[15;37H3[15;59H7[16;25H81[16;38H80[18;55H6[18;69H6 [43d[11;20H3[11;30H98279[11;46H92363[12;28H73478[12;42H6017165[13;12Hlink w/ 2 Good: 9813094   Bad: 15877551[14;12Hno link Good: 9866522   Bad: 15824124[K[15;25H6[15;37H5[16;24H414[16;37H413[18;54H40[18;68H40 [43d[11;28H10022393   Bad: 15758654[12;28H96136[12;44H84912[13;12Hno link Good: 9836393   Bad: 15944656[K[14;28H89970[14;44H91080[15;25H8[15;37H7[16;25H48[16;38H47[18;55H4[18;69H4 [43d[11;12Hno link Good: 10050689   Bad: 15820744[K[12;27H723060[12;43H148374[13;28H63806[13;42H6007629[14;27H917648[14;43H953789[15;24H81[15;36H80[15;59H8[16;25H81[16;38H80[18;55H8[18;69H8 [43d[11;29H69655[11;45H92183[12;28H40802[12;43H221037[13;28H82110[13;44H79730[14;28H3622[14;42H6025613[15;25H3[15;37H2[16;24H514[16;37H513[18;54H52[18;68H52 [43d[11;12Hlink w/ 4 Good: 10097764   Bad: 15954794[12;28H67440[12;44H85119[13;27H909402[13;43H143158[14;12Hlink w/ 2 Good: 9963832   Bad: 16088730[15;25H6[15;37H5[15;59H9[16;25H47[16;38H46[18;55H6[18;69H6 [43d[11;20H3[11;30H150876[11;47H9207[12;27H819748[12;43H323204[13;28H62068[13;44H80885[14;20H3[28G10016637   Bad: 16126317[15;25H8[15;37H7[16;25H80[16;38H79[16;60H1[18;54H60[18;68H60 [43d[11;20H2[11;31H88339[11;45H6045011[12;28H56031[12;44H77320[13;28H98775[13;43H234578[14;20H1[14;31H53478[14;47H79876[15;24H90[15;37H9[15;59H5[16;24H613[16;37H612[16;57H3.99[18;55H4[18;69H4 [43d[11;12Hno link Good: 10207449   Bad: 16116299[K[12;28H73689[12;43H45006[13;12Hlink w/ 1 Good: 10017012   Bad: 16306738[14;31H71991[14;46H251760[15;25H3[15;36H92[15;59H7[16;25H47[16;38H46[16;57H4.00[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 10244563   Bad: 16169581[12;27H90987[12;43H504266[13;12Hno link Good: 10053708   Bad: 16360438[K[14;20H3[14;30H108778[14;46H305369[15;25H5[15;37H4[15;59H6[16;25H80[16;38H79[18;54H72[18;68H72 [43d[11;20H4[11;31H97585[11;46H206955[12;12Hlink w/ 3 Good: 9962226   Bad: 16542315[13;12Hlink w/ 4 Good: 10106407   Bad: 16398136[14;12Hno link Good: 10161515   Bad: 16343029[K[15;25H7[15;37H6[16;24H713[16;37H712[18;55H6[18;69H6 [43d[11;12Hno link Good: 10321417   Bad: 16273517[K[12;12Hno link Good: 9984462   Bad: 16610473[K[13;12Hno link Good: 10129258   Bad: 16465678[K[14;29H84567[14;44H410370[15;23H700[15;37H9[15;59H8[16;25H46[16;38H45[18;54H80[18;68H80 [43d[11;29H42819[11;44H342513[12;12Hlink w/ 4 Good: 10004501   Bad: 16680832[13;12Hlink w/ 2 Good: 10149964   Bad: 16535371[14;12Hlink w/ 1 Good: 10205370   Bad: 16479966[15;25H2[15;35H701[15;59H7[16;25H79[16;38H78[18;55H4[18;69H4 [43d[11;29H95887[11;45H79839[12;20H1[12;31H56864[12;46H718863[13;30H202623[13;47H73105[14;20H3[14;31H58199[14;46H517531[15;25H5[15;37H4[15;59H9[16;24H812[16;37H811[18;55H8[18;69H8 [43d[11;28H439876[11;44H426248[12;12Hno link Good: 10099786   Bad: 16766340[K[13;12Hno link Good: 10246045   Bad: 16620082[K[14;20H2[14;30H301694[14;47H64434[15;25H7[15;37H6[16;25H45[16;38H44[18;54H92[18;68H92 [43d[11;12Hlink w/ 2 Good: 10458957   Bad: 16497561[12;28H117330[12;44H839189[13;29H64350[13;45H92170[14;12Hno link Good: 10320247   Bad: 16636274[K[15;25H9[15;37H8[15;59H8[16;25H79[16;38H78[16;60H1[18;55H6[18;69H6 [43d[11;12Hno link Good: 10494120   Bad: 16552794[K[12;12Hlink w/ 3 Good: 10151355   Bad: 16895561[13;12Hlink w/ 4 Good: 10298765   Bad: 16748152[14;12Hlink w/ 3 Good: 10354959   Bad: 16691959[15;24H12[15;36H11[15;59H6[16;24H912[16;37H911[16;57H3.99[18;53H200[18;67H200 [43d[11;28H547211[11;45H90102[12;30H203614[12;46H93370[13;30H351474[13;47H8584[14;20H2[14;30H407804[14;46H729513[15;25H4[15;37H3[16;25H45[16;38H44[16;57H4.00[18;55H4[18;69H4 [43d[11;12Hlink w/ 4 Good: 10582639   Bad: 16645070[12;12Hno link Good: 10237972   Bad: 16989738[K[13;20H1[13;31H86362[13;46H841349[14;12Hno link Good: 10442816   Bad: 16784896[K[15;25H6[15;37H5[16;25H78[16;38H77[18;55H8[18;69H8 [43d[11;20H3[11;30H601826[11;46H716279[12;29H55608[12;43H706249[13;12Hno link Good: 10404659   Bad: 16913449[K[14;12Hlink w/ 2 Good: 10461352   Bad: 16856757[15;25H9[15;37H8[15;59H7[16;23H10011   Good: 10010   Bad: 0   B/W: 4.00 Gbps[18;54H12[18;68H12 [43d[11;12Hno link Good: 10650701   Bad: 16757802[K[12;12Hlink w/ 4 Good: 10303666   Bad: 17104838[13;12Hlink w/ 4 Good: 10453117   Bad: 16955388[14;12Hno link Good: 10509899   Bad: 16898608[K[15;24H21[15;36H20[16;26H44[16;40H43[18;55H6[18;69H6 [43d[11;28H701215[11;45H97681[12;12Hno link Good: 10353312   Bad: 17145585[K[13;12Hno link Good: 10503147   Bad: 16995752[K[14;29H59992[14;44H9389[15;25H4[15;37H3[15;59H8[16;26H77[16;40H76[18;54H20[18;68H20 [43d[11;12Hlink w/ 4 Good: 10720374   Bad: 16868920[12;12Hlink w/ 3 Good: 10370980   Bad: 17218315[13;29H21272[13;43H7068024[14;12Hlink w/ 1 Good: 10578433   Bad: 17010864[15;25H6[15;37H5[16;25H111[16;39H110[18;55H4[18;69H4 [43d[11;20H3[11;31H48980[11;46H930703[12;20H4[12;31H98286[12;47H81398[13;12Hlink w/ 1 Good: 10549045   Bad: 17130640[14;20H2[14;30H606458[14;47H73228[15;25H8[15;37H7[16;26H44[16;40H43[18;55H8[18;69H8 [43d[11;12Hno link Good: 10802138   Bad: 16967949[K[12;12Hno link Good: 10450642   Bad: 17319446[K[13;12Hno link Good: 10601751   Bad: 17168338[K[14;20H1[14;31H59250[14;46H110841[15;24H31[15;36H30[15;59H9[16;26H77[16;40H76[16;62H1[18;54H32[18;68H32 [43d[11;29H38866[11;43H7021614[12;29H86310[12;45H74172[13;29H37820[13;44H222663[14;12Hno link Good: 10695529   Bad: 17164955[K[15;25H3[15;37H2[15;59H6[16;25H210[16;39H209[16;59H3.99[18;55H6[18;69H6 [43d[11;29H57938[11;45H92939[12;28H503927[12;44H446951[13;29H56142[13;45H94737[14;28H713951[14;44H236930[15;25H5[15;37H4[16;26H43[16;40H42[16;59H4.00[18;54H40[18;68H40 [43d[11;12Hlink w/ 3 Good: 10895942   Bad: 17145330[12;29H40785[12;44H500488[13;12Hlink w/ 2 Good: 10693483   Bad: 17347792[14;12Hlink w/ 1 Good: 10751542   Bad: 17289734[15;25H8[15;37H7[15;59H7[16;26H76[16;40H75[18;55H4[18;69H4 [43d[11;30H949015[11;47H82652[12;12Hlink w/ 1 Good: 10593086   Bad: 17538583[13;12Hno link Good: 10746129   Bad: 17385541[K[14;20H2[14;30H804348[14;46H327323[15;24H40[15;37H9[16;25H309[16;39H308[18;55H8[18;69H8 [43d[11;12Hno link Good: 10972086   Bad: 17249981[K[12;30H614782[12;46H607287[13;29H68365[13;44H453705[14;12Hno link Good: 10826798   Bad: 17395273[K[15;25H3[15;36H42[15;59H8[16;26H43[16;40H42[18;54H52[18;68H52 [43d[11;27H1000261[11;44H312203[12;20H4[12;31H41774[12;47H70692[13;29H95748[13;44H516719[14;29H54516[14;44H457952[15;25H5[15;37H4[16;26H76[16;40H75[18;55H6[18;69H6 [43d[11;29H19543[11;45H83317[12;12Hno link Good: 10659403   Bad: 17743459[K[13;28H814016[13;45H88847[14;29H7295[14;44H529908[15;25H7[15;37H6[16;25H409[16;39H408[18;54H60[18;68H60 [43d[11;29H48302[11;44H44494[12;29H87010[12;44H806241[13;12Hlink w/ 2 Good: 10842074   Bad: 17651178[14;28H901278[14;45H91975[15;24H50[15;37H9[15;59H9[16;26H42[16;40H41[18;55H4[18;69H4 [43d[11;28H101444[11;45H8220[12;28H739377[12;45H44275[13;20H1[13;31H94789[13;47H88864[14;29H54017[14;44H629637[15;25H2[15;36H51[16;26H75[16;40H74[16;62H1[18;55H8[18;69H8 [43d[11;29H37957[11;44H536089[12;29H74814[12;45H99233[13;30H930646[13;46H743402[14;29H90030[14;45H84019[15;25H4[15;37H3[15;59H5[16;25H508[16;39H507[16;59H3.99[18;54H72[18;68H72 [43d[11;29H57145[11;44H607297[12;29H92463[12;44H971980[13;12Hno link Good: 10948958   Bad: 17815486[K[14;12Hlink w/ 2 Good: 11008534   Bad: 17755911[15;25H7[15;37H6[15;59H7[16;26H41[16;40H40[16;59H4.00[18;55H6[18;69H6 [43d[11;12Hlink w/ 2 Good: 11195268   Bad: 17659572[12;28H829524[12;43H8025317[13;12Hlink w/ 4 Good: 10986426   Bad: 17868416[14;12Hno link Good: 11046271   Bad: 17808572[K[15;25H9[15;37H8[15;59H6[16;26H75[16;40H74[18;54H80[18;68H80 [43d[11;20H4[11;30H248314[11;47H96919[12;29H8185[12;45H63381[13;29H1039078[13;46H906158[14;12Hlink w/ 2 Good: 11099072   Bad: 17846165[15;24H62[15;36H61[15;59H8[16;25H608[16;39H607[18;55H4[18;69H4 [43d[11;12Hno link Good: 11271194   Bad: 17764438[K[12;28H903245[12;44H132389[13;12Hno link Good: 11061022   Bad: 17974613[K[14;12Hno link Good: 11121246   Bad: 17914390[K[15;25H4[15;37H3[15;59H7[16;26H41[16;40H40[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 11293443   Bad: 17832584[12;12Hlink w/ 1 Good: 10924100   Bad: 18201928[13;12Hlink w/ 1 Good: 11082506   Bad: 18043524[14;29H4308[14;45H82945[15;25H6[15;37H5[16;26H74[16;40H73[18;54H92[18;68H92 [43d[11;12Hno link Good: 11346487   Bad: 17869937[K[12;31H76496[12;47H39929[13;12Hno link Good: 11135201   Bad: 18081225[K[14;29H95871[14;43H8020556[15;25H9[15;37H8[15;59H9[16;25H707[16;39H706[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 11389564   Bad: 17917257[12;12Hno link Good: 11018578   Bad: 18288244[K[13;12Hlink w/ 2 Good: 11177642   Bad: 18129181[14;28H238438[14;45H68387[15;24H71[15;36H70[15;59H8[16;26H40[16;40H39[18;53H300[18;67H300 [43d[11;12Hno link Good: 11408786   Bad: 17988428[K[12;29H36061[12;44H36115[13;12Hno link Good: 11195882   Bad: 18201334[K[14;12Hlink w/ 3 Good: 11257023   Bad: 18140195[15;25H4[15;37H3[15;59H6[16;26H73[16;40H72[16;59H3.99[18;55H4[18;69H4 [43d[11;29H44750[11;43H8042861[12;12Hlink w/ 1 Good: 11070964   Bad: 18416648[13;12Hlink w/ 4 Good: 11231230   Bad: 18256384[14;12Hno link Good: 11292691   Bad: 18194923[K[15;25H6[15;37H5[16;25H807[16;39H806[16;59H4.00[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 11497839   Bad: 18080170[12;12Hno link Good: 11123211   Bad: 18454799[K[13;20H2[13;31H83909[13;47H94102[14;28H345450[14;44H23256[15;25H8[15;37H7[16;26H40[16;40H39[18;54H12[18;68H12 [43d[11;12Hno link Good: 11532479   Bad: 18135927[K[12;29H56676[12;44H511731[13;12Hno link Good: 11317891   Bad: 18350517[K[14;29H79539[14;45H88870[15;24H81[15;36H80[15;59H7[16;26H73[16;40H72[18;55H6[18;69H6 [43d[11;29H51582[11;44H20721[12;29H74228[12;45H84573[13;29H36165[13;44H42263[14;29H97998[14;44H360805[15;25H3[15;37H2[16;25H906[16;39H905[18;54H20[18;68H20 [43d[11;12Hlink w/ 4 Good: 11601213   Bad: 18247984[12;28H22317[12;44H626020[13;29H85466[13;45H63733[14;28H447509[14;44H401691[15;25H5[15;37H4[16;26H39[16;40H38[18;55H4[18;69H4 [43d[11;12Hno link Good: 11650834   Bad: 18288757[K[12;29H71927[12;45H67665[13;28H434613[13;44H504980[14;12Hlink w/ 3 Good: 11496712   Bad: 18442883[15;25H8[15;37H7[15;59H8[16;26H72[16;40H71[18;55H8[18;69H8 [43d[11;29H69862[11;44H36012[12;12Hlink w/ 3 Good: 11289469   Bad: 18740521[13;29H52872[13;45H7712[14;30H515256[14;46H514737[15;24H90[15;37H9[16;24H1005[16;38H1004[18;54H32[18;68H32 [43d[11;12Hlink w/ 2 Good: 11699284   Bad: 18421102[12;12Hno link Good: 11317699   Bad: 18802688[K[13;12Hlink w/ 4 Good: 11481654   Bad: 18638735[14;20H2[14;31H44275[14;47H76115[15;25H3[15;36H92[15;59H9[16;26H39[16;40H38[18;55H6[18;69H6 [43d[11;30H752406[11;47H58375[12;12Hlink w/ 1 Good: 11370021   Bad: 18840762[13;30H534358[13;47H76426[14;12Hno link Good: 11597095   Bad: 18613690[K[15;25H5[15;37H4[15;59H6[16;26H72[16;40H71[16;59H3.99[18;54H40[18;68H40 [43d[11;20H4[11;31H88288[11;46H512890[12;20H3[12;30H404727[12;47H9645[13;12Hno link Good: 11569624   Bad: 18731556[K[14;28H632521[14;45H6866[15;25H7[15;37H6[16;25H105[16;39H104[16;59H4.00[18;55H4[18;69H4 [43d[11;20H3[11;30H807399[11;47H84171[12;12Hno link Good: 11422317   Bad: 18969254[K[13;29H87895[13;44H803677[14;12Hlink w/ 3 Good: 11651024   Bad: 18740549[15;23H800[15;37H9[15;59H7[16;26H38[16;40H37[18;55H8[18;69H8 [43d[11;12Hno link Good: 11846210   Bad: 18635760[K[12;29H60050[12;43H9021921[13;12Hlink w/ 1 Good: 11626136   Bad: 18855837[14;12Hno link Good: 11689393   Bad: 18792581[K[15;25H2[15;35H801[16;26H71[16;40H70[18;54H52[18;68H52 [43d[11;29H99297[11;45H73068[12;12Hlink w/ 3 Good: 11512398   Bad: 19059969[13;20H4[13;31H78868[13;47H93500[14;28H742165[14;44H830204[15;25H4[15;37H3[16;25H204[16;39H203[18;55H6[18;69H6 [43d[11;28H921569[11;44H741192[12;12Hno link Good: 11533181   Bad: 19129581[K[13;12Hno link Good: 11700211   Bad: 18962553[K[14;29H63740[14;45H99025[15;25H7[15;37H6[15;59H8[16;26H37[16;40H36[18;54H60[18;68H60 [43d[11;12Hlink w/ 3 Good: 11949656   Bad: 18803501[12;29H60126[12;45H93033[13;29H27646[13;43H9025514[14;29H9137[14;44H961791[15;25H9[15;37H8[16;26H71[16;40H70[18;55H4[18;69H4 [43d[11;12Hno link Good: 11968667   Bad: 18874886[K[12;29H7763[12;44H265918[13;29H45878[13;45H97678[14;28H809778[14;43H9033779[15;24H12[15;36H11[15;59H9[16;25H304[16;39H303[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 11998422   Bad: 18935527[12;12Hlink w/ 1 Good: 11606107   Bad: 19327843[13;29H74897[13;44H159054[14;12Hlink w/ 1 Good: 11839035   Bad: 19094917[15;25H4[15;37H3[16;26H37[16;40H36[18;54H72[18;68H72 [43d[11;20H4[11;29H2051554[11;47H72794[12;20H4[12;31H58365[12;47H65984[13;12Hlink w/ 4 Good: 11827528   Bad: 19196822[14;20H3[14;31H91857[14;46H132494[15;25H6[15;37H5[15;59H5[16;26H70[16;40H69[16;59H3.99[18;55H6[18;69H6 [43d[11;31H87123[11;45H9027620[12;12Hno link Good: 11692762   Bad: 19421982[K[13;20H2[13;31H62481[13;46H252265[14;12Hno link Good: 11926897   Bad: 19187850[K[15;25H9[15;37H8[15;59H7[16;25H403[16;39H402[16;59H4.00[18;54H80[18;68H80 [43d[11;12Hno link Good: 12106250   Bad: 19098890[K[12;12Hlink w/ 3 Good: 11710481   Bad: 19494660[13;20H4[13;31H80855[13;46H324287[14;29H452[14;44H259846[15;24H21[15;36H20[15;59H6[16;26H36[16;40H35[18;55H4[18;69H4 [43d[11;29H45218[11;44H150317[12;20H1[12;31H48397[12;46H54714[13;12Hno link Good: 11919171   Bad: 19376367[K[14;29H83839[14;44H311700[15;25H3[15;37H2[16;26H69[16;40H68[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 12198329   Bad: 19187602[12;12Hno link Good: 11800756   Bad: 19585176[K[13;29H71876[13;44H414058[14;27H2036631[14;45H49304[15;25H6[15;37H5[15;59H7[16;25H503[16;39H502[18;54H92[18;68H92 [43d[11;12Hno link Good: 12220329   Bad: 19255997[K[12;29H21152[12;44H655175[13;29H93057[13;45H83271[14;29H57870[14;44H418460[15;25H8[15;37H7[16;26H36[16;40H35[18;55H6[18;69H6 [43d[11;29H43390[11;44H323335[12;12Hlink w/ 3 Good: 11842990   Bad: 19723736[13;27H2015415[13;44H551312[14;12Hlink w/ 3 Good: 12080526   Bad: 19486202[15;24H31[15;36H30[15;59H8[16;26H69[16;40H68[18;53H400[18;67H400 [43d[11;12Hlink w/ 2 Good: 12296446   Bad: 19360674[12;20H1[12;31H95366[12;47H61755[13;29H68099[13;45H89023[14;30H133279[14;46H523844[15;25H3[15;37H2[16;25H602[16;39H601[18;55H4[18;69H4 [43d[11;12Hno link Good: 12338637   Bad: 19409203[K[12;12Hno link Good: 11936605   Bad: 19811236[K[13;28H109770[13;44H63807[14;12Hno link Good: 12175012   Bad: 19572832[K[15;25H5[15;37H4[16;26H35[16;40H34[18;55H8[18;69H8 [43d[11;29H57895[11;45H80342[12;12Hlink w/ 3 Good: 11954142   Bad: 19884096[13;12Hlink w/ 4 Good: 12128043   Bad: 19710197[14;29H93477[14;44H644764[15;25H8[15;37H7[15;59H6[16;26H68[16;40H67[16;59H3.99[18;54H12[18;68H12 [43d[11;12Hlink w/ 2 Good: 12394859   Bad: 19533775[12;20H1[12;31H89990[12;46H93864[13;20H2[13;31H64385[13;47H64252[14;12Hlink w/ 2 Good: 12230017   Bad: 19698621[15;24H40[15;37H9[16;25H702[16;39H701[16;59H4.00[18;55H6[18;69H6 [43d[11;12Hno link Good: 12447902   Bad: 19571127[K[12;20H3[12;29H2042305[12;47H7672[13;20H1[13;30H217036[13;46H801996[14;12Hno link Good: 12282791   Bad: 19736242[K[15;25H2[15;36H41[16;26H35[16;40H34[18;54H20[18;68H20 [43d[11;12Hlink w/ 3 Good: 12480689   Bad: 19628738[12;12Hno link Good: 12073936   Bad: 20035492[K[13;12Hno link Good: 12249197   Bad: 19860232[K[14;12Hlink w/ 3 Good: 12314975   Bad: 19794456[15;25H5[15;37H4[15;59H7[16;26H68[16;40H67[18;55H4[18;69H4 [43d[11;12Hno link Good: 12499833   Bad: 19699988[K[12;29H91534[12;44H108289[13;29H67563[13;44H932261[14;12Hno link Good: 12333443   Bad: 19866382[K[15;25H7[15;37H6[16;25H801[16;39H800[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 12550526   Bad: 19739693[12;28H141478[12;45H48742[13;28H31783[13;45H72388[14;12Hlink w/ 1 Good: 12383776   Bad: 19906447[15;24H50[15;37H9[15;59H8[16;26H34[16;40H33[18;54H32[18;68H32 [43d[11;12Hno link Good: 12599130   Bad: 19781478[K[12;29H89183[12;45H91426[13;29H65946[13;42H20014664[14;12Hno link Good: 12431952   Bad: 19948659[K[15;25H2[15;36H51[16;26H67[16;40H66[18;55H6[18;69H6 [43d[11;28H618298[11;44H852711[12;28H206708[12;44H264302[13;29H84138[13;45H8687[14;29H50499[14;42H20020514[15;25H4[15;37H3[16;25H900[16;40H99[18;54H40[18;68H40 [43d[11;12Hlink w/ 2 Good: 12648711   Bad: 19912696[12;29H35954[12;44H325454[13;28H413770[13;44H147639[14;29H80540[14;45H80870[15;25H7[15;37H6[15;59H9[16;26H34[16;39H933[18;55H4[18;69H4 [43d[11;12Hno link Good: 12701819   Bad: 19949983[K[12;12Hlink w/ 1 Good: 12288329   Bad: 20363475[13;29H66486[13;45H8531[14;28H533297[14;44H118509[15;25H9[15;37H8[15;59H6[16;26H67[16;40H66[18;55H8[18;69H8 [43d[11;29H36765[11;42H20005435[12;12Hno link Good: 12322057   Bad: 20420144[K[13;28H50067[13;44H241526[14;29H67626[14;45H74578[15;24H61[15;36H60[16;24H2000[16;40H99[18;54H52[18;68H52 [43d[11;29H55898[11;45H76700[12;29H39658[12;45H92941[13;29H18879[13;44H313722[14;29H86131[14;44H246471[15;25H4[15;37H3[15;59H7[16;26H33[16;38H2032[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 12795853   Bad: 20127463[12;12Hlink w/ 3 Good: 12378537   Bad: 20544780[13;12Hlink w/ 4 Good: 12558189   Bad: 20365130[14;12Hlink w/ 2 Good: 12625705   Bad: 20297615[15;25H6[15;37H5[16;26H66[16;40H65[18;54H60[18;68H60 [43d[11;12Hno link Good: 12848935   Bad: 20164778[K[12;20H4[12;30H430878[12;47H82836[13;30H610834[13;46H402882[14;20H1[14;31H7853[14;46H335181[15;25H9[15;37H8[15;59H8[16;26H99[16;40H98[18;55H4[18;69H4 [43d[11;29H70194[11;44H233915[12;31H50350[12;46H653760[13;12Hno link Good: 12631103   Bad: 20473009[K[14;12Hno link Good: 12698962   Bad: 20405151[K[15;24H71[15;36H70[16;25H133[16;39H132[18;55H8[18;69H8 [43d[11;29H98233[11;45H96273[12;12Hno link Good: 12477376   Bad: 20717131[K[13;29H58551[13;44H535957[14;28H726629[14;45H67880[15;25H3[15;37H2[15;59H7[16;26H66[16;40H65[18;54H72[18;68H72 [43d[11;28H917450[11;44H367454[12;29H95038[12;45H89867[13;29H76820[13;44H608086[14;29H45207[14;44H53970[15;25H6[15;37H5[15;59H9[16;26H99[16;40H98[18;55H6[18;69H6 [43d[11;29H4843[11;44H426865[12;28H524764[12;44H850533[13;28H706964[13;45H68334[14;29H75712[14;45H99587[15;25H8[15;37H7[15;59H8[16;25H232[16;39H231[18;54H80[18;68H80 [43d[11;12Hlink w/ 2 Good: 13001480   Bad: 20464213[12;29H77092[12;45H88602[13;29H59653[13;44H706042[14;28H828545[14;44H637151[15;24H81[15;36H80[15;59H7[16;26H65[16;40H64[18;55H4[18;69H4 [43d[11;12Hno link Good: 13035967   Bad: 20520124[K[12;28H610450[12;44H94564[13;29H93456[13;45H62637[14;29H62391[14;45H93703[15;25H3[15;37H2[16;26H98[16;40H97[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 13055127   Bad: 20591359[12;29H28176[12;43H1018311[13;28H811694[13;44H834794[14;12Hlink w/ 1 Good: 12880893   Bad: 20765597[15;25H5[15;37H4[15;59H6[16;25H331[16;39H330[18;54H92[18;68H92 [43d[11;12Hno link Good: 13094527   Bad: 20643004[K[12;29H66571[12;45H7096[13;12Hlink w/ 2 Good: 12850499   Bad: 20887035[14;20H3[14;30H919979[14;46H817556[15;25H8[15;37H7[15;59H7[16;26H65[16;40H64[18;55H6[18;69H6 [43d[11;12Hlink w/ 2 Good: 13147566   Bad: 20680361[12;12Hlink w/ 1 Good: 12718932   Bad: 21108997[13;20H1[13;30H903167[13;46H924763[14;20H2[14;31H72752[14;47H55179[15;24H90[15;37H9[16;26H98[16;40H97[18;53H500[18;67H500 [43d[11;12Hno link Good: 13168135   Bad: 20750188[K[12;12Hno link Good: 12738089   Bad: 21180235[K[13;12Hno link Good: 12922870   Bad: 20995455[K[14;20H3[14;31H92527[14;46H925800[15;25H2[15;36H91[16;25H431[16;39H430[18;55H4[18;69H4 [43d[11;29H92710[11;44H816010[12;29H6135[12;44H247362[13;12Hlink w/ 2 Good: 12946644   Bad: 21062079[14;12Hno link Good: 13016503   Bad: 20992221[K[15;25H5[15;37H4[15;59H8[16;26H64[16;40H63[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 13245755   Bad: 20853361[12;12Hlink w/ 4 Good: 12813720   Bad: 21285397[13;12Hno link Good: 12999346   Bad: 21099773[K[14;29H69271[14;43H1029849[15;25H7[15;37H6[16;26H97[16;40H96[18;54H12[18;68H12 [43d[11;12Hno link Good: 13286543   Bad: 20902968[K[12;12Hno link Good: 12853530   Bad: 21335983[K[13;27H3039534[13;44H149980[14;28H109675[14;45H79840[15;23H900[15;37H9[15;59H9[16;25H531[16;39H530[18;55H6[18;69H6 [43d[11;28H305586[11;45H74325[12;29H71208[12;44H408704[13;29H5779[13;44H222119[14;29H28262[14;44H151653[15;25H2[15;35H901[15;59H6[16;26H64[16;40H63[18;54H20[18;68H20 [43d[11;12Hlink w/ 4 Good: 13343933   Bad: 21026372[12;12Hlink w/ 4 Good: 12908405   Bad: 21461902[13;12Hlink w/ 1 Good: 13095419   Bad: 21274889[14;12Hlink w/ 1 Good: 13166162   Bad: 21204147[15;25H4[15;37H3[16;26H97[16;40H96[18;55H4[18;69H4 [43d[11;31H97057[11;47H63643[12;20H3[12;31H60719[12;47H99983[13;20H4[13;30H148110[13;46H312593[14;20H3[14;30H218930[14;47H41774[15;25H7[15;37H6[15;59H7[16;25H630[16;39H629[18;55H8[18;69H8 [43d[11;12Hno link Good: 13428942   Bad: 21123130[K[12;31H91315[12;46H560758[13;12Hno link Good: 13179236   Bad: 21372839[K[14;12Hno link Good: 13250284   Bad: 21301792[K[15;25H9[15;37H8[16;26H64[16;40H63[18;54H32[18;68H32 [43d[11;29H48051[11;45H94415[12;12Hno link Good: 13008906   Bad: 21633561[K[13;12Hlink w/ 1 Good: 13197496   Bad: 21444972[14;29H68637[14;45H7383[15;24H11[15;36H10[16;26H97[16;40H96[18;55H6[18;69H6 [43d[11;28H500364[11;44H232499[12;12Hlink w/ 1 Good: 13060476   Bad: 21672388[13;20H2[13;30H249353[13;47H8351[14;12Hlink w/ 1 Good: 13320689   Bad: 21412177[15;25H4[15;37H3[15;59H8[16;25H730[16;39H729[18;54H40[18;68H40 [43d[11;29H4741[11;45H75845[12;12Hno link Good: 13106550   Bad: 21716710[K[13;31H95781[13;46H527481[14;12Hno link Good: 13367214   Bad: 21456049[K[15;25H6[15;37H5[16;26H63[16;40H62[18;55H4[18;69H4 [43d[11;29H66548[11;44H347109[12;29H24213[12;45H89445[13;12Hno link Good: 13314001   Bad: 21599659[K[14;29H85686[14;44H527975[15;25H9[15;37H8[15;59H9[16;26H96[16;40H95[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 13598561   Bad: 21405491[12;12Hlink w/ 4 Good: 13155126   Bad: 21848927[13;29H4528[13;44H658773[14;28H417292[14;45H86763[15;24H21[15;36H20[16;25H829[16;39H828[18;54H52[18;68H52 [43d[11;20H3[11;30H651613[11;47H42836[12;20H3[12;30H207409[12;47H87041[13;12Hlink w/ 4 Good: 13397924   Bad: 21696527[14;29H70047[14;44H624405[15;25H3[15;37H2[15;59H6[16;26H62[16;40H61[18;55H6[18;69H6 [43d[11;12Hno link Good: 13684948   Bad: 21499896[K[12;31H39516[12;46H945329[13;12Hno link Good: 13430473   Bad: 21754373[K[14;28H50277[14;45H82071[15;25H6[15;37H5[15;59H7[16;26H96[16;40H95[18;54H60[18;68H60 [43d[11;28H703999[11;44H571243[12;20H4[12;31H57062[12;45H2018182[13;29H48728[13;44H826517[14;29H2131[14;44H753929[15;25H8[15;37H7[16;25H929[16;39H928[18;55H4[18;69H4 [43d[11;29H45751[11;44H62053[12;12Hno link Good: 13297766   Bad: 22068519[K[13;29H89879[13;45H7640[14;12Hlink w/ 2 Good: 13562697   Bad: 21803590[15;24H31[15;36H30[15;59H8[16;26H62[16;40H61[18;55H8[18;69H8 [43d[11;29H98787[11;45H57894[12;12Hlink w/ 1 Good: 13350093   Bad: 22106589[13;12Hlink w/ 4 Good: 13542588   Bad: 21914096[14;12Hno link Good: 13615464   Bad: 21841221[K[15;25H3[15;37H2[16;26H95[16;40H94[18;54H72[18;68H72 [43d[11;28H818199[11;44H728880[12;20H3[12;31H67916[12;47H79165[13;12Hno link Good: 13561087   Bad: 21985995[K[14;29H3423[14;44H912849[15;25H5[15;37H4[15;59H7[16;24H3028[16;38H3027[18;55H6[18;69H6 [43d[11;29H46384[11;45H91094[12;12Hno link Good: 13394787   Bad: 22242692[K[13;29H88463[13;43H2049017[14;12Hlink w/ 2 Good: 13661875   Bad: 21975606[15;25H8[15;37H7[15;59H9[16;26H62[16;40H61[18;54H80[18;68H80 [43d[11;29H65498[11;44H862377[12;28H412420[12;44H315456[13;12Hlink w/ 2 Good: 13606630   Bad: 22121247[14;12Hno link Good: 13680386   Bad: 22047492[K[15;24H40[15;37H9[15;59H8[16;26H95[16;40H94[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 13898207   Bad: 21920063[12;12Hlink w/ 4 Good: 13443965   Bad: 22374306[13;20H4[13;31H38517[13;47H79755[14;12Hlink w/ 3 Good: 13712520   Bad: 22105754[15;25H2[15;36H41[16;25H128[16;39H127[18;55H8[18;69H8 [43d[11;12Hno link Good: 13951325   Bad: 21957341[K[12;12Hno link Good: 13496319   Bad: 22412348[K[13;20H2[13;31H91210[13;46H217458[14;20H1[14;31H65321[14;47H43349[15;25H5[15;37H4[15;59H7[16;26H61[16;40H60[18;54H92[18;68H92 [43d[11;29H84127[11;43H2014935[12;28H527873[12;45H71190[13;12Hno link Good: 13723245   Bad: 22275820[K[14;12Hno link Good: 13797499   Bad: 22201567[K[15;25H7[15;37H6[15;59H6[16;26H94[16;40H93[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 14003200   Bad: 22086258[12;29H45535[12;44H543924[13;29H41483[13;44H347977[14;28H815936[14;45H73525[15;24H50[15;37H9[15;59H8[16;25H227[16;39H226[18;53H600[18;67H600 [43d[11;31H45452[11;46H135051[12;12Hlink w/ 1 Good: 13586835   Bad: 22593669[13;29H83135[13;45H97370[14;29H57824[14;44H322682[15;25H2[15;36H51[15;59H7[16;26H61[16;40H60[18;55H4[18;69H4 [43d[11;12Hno link Good: 14098263   Bad: 22172638[K[12;12Hno link Good: 13638885   Bad: 22632017[K[13;28H835424[13;44H435479[14;28H910235[14;45H60669[15;25H4[15;37H3[16;26H94[16;40H93[18;55H8[18;69H8 [43d[11;28H117334[11;44H243963[12;29H56588[12;44H704710[13;29H53597[13;44H507702[14;29H28770[14;44H432530[15;25H7[15;37H6[15;59H8[16;25H327[16;39H326[18;54H12[18;68H12 [43d[11;12Hlink w/ 2 Good: 14143583   Bad: 22308110[12;12Hlink w/ 4 Good: 13681643   Bad: 22770051[13;12Hlink w/ 4 Good: 13879138   Bad: 22572557[14;29H54572[14;45H97124[15;25H9[15;37H8[16;26H60[16;40H59[18;55H6[18;69H6 [43d[11;12Hno link Good: 14196646   Bad: 22345444[K[12;30H733987[12;46H808104[13;30H931833[13;46H610260[14;12Hlink w/ 3 Good: 14007351   Bad: 22534743[15;24H61[15;36H60[16;26H93[16;40H92[18;54H20[18;68H20 [43d[11;28H235721[11;45H96762[12;12Hno link Good: 13771982   Bad: 22860502[K[13;12Hno link Good: 13970250   Bad: 22662236[K[14;12Hno link Good: 14046034   Bad: 22586453[K[15;25H4[15;37H3[15;59H6[16;25H426[16;39H425[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 14254900   Bad: 22467980[12;29H89556[12;44H933326[13;12Hlink w/ 1 Good: 13988502   Bad: 22734381[14;29H64501[14;44H65838[15;25H6[15;37H5[16;26H60[16;40H59[18;55H8[18;69H8 [43d[11;20H4[11;31H94843[11;46H518432[12;12Hlink w/ 4 Good: 13828599   Bad: 22984677[13;12Hno link Good: 14027913   Bad: 22785364[K[14;12Hlink w/ 2 Good: 14104145   Bad: 22709134[15;25H9[15;37H8[15;59H7[16;26H93[16;40H92[18;54H32[18;68H32 [43d[11;20H3[11;30H347908[11;47H55765[12;20H1[12;31H80944[12;45H3022730[13;12Hlink w/ 1 Good: 14080578   Bad: 22823097[14;20H3[14;31H5687[14;47H46801[15;24H71[15;36H70[16;25H526[16;39H525[18;55H6[18;69H6 [43d[11;31H78007[11;46H617038[12;12Hno link Good: 13909676   Bad: 23085370[K[13;12Hno link Good: 14109876   Bad: 22885171[K[14;12Hno link Good: 14186357   Bad: 22808691[K[15;25H3[15;37H2[16;26H59[16;40H58[18;54H40[18;68H40 [43d[11;20H4[11;31H98124[11;47H8731[12;12Hlink w/ 1 Good: 13928361   Bad: 23157082[13;12Hlink w/ 2 Good: 14129089   Bad: 22956356[14;12Hlink w/ 2 Good: 14205961   Bad: 22879485[15;25H6[15;37H5[15;59H8[16;26H92[16;40H91[18;55H4[18;69H4 [43d[11;20H2[11;30H451212[11;46H724624[12;31H80748[12;47H95089[13;12Hno link Good: 14181720   Bad: 22994118[K[14;31H58770[14;46H917070[15;25H8[15;37H7[16;25H626[16;39H625[18;55H8[18;69H8 [43d[11;12Hno link Good: 14496476   Bad: 22769757[K[12;12Hno link Good: 14025048   Bad: 23241187[K[13;28H226461[13;43H3039775[14;12Hno link Good: 14303595   Bad: 22962642[K[15;24H80[15;37H9[16;26H59[16;40H58[18;54H52[18;68H52 [43d[11;12Hlink w/ 4 Good: 14515649   Bad: 22840980[12;12Hlink w/ 1 Good: 14042716   Bad: 23313914[13;29H44806[13;44H111826[14;29H2213[14;43H3034498[15;25H3[15;36H82[15;59H9[16;26H92[16;40H91[18;55H6[18;69H6 [43d[11;20H3[11;31H49425[11;47H9760[12;31H75353[12;47H71673[13;29H77950[13;45H69077[14;29H55520[14;45H91509[15;25H5[15;37H4[15;59H6[16;25H725[16;39H724[18;54H60[18;68H60 [43d[11;30H602477[11;46H934943[12;30H127700[12;46H409722[13;28H330609[13;44H206814[14;12Hlink w/ 1 Good: 14408324   Bad: 23129100[15;25H8[15;37H7[15;59H7[16;26H58[16;40H57[18;55H4[18;69H4 [43d[11;12Hno link Good: 14634076   Bad: 22993741[K[12;12Hno link Good: 14158050   Bad: 23469768[K[13;29H615[13;45H66310[14;31H39366[14;47H88455[15;24H90[15;37H9[16;26H91[16;40H90[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 14653200   Bad: 23065011[12;29H75678[12;44H542535[13;29H79763[13;44H338451[14;12Hno link Good: 14457832   Bad: 23260383[K[15;25H2[15;36H91[16;25H824[16;39H823[18;54H72[18;68H72 [43d[11;20H2[11;31H95704[11;46H113558[12;12Hlink w/ 1 Good: 14217263   Bad: 23592001[13;12Hlink w/ 2 Good: 14421669   Bad: 23387596[14;12Hlink w/ 2 Good: 14500023   Bad: 23309243[15;25H5[15;37H4[15;59H8[16;26H58[16;40H57[18;55H6[18;69H6 [43d[11;12Hno link Good: 14747297   Bad: 23152357[K[12;12Hno link Good: 14267961   Bad: 23631694[K[13;12Hno link Good: 14472807   Bad: 23426849[K[14;12Hno link Good: 14551226   Bad: 23348431[K[15;25H7[15;37H6[15;59H7[16;26H91[16;40H90[18;54H80[18;68H80 [43d[11;29H663[11;44H223656[12;29H85557[12;44H704497[13;12Hlink w/ 4 Good: 14491030   Bad: 23499025[14;29H69734[14;44H420322[15;23H1000   Good: 999   Bad: 0   B/W: 11.48 Gbps[16;25H924[16;39H923[18;55H4[18;69H4 [43d[11;29H94645[11;45H85805[12;28H312448[12;45H68003[13;12Hno link Good: 14518487   Bad: 23561966[K[14;29H97406[14;45H83048[15;26H2[15;36H1001   Bad: 0   B/W: 11.48 Gbps[16;26H57[16;40H56[18;55H8[18;69H8 [43d[11;28H813793[11;44H357052[12;12Hlink w/ 4 Good: 14330087   Bad: 23840759[13;29H36779[13;44H634068[14;12Hlink w/ 2 Good: 14616052   Bad: 23554797[15;26H4[15;39H3[16;26H90[16;40H89[18;54H92[18;68H92 [43d[11;12Hlink w/ 3 Good: 14848466   Bad: 23413100[12;20H1[12;31H6342[12;47H98140[13;12Hlink w/ 4 Good: 14570735   Bad: 23690834[14;12Hno link Good: 14650183   Bad: 23611387[K[15;26H7[15;39H6[15;61H7[16;24H4024[16;38H4023[18;55H6[18;69H6 [43d[11;12Hno link Good: 14901578   Bad: 23450385[K[12;20H4[12;30H415829[12;46H936135[13;12Hno link Good: 14623397   Bad: 23728568[K[14;28H702996[14;45H48970[15;26H9[15;39H8[16;26H57[16;40H56[18;53H700[18;67H700 [43d[11;29H32409[11;44H509951[12;12Hno link Good: 14445477   Bad: 23996884[K[13;29H5350[13;45H88856[14;12Hlink w/ 1 Good: 14733272   Bad: 23709092[15;25H11[15;38H10[15;61H6[16;26H90[16;40H89[18;55H4[18;69H4 [43d[11;29H51622[11;45H8113[12;29H63079[12;43H4069675[13;29H71733[13;44H861022[14;12Hno link Good: 14751678   Bad: 23781078[K[15;26H4[15;39H3[15;61H7[16;25H123[16;39H122[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 14995487   Bad: 23627661[12;12Hlink w/ 1 Good: 14506084   Bad: 24117065[13;12Hlink w/ 4 Good: 14715061   Bad: 23908089[14;12Hlink w/ 3 Good: 14795189   Bad: 23827962[15;26H6[15;39H5[16;26H56[16;40H55[18;54H12[18;68H12 [43d[11;29H5046613[11;47H66935[12;12Hno link Good: 14556379   Bad: 24157170[K[13;12Hno link Good: 14765741   Bad: 23947809[K[14;12Hno link Good: 14845999   Bad: 23867552[K[15;26H9[15;39H8[15;61H8[16;26H89[16;40H88[18;55H6[18;69H6 [43d[11;12Hno link Good: 15065729   Bad: 23738217[K[12;29H74018[12;44H229929[13;29H83923[13;43H4020025[14;29H6443[14;44H939511[15;25H21[15;38H20[16;25H223[16;39H222[18;54H20[18;68H20 [43d[11;12Hlink w/ 3 Good: 15093701   Bad: 23800640[12;28H600570[12;45H93772[13;12Hlink w/ 4 Good: 14811157   Bad: 24083187[14;29H91750[14;43H4002595[15;26H3[15;39H2[16;26H56[16;40H55[18;55H4[18;69H4 [43d[11;30H146747[11;47H3799[12;12Hlink w/ 4 Good: 14652950   Bad: 24331788[13;20H2[13;31H63792[13;46H12094[14;12Hlink w/ 2 Good: 14944577   Bad: 24040163[15;26H6[15;39H5[15;61H9[16;26H89[16;40H88[18;55H8[18;69H8 [43d[11;12Hno link Good: 15184170   Bad: 23891288[K[12;20H3[12;31H89408[12;47H86051[13;12Hno link Good: 14900671   Bad: 24174789[K[14;20H1[14;31H81586[14;47H93875[15;26H8[15;39H7[15;61H6[16;25H322[16;39H321[18;54H32[18;68H32 [43d[11;28H203292[11;44H962561[12;12Hno link Good: 14707077   Bad: 24458778[K[13;12Hlink w/ 2 Good: 14918945   Bad: 24246911[14;20H2[14;29H5000143[14;46H165714[15;25H30[15;39H9[16;26H55[16;40H54[18;55H6[18;69H6 [43d[11;29H45109[11;43H4011140[12;29H47896[12;44H508354[13;12Hno link Good: 14960134   Bad: 24296117[K[14;20H1[14;31H41546[14;46H214706[15;26H3[15;38H32[15;61H7[16;26H88[16;40H87[18;54H40[18;68H40 [43d[11;29H98201[11;45H48437[12;12Hlink w/ 4 Good: 14800204   Bad: 24546436[13;27H5012802[13;44H333839[14;31H94331[14;47H52311[15;26H5[15;39H4[16;25H422[16;39H421[18;55H4[18;69H4 [43d[11;28H326349[11;44H110692[12;12Hno link Good: 14827041   Bad: 24610001[K[13;12Hlink w/ 1 Good: 15040062   Bad: 24396981[14;12Hno link Good: 15121833   Bad: 24315212[K[15;26H8[15;39H7[15;61H8[16;26H55[16;40H54[18;55H8[18;69H8 [43d[11;12Hlink w/ 4 Good: 15347773   Bad: 24179661[12;29H47154[12;45H8028[13;12Hno link Good: 15060804   Bad: 24466632[K[14;12Hlink w/ 2 Good: 15142681   Bad: 24384756[15;25H40[15;39H9[16;26H88[16;40H87[18;54H52[18;68H52 [43d[11;12Hno link Good: 15400840   Bad: 24216994[K[12;12Hlink w/ 1 Good: 14899523   Bad: 24718312[13;28H113426[13;44H504410[14;20H3[14;31H95465[14;46H422373[15;26H2[15;38H41[16;25H521[16;39H520[18;55H6[18;69H6 [43d[11;29H44689[11;45H63540[12;12Hno link Good: 14942374   Bad: 24765856[K[13;29H56755[13;45H51477[14;12Hno link Good: 15238861   Bad: 24469372[K[15;26H5[15;39H4[15;61H9[16;26H54[16;40H53[18;54H60[18;68H60 [43d[11;29H63796[11;44H334824[12;29H59955[12;44H83866[13;29H75143[13;44H623480[14;12Hlink w/ 1 Good: 15257259   Bad: 24541365[15;26H7[15;39H6[15;61H8[16;26H87[16;40H86[18;55H4[18;69H4 [43d[11;12Hlink w/ 4 Good: 15498989   Bad: 24390032[12;29H93948[12;45H95075[13;28H209637[13;45H79387[14;12Hno link Good: 15291970   Bad: 24597055[K[15;26H9[15;39H8[15;61H6[16;25H620[16;39H619[18;55H8[18;69H8 [43d[11;20H2[11;30H552057[11;46H427361[12;12Hlink w/ 3 Good: 15046284   Bad: 24933135[13;12Hlink w/ 2 Good: 15262303   Bad: 24717117[14;12Hlink w/ 2 Good: 15344753   Bad: 24634668[15;25H52[15;38H51[15;61H7[16;26H54[16;40H53[18;54H72[18;68H72 [43d[11;12Hno link Good: 15582306   Bad: 24487508[K[12;12Hno link Good: 15075309   Bad: 24994506[K[13;12Hno link Good: 15291735   Bad: 24778081[K[14;12Hno link Good: 15374342   Bad: 24695476[K[15;26H4[15;39H3[16;26H87[16;40H86[18;55H6[18;69H6 [43d[11;28H601251[11;44H558960[12;29H92886[12;43H506732[13;28H309911[13;44H850302[14;29H92773[14;44H767441[15;26H7[15;39H6[15;61H8[16;25H720[16;39H719[18;54H80[18;68H80 [43d[11;12Hlink w/ 3 Good: 15644961   Bad: 24605643[12;12Hlink w/ 4 Good: 15135560   Bad: 25115045[13;29H53039[13;45H97567[14;12Hlink w/ 2 Good: 15436091   Bad: 24814516[15;26H9[15;39H8[15;61H7[16;26H53[16;40H52[18;55H4[18;69H4 [43d[11;12Hno link Good: 15695356   Bad: 24645647[K[12;20H1[12;31H85163[12;47H55842[13;28H40304[13;44H93795[14;12Hno link Good: 15486158   Bad: 24854849[K[15;25H61[15;38H60[16;26H86[16;40H85[18;55H8[18;69H8 [43d[11;28H714477[11;44H716922[12;12Hno link Good: 15202847   Bad: 25228553[K[13;29H21406[13;43H5009995[14;28H504665[14;44H926737[15;26H4[15;39H3[15;61H8[16;25H819[16;39H818[18;54H92[18;68H92 [43d[11;12Hlink w/ 4 Good: 15742543   Bad: 24779252[12;29H29793[12;45H92004[13;29H48905[13;45H72893[14;29H32352[14;45H8944[15;26H6[15;39H5[16;26H52[16;40H51[18;55H6[18;69H6 [43d[11;12Hno link Good: 15761654   Bad: 24850537[K[12;29H47389[12;44H364803[13;29H67191[13;44H145002[14;29H50869[14;43H5061326[15;26H8[15;39H7[16;26H86[16;40H85[18;53H800[18;67H800 [43d[11;29H97057[11;44H905530[12;12Hlink w/ 4 Good: 15281772   Bad: 25420817[13;28H501874[13;44H200716[14;29H86026[14;44H116565[15;25H71[15;38H70[15;61H7[16;25H919[16;39H918[18;55H4[18;69H4 [43d[11;28H850113[11;45H4287[12;12Hno link Good: 15334138   Bad: 25458847[K[13;29H54519[13;45H38467[14;28H638783[14;45H54204[15;26H3[15;39H2[15;61H6[16;26H52[16;40H51[18;55H8[18;69H8 [43d[11;29H80036[11;43H5003344[12;12Hlink w/ 4 Good: 15362771   Bad: 25520610[13;29H83732[13;45H99650[14;29H68046[14;44H215337[15;26H6[15;39H5[15;61H7[16;26H85[16;40H84[18;54H12[18;68H12 [43d[11;29H99139[11;45H7463[12;12Hno link Good: 15380486   Bad: 25593288[K[13;28H602140[13;44H371636[14;29H86539[14;45H87238[15;26H8[15;39H7[16;24H5018[16;38H5017[18;55H6[18;69H6 [43d[11;12Hlink w/ 2 Good: 15943983   Bad: 25120190[12;28H424460[12;44H639714[13;12Hlink w/ 2 Good: 15646537   Bad: 25417638[14;28H731013[14;44H333163[15;25H80[15;39H9[16;26H51[16;40H50[18;54H20[18;68H20 [43d[11;12Hno link Good: 15994198   Bad: 25160370[K[12;29H73752[12;45H80817[13;12Hno link Good: 15696226   Bad: 25458344[K[14;29H80745[14;45H73827[15;26H3[15;38H82[15;61H8[16;26H84[16;40H83[18;55H4[18;69H4 [43d[11;27H6013381[11;44H231576[12;29H91350[12;44H753609[13;28H714685[13;44H530275[14;29H99144[14;44H44581[15;26H5[15;39H4[16;25H118[16;39H117[18;55H8[18;69H8 [43d[11;29H42279[11;45H93079[12;28H519027[12;44H816332[13;29H42879[13;45H92481[14;12Hlink w/ 2 Good: 15827541   Bad: 25507820[15;26H8[15;39H7[15;61H9[16;26H51[16;40H50[18;54H32[18;68H32 [43d[11;12Hlink w/ 2 Good: 16095533   Bad: 25330504[12;29H71553[12;45H54485[13;29H9571[13;44H630320[14;31H80569[14;47H45472[15;25H90[15;39H9[16;26H84[16;40H83[18;55H6[18;69H6 [43d[11;20H4[11;30H131840[11;47H84642[12;28H606729[12;44H909754[13;12Hlink w/ 2 Good: 15831408   Bad: 25685076[14;12Hno link Good: 15916429   Bad: 25600057[K[15;26H2[15;38H91[15;61H6[16;25H217[16;39H216[18;54H40[18;68H40 [43d[11;20H2[11;31H51003[11;46H455874[12;29H24367[12;45H82511[13;12Hno link Good: 15849660   Bad: 25757219[K[14;29H34984[14;45H71896[15;26H5[15;39H4[15;61H7[16;26H50[16;40H49[18;55H4[18;69H4 [43d[11;20H3[11;31H9378[11;46H503488[12;29H66149[12;43H6031123[13;12Hlink w/ 2 Good: 15891842   Bad: 25805431[14;29H7740[14;44H719870[15;26H7[15;39H6[16;26H83[16;40H82[18;55H8[18;69H8 [43d[11;30H246866[11;47H40800[12;28H718465[12;45H69202[13;12Hno link Good: 15944524   Bad: 25843144[K[14;27H6030201[14;45H57468[15;26H9[15;39H8[16;25H317[16;39H316[18;54H52[18;68H52 [43d[11;31H74859[11;46H603204[12;29H45112[12;44H13295[13;29H71748[13;44H906317[14;29H57709[14;44H820357[15;24H102[15;37H101[15;61H8[16;26H50[16;40H49[18;55H6[18;69H6 [43d[11;31H97340[11;47H71116[12;29H66[12;44H202345[13;29H93402[13;45H75056[14;29H79616[14;45H88844[15;26H4[15;39H3[16;26H83[16;40H82[18;54H60[18;68H60 [43d[11;20H4[11;30H350425[11;46H708427[12;12Hlink w/ 4 Good: 15818419   Bad: 26240434[13;12Hlink w/ 2 Good: 16046123   Bad: 26012732[14;28H132412[14;44H9264[15;26H7[15;39H6[15;61H9[16;25H416[16;39H415[18;55H4[18;69H4 [43d[11;31H93263[11;47H55990[12;12Hno link Good: 15860256   Bad: 26288997[K[13;12Hno link Good: 16088410   Bad: 26060845[K[14;29H74833[14;45H74423[15;26H9[15;39H8[15;61H8[16;26H49[16;40H48[18;55H8[18;69H8 [43d[11;12Hno link Good: 16412344   Bad: 25827306[K[12;29H7799[12;44H361655[13;12Hlink w/ 1 Good: 16106796   Bad: 26132856[14;29H93341[14;43H6046312[15;25H11[15;38H10[16;26H82[16;40H81[18;54H72[18;68H72 [43d[11;12Hlink w/ 3 Good: 16448553   Bad: 25881491[12;28H913047[12;44H416998[13;12Hno link Good: 16142350   Bad: 26187696[K[14;28H229129[14;44H100918[15;26H4[15;39H3[15;61H7[16;25H515[16;39H514[18;55H6[18;69H6 [43d[11;30H501655[11;46H918784[12;12Hlink w/ 1 Good: 15965404   Bad: 26455036[13;12Hlink w/ 4 Good: 16195056   Bad: 26225385[14;12Hlink w/ 3 Good: 16281913   Bad: 26138530[15;26H6[15;39H5[16;26H49[16;40H48[18;54H80[18;68H80 [43d[11;12Hno link Good: 16530765   Bad: 25980073[K[12;12Hno link Good: 15993277   Bad: 26517562[K[13;12Hno link Good: 16223522   Bad: 26287319[K[14;12Hno link Good: 16310468   Bad: 26200374[K[15;26H8[15;39H7[16;26H82[16;40H81[18;55H4[18;69H4 [43d[11;29H4991[11;43H6051314[12;27H6010898[12;45H9033[13;12Hlink w/ 2 Good: 16241806   Bad: 26359425[14;29H28923[14;45H72309[15;25H21[15;38H20[15;61H8[16;25H615[16;39H614[18;55H8[18;69H8 [43d[11;29H95273[11;45H96355[12;12Hlink w/ 4 Good: 16055445   Bad: 26636184[13;12Hno link Good: 16286765   Bad: 26404865[K[14;12Hlink w/ 1 Good: 16373995   Bad: 26317637[15;26H3[15;39H2[15;61H7[16;26H48[16;40H47[18;54H92[18;68H92 [43d[11;12Hlink w/ 4 Good: 16644688   Bad: 26137327[12;12Hno link Good: 16104019   Bad: 26677997[K[13;12Hlink w/ 4 Good: 16335708   Bad: 26446310[14;12Hno link Good: 16423020   Bad: 26358998[K[15;26H6[15;39H5[15;61H8[16;26H81[16;40H80[18;55H6[18;69H6 [43d[11;12Hno link Good: 16663755   Bad: 26208662[K[12;12Hlink w/ 4 Good: 16121674   Bad: 26750744[13;12Hno link Good: 16354081   Bad: 26518339[K[14;29H41471[14;44H430950[15;26H8[15;39H7[16;25H714[16;39H713[18;53H900[18;67H900 [43d[11;29H92049[11;45H70768[12;12Hno link Good: 16148582   Bad: 26814236[K[13;29H8157[13;45H8124[14;29H69263[14;45H93558[15;25H30[15;39H9[16;26H47[16;40H46[18;55H4[18;69H4 [43d[11;28H711197[11;44H342014[12;29H66141[12;45H87071[13;12Hlink w/ 2 Good: 16399815   Bad: 26653399[14;12Hlink w/ 1 Good: 16487741   Bad: 26565474[15;26H3[15;38H32[15;61H9[16;26H81[16;40H80[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 16747477   Bad: 26396133[12;12Hlink w/ 1 Good: 16201545   Bad: 26942066[13;30H435589[13;46H708024[14;12Hno link Good: 16523857   Bad: 26619756[K[15;26H5[15;39H4[15;61H7[16;25H814[16;39H813[18;54H12[18;68H12 [43d[11;12Hno link Good: 16800571   Bad: 26433435[K[12;20H3[12;31H53848[12;47H80159[13;12Hno link Good: 16488252   Bad: 26745756[K[14;29H76582[14;45H57427[15;26H7[15;39H6[15;61H6[16;26H47[16;40H46[18;55H6[18;69H6 [43d[11;29H29403[11;45H94999[12;12Hno link Good: 16281471   Bad: 27042932[K[13;12Hlink w/ 4 Good: 16516373   Bad: 26808032[14;28H604804[14;44H719602[15;25H40[15;39H9[15;61H7[16;26H80[16;40H79[18;54H20[18;68H20 [43d[11;29H48547[11;44H566247[12;29H99110[12;44H115685[13;12Hno link Good: 16534661   Bad: 26880135[K[14;29H23339[14;45H91459[15;26H2[15;38H41[16;25H913[16;39H912[18;55H4[18;69H4 [43d[11;29H94365[11;44H610826[12;28H344072[12;45H61120[13;29H79907[13;44H925286[14;12Hlink w/ 1 Good: 16668784   Bad: 26836411[15;26H5[15;39H4[15;61H8[16;26H46[16;40H45[18;55H8[18;69H8 [43d[11;28H943479[11;45H52110[12;29H92365[12;44H203225[13;12Hlink w/ 1 Good: 16628592   Bad: 26966999[14;30H717509[14;47H78083[15;26H7[15;39H6[16;26H79[16;40H78[18;54H32[18;68H32 [43d[11;29H62693[11;44H723285[12;28H410028[12;45H75951[13;12Hno link Good: 16646722   Bad: 27039258[K[14;12Hno link Good: 16735974   Bad: 26950007[K[15;26H9[15;39H8[16;24H6013[16;38H6012[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 16992545   Bad: 26783837[12;29H38813[12;44H337570[13;12Hlink w/ 1 Good: 16675934   Bad: 27100450[14;12Hlink w/ 3 Good: 16765450   Bad: 27010936[15;25H52[15;38H51[15;61H9[16;26H46[16;40H45[18;54H40[18;68H40 [43d[11;29H7045610[11;46H82116[12;29H91150[12;45H75628[13;12Hno link Good: 16728630   Bad: 27138150[K[14;12Hno link Good: 16818192   Bad: 27048589[K[15;26H4[15;39H3[15;61H6[16;26H79[16;40H78[18;55H4[18;69H4 [43d[11;12Hno link Good: 17081079   Bad: 26876097[K[12;12Hlink w/ 3 Good: 16525378   Bad: 27431799[13;29H63452[13;45H93726[14;29H53034[14;44H104145[15;26H6[15;39H5[16;25H112[16;39H111[18;55H8[18;69H8 [43d[11;28H100212[11;44H947358[12;12Hno link Good: 16542930   Bad: 27504641[K[13;29H81794[13;44H265778[14;29H7158[14;45H75989[15;26H9[15;39H8[15;61H7[16;26H45[16;40H44[18;54H52[18;68H52 [43d[11;12Hlink w/ 2 Good: 17143828   Bad: 26994138[12;12Hlink w/ 1 Good: 16585605   Bad: 27552362[13;12Hlink w/ 2 Good: 16824892   Bad: 27313076[14;28H91490[14;44H223065[15;25H61[15;38H60[16;26H78[16;40H77[18;55H6[18;69H6 [43d[11;31H96893[11;45H7031467[12;30H637907[12;47H90454[13;31H77606[13;47H5075[14;12Hlink w/ 2 Good: 16967669   Bad: 27260694[15;26H4[15;39H3[15;61H8[16;25H211[16;39H210[18;54H60[18;68H60 [43d[11;12Hno link Good: 17223967   Bad: 27094791[K[12;12Hno link Good: 16663647   Bad: 27655112[K[13;12Hno link Good: 16903882   Bad: 27414878[K[14;12Hno link Good: 16994160   Bad: 27324601[K[15;26H6[15;39H5[16;26H45[16;40H44[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 17247155   Bad: 27162001[12;12Hlink w/ 4 Good: 16685711   Bad: 27723447[13;12Hlink w/ 4 Good: 16926432   Bad: 27482727[14;27H7017115[14;45H92045[15;26H8[15;39H7[15;61H7[16;26H78[16;40H77[18;55H8[18;69H8 [43d[11;20H4[11;30H300170[11;47H99380[12;20H1[12;30H738118[12;47H61433[13;31H7906[13;46H520491[14;12Hlink w/ 2 Good: 17069950   Bad: 27429604[15;25H71[15;38H70[15;61H8[16;25H311[16;39H310[18;54H72[18;68H72 [43d[11;12Hno link Good: 17342234   Bad: 27247712[K[12;12Hno link Good: 16779128   Bad: 27810819[K[13;12Hno link Good: 17020561   Bad: 27569387[K[14;12Hno link Good: 17111502   Bad: 27478447[K[15;26H3[15;39H2[16;26H44[16;40H43[18;55H6[18;69H6 [43d[11;29H61318[11;44H319025[12;29H96707[12;45H83637[13;29H38800[13;44H641545[14;29H3002[14;44H550324[15;26H6[15;39H5[15;61H7[16;26H77[16;40H76[18;54H80[18;68H80 [43d[11;12Hlink w/ 3 Good: 17398411   Bad: 27372328[12;28H832779[12;44H937961[13;29H75252[13;45H95489[14;29H66694[14;44H604048[15;26H8[15;39H7[16;25H410[16;39H409[18;55H4[18;69H4 [43d[11;12Hno link Good: 17451515   Bad: 27409619[K[12;29H85091[12;45H76044[13;28H127917[13;44H73321[14;12Hlink w/ 3 Good: 17219516   Bad: 27641622[15;25H80[15;39H9[16;26H44[16;40H43[18;55H8[18;69H8 [43d[11;29H79839[11;45H71691[12;28H912039[12;43H8039492[13;12Hlink w/ 2 Good: 17155429   Bad: 27796104[14;12Hno link Good: 17247246   Bad: 27704288[K[15;26H3[15;38H82[15;61H8[16;26H77[16;40H76[18;54H92[18;68H92 [43d[11;29H99023[11;44H542903[12;29H29644[12;44H112284[13;12Hno link Good: 17173631   Bad: 27868298[K[14;29H65762[14;45H7616[15;26H5[15;39H4[15;61H7[16;25H510[16;39H509[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 17545139   Bad: 27587185[12;29H7505[12;45H57271[13;28H219322[13;44H913004[14;28H311671[14;44H820656[15;26H7[15;39H6[16;26H43[16;40H42[18;52H2000[18;66H2000 [43d[11;12Hno link Good: 17593680   Bad: 27629039[K[12;27H702267[12;44H200047[13;29H67376[13;45H55346[14;29H59876[14;45H62847[15;25H90[15;39H9[15;61H8[16;26H76[16;40H75[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 17612864   Bad: 27700252[12;29H40233[12;45H72884[13;29H85784[13;43H8027334[14;29H78294[14;44H934826[15;26H2[15;38H91[16;25H609[16;39H608[18;55H8[18;69H8 [43d[11;12Hno link Good: 17641050   Bad: 27762464[K[12;12Hlink w/ 1 Good: 17067155   Bad: 28336360[13;28H313288[13;45H90228[14;28H405968[14;45H97549[15;26H5[15;39H4[15;61H9[16;26H42[16;40H41[18;54H12[18;68H12 [43d[11;29H60197[11;44H833711[12;12Hno link Good: 17084909   Bad: 28409000[K[13;29H31535[13;44H162376[14;29H24469[14;43H8069443[15;26H7[15;39H6[15;61H7[16;26H76[16;40H75[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 17697617   Bad: 27886685[12;12Hlink w/ 1 Good: 17121263   Bad: 28463041[13;12Hlink w/ 4 Good: 17368251   Bad: 28216054[14;29H61455[14;44H122851[15;26H9[15;39H8[15;61H6[16;25H709[16;39H708[18;54H20[18;68H20 [43d[11;12Hno link Good: 17750727   Bad: 27923973[K[12;31H73597[12;46H501105[13;12Hno link Good: 17420955   Bad: 28253748[K[14;12Hlink w/ 1 Good: 17514231   Bad: 28160473[15;24H202[15;37H201[15;61H7[16;26H42[16;40H41[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 17778853   Bad: 27986239[12;12Hno link Good: 17200293   Bad: 28564800[K[13;29H48137[13;44H316957[14;12Hno link Good: 17541630   Bad: 28223465[K[15;26H4[15;39H3[16;26H75[16;40H74[18;55H8[18;69H8 [43d[11;20H4[11;31H98021[11;45H8057470[12;12Hlink w/ 1 Good: 17217760   Bad: 28637733[13;29H66369[13;45H89125[14;29H60112[14;45H95383[15;26H6[15;39H5[16;25H808[16;39H807[18;54H32[18;68H32 [43d[11;12Hno link Good: 17844687   Bad: 28101202[K[12;12Hno link Good: 17263701   Bad: 28682189[K[13;12Hlink w/ 1 Good: 17512500   Bad: 28433391[14;12Hlink w/ 1 Good: 17606478   Bad: 28339414[15;26H9[15;39H8[15;61H8[16;26H41[16;40H40[18;55H6[18;69H6 [43d[11;29H92935[11;45H43349[12;28H311103[12;44H725182[13;20H2[13;31H60267[13;47H76019[14;31H54320[14;47H81967[15;25H11[15;38H10[16;26H74[16;40H73[18;54H40[18;68H40 [43d[11;28H912023[11;44H214657[12;29H28677[12;45H98005[13;20H4[13;31H78474[13;46H54820[14;12Hno link Good: 17672882   Bad: 28453802[K[15;26H4[15;39H3[15;61H9[16;25H908[16;39H907[18;55H4[18;69H4 [43d[11;29H42735[11;45H74340[12;29H58264[12;44H858812[13;12Hno link Good: 17608592   Bad: 28608485[K[14;12Hlink w/ 1 Good: 17703155   Bad: 28513923[15;26H6[15;39H5[15;61H8[16;26H41[16;40H40[18;55H8[18;69H8 [43d[11;12Hlink w/ 4 Good: 17995754   Bad: 28311720[12;12Hlink w/ 3 Good: 17410646   Bad: 28896829[13;12Hlink w/ 4 Good: 17661200   Bad: 28646276[14;12Hno link Good: 17755938   Bad: 28551539[K[15;26H8[15;39H7[15;61H6[16;26H74[16;40H73[18;54H52[18;68H52 [43d[11;12Hno link Good: 18030378   Bad: 28367818[K[12;12Hno link Good: 17444066   Bad: 28954131[K[13;12Hno link Good: 17695126   Bad: 28703072[K[14;29H89969[14;44H608230[15;25H21[15;38H20[15;61H7[16;24H7007[16;38H7006[18;55H6[18;69H6 [43d[11;29H49474[11;44H439109[12;29H61727[12;43H9026857[13;28H713444[13;45H75141[14;28H808446[14;45H8014[15;26H3[15;39H2[16;26H40[16;40H39[18;54H60[18;68H60 [43d[11;12Hlink w/ 4 Good: 18094010   Bad: 28484976[12;12Hlink w/ 1 Good: 17505466   Bad: 29073522[13;12Hlink w/ 2 Good: 17757541   Bad: 28821448[14;29H5276[14;44H726224[15;26H5[15;39H4[16;26H73[16;40H72[18;55H4[18;69H4 [43d[11;30H147042[11;46H522338[12;12Hno link Good: 17557771   Bad: 29111610[K[13;12Hno link Good: 17810233   Bad: 28859150[K[14;28H90554[14;45H63838[15;26H8[15;39H7[15;61H8[16;25H107[16;39H106[18;55H8[18;69H8 [43d[11;12Hno link Good: 18172174   Bad: 28587606[K[12;12Hlink w/ 3 Good: 17581617   Bad: 29178164[13;12Hlink w/ 1 Good: 17834621   Bad: 28925161[14;12Hlink w/ 2 Good: 17930110   Bad: 28829673[15;25H30[15;39H9[16;26H40[16;40H39[18;54H72[18;68H72 [43d[11;12Hlink w/ 2 Good: 18196506   Bad: 28653669[12;12Hno link Good: 17604718   Bad: 29245458[K[13;12Hno link Good: 17858263   Bad: 28991914[K[14;12Hno link Good: 17953985   Bad: 28896193[K[15;26H3[15;38H32[16;26H73[16;40H72[18;55H6[18;69H6 [43d[11;12Hno link Good: 18249572   Bad: 28690999[K[12;12Hlink w/ 3 Good: 17657032   Bad: 29283540[13;28H910950[13;43H9029623[14;12Hlink w/ 3 Good: 18006753   Bad: 28933822[15;26H5[15;39H4[16;25H206[16;39H205[18;54H80[18;68H80 [43d[11;29H90593[11;44H740376[12;12Hno link Good: 17696896   Bad: 29334074[K[13;29H51342[13;45H79629[14;12Hno link Good: 18047406   Bad: 28983566[K[15;26H7[15;39H6[16;26H39[16;40H38[18;55H4[18;69H4 [43d[11;28H30971[11;44H811652[12;12Hlink w/ 4 Good: 17714542   Bad: 29406824[13;29H69731[13;44H151636[14;12Hlink w/ 2 Good: 18065930   Bad: 29055439[15;25H40[15;39H9[15;61H7[16;26H72[16;40H71[18;55H8[18;69H8 [43d[11;29H47695[11;45H6406[12;12Hno link Good: 17751651   Bad: 29460108[K[13;12Hlink w/ 1 Good: 18007103   Bad: 29204657[14;12Hno link Good: 18103571   Bad: 29108190[K[15;26H2[15;38H41[16;25H305[16;39H304[18;54H92[18;68H92 [43d[11;12Hlink w/ 2 Good: 18400757   Bad: 28901398[12;12Hlink w/ 4 Good: 17803999   Bad: 29498157[13;20H4[13;31H59721[13;47H4243[14;29H56388[14;45H45771[15;26H4[15;39H3[16;26H39[16;40H38[18;55H6[18;69H6 [43d[11;12Hno link Good: 18428001   Bad: 28964550[K[12;12Hno link Good: 17829873   Bad: 29562680[K[13;12Hno link Good: 18086141   Bad: 29306413[K[14;29H83093[14;44H209462[15;26H7[15;39H6[16;26H72[16;40H71[18;53H100[18;67H100 [43d[11;29H47058[11;43H9035889[12;29H47450[12;44H635499[13;28H104430[13;45H78520[14;28H201577[14;45H81374[15;26H9[15;39H8[16;25H405[16;39H404[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 18494413   Bad: 29078928[12;12Hlink w/ 4 Good: 17893855   Bad: 29679487[13;29H51234[13;44H422109[14;29H48514[14;44H324831[15;25H52[15;38H51[15;61H8[16;26H38[16;40H37[18;55H8[18;69H8 [43d[11;20H4[11;30H541989[11;46H121749[12;12Hno link Good: 17940541   Bad: 29723198[K[13;29H98239[13;45H65501[14;12Hlink w/ 2 Good: 18295610   Bad: 29368131[15;26H4[15;39H3[16;26H71[16;40H70[18;54H12[18;68H12 [43d[11;12Hno link Good: 18561038   Bad: 29193099[K[12;29H58166[12;45H95972[13;12Hlink w/ 1 Good: 18216410   Bad: 29537729[14;12Hno link Good: 18314090   Bad: 29440051[K[15;26H6[15;39H5[16;25H504[16;39H503[18;55H6[18;69H6 [43d[11;29H89145[11;44H255386[12;12Hlink w/ 1 Good: 17985124   Bad: 29859409[13;31H43796[13;46H600738[14;29H41791[14;44H502744[15;26H9[15;39H8[15;61H9[16;26H37[16;40H36[18;54H20[18;68H20 [43d[11;28H608223[11;44H326708[12;12Hno link Good: 18002616   Bad: 29932317[K[13;12Hno link Good: 18261937   Bad: 29672997[K[14;29H60323[14;45H74612[15;25H61[15;38H60[15;61H7[16;26H71[16;40H70[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 18646800   Bad: 29378852[12;29H40181[12;45H85472[13;12Hlink w/ 1 Good: 18299914   Bad: 29725741[14;12Hlink w/ 2 Good: 18398531   Bad: 29627125[15;26H3[15;39H2[15;61H6[16;25H604[16;39H603[18;55H8[18;69H8 [43d[11;20H2[11;31H99897[11;46H416147[12;12Hlink w/ 1 Good: 18092518   Bad: 30023528[13;12Hno link Good: 18352587   Bad: 29763460[K[14;12Hno link Good: 18451302   Bad: 29664746[K[15;26H6[15;39H5[15;61H7[16;26H37[16;40H36[18;54H32[18;68H32 [43d[11;30H726725[11;47H79718[12;12Hno link Good: 18118023   Bad: 30088421[K[13;12Hlink w/ 1 Good: 18378558   Bad: 29827887[14;29H776[14;44H728844[15;26H8[15;39H7[16;26H70[16;40H69[18;55H6[18;69H6 [43d[11;12Hno link Good: 18745801   Bad: 29551037[K[12;29H35681[12;44H161158[13;12Hno link Good: 18396905   Bad: 29899935[K[14;12Hlink w/ 2 Good: 18496172   Bad: 29800669[15;25H71[15;38H70[15;61H8[16;25H703[16;39H702[18;54H40[18;68H40 [43d[11;12Hlink w/ 2 Good: 18792681   Bad: 29594553[12;12Hlink w/ 1 Good: 18181689   Bad: 30205546[13;12Hlink w/ 1 Good: 18443310   Bad: 29943927[14;30H542763[14;47H44475[15;26H3[15;39H2[16;26H36[16;40H35[18;55H4[18;69H4 [43d[11;12Hno link Good: 18839763   Bad: 29637865[K[12;12Hno link Good: 18227957   Bad: 30249673[K[13;20H2[13;31H8995[13;47H87681[14;12Hno link Good: 18589497   Bad: 29888135[K[15;26H5[15;39H4[16;26H70[16;40H69[18;55H8[18;69H8 [43d[11;29H58919[11;44H709109[12;29H4547[12;44H322552[13;12Hno link Good: 18508183   Bad: 30059847[K[14;28H607969[14;44H960062[15;26H8[15;39H7[16;25H803[16;39H802[18;54H52[18;68H52 [43d[11;29H90802[11;45H67616[12;12Hlink w/ 3 Good: 18276269   Bad: 30382150[13;29H39597[13;44H118823[14;29H39526[14;42H30018896[15;25H80[15;39H9[16;26H36[16;40H35[18;55H6[18;69H6 [43d[11;28H94387[11;44H804949[12;20H1[12;30H328594[12;46H420228[13;12Hlink w/ 4 Good: 18592282   Bad: 30156541[14;12Hlink w/ 1 Good: 18692314   Bad: 30056511[15;26H3[15;38H82[15;61H7[16;26H69[16;40H68[18;54H60[18;68H60 [43d[11;29H77419[11;45H61796[12;12Hno link Good: 18360813   Bad: 30478403[K[13;12Hno link Good: 18625014   Bad: 30214204[K[14;30H725248[14;46H11397[15;26H5[15;39H4[16;25H902[16;39H901[18;55H4[18;69H4 [43d[11;29H96511[11;44H933100[12;29H78496[12;44H551116[13;29H43372[13;45H86241[14;12Hno link Good: 18743849   Bad: 30185765[K[15;26H7[15;39H6[16;26H35[16;40H34[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 19042130   Bad: 29977878[12;12Hlink w/ 4 Good: 18423245   Bad: 30596764[13;12Hlink w/ 2 Good: 18688488   Bad: 30331522[14;12Hlink w/ 2 Good: 18789194   Bad: 30230817[15;25H90[15;39H9[15;61H8[16;26H68[16;40H67[18;54H72[18;68H72 [43d[11;20H4[11;31H95173[11;44H30015230[12;31H7557[12;46H634829[13;30H741109[13;47H69297[14;20H1[14;30H841986[14;47H68421[15;26H2[15;38H91[16;24H8002[16;38H8001[18;55H6[18;69H6 [43d[11;20H3[11;30H119400[11;47H81399[12;12Hno link Good: 18498469   Bad: 30702331[K[13;20H1[13;31H64528[13;46H436274[14;12Hno link Good: 18865581   Bad: 30335222[K[15;26H4[15;39H3[15;61H7[16;26H35[16;40H34[18;54H80[18;68H80 [43d[11;20H2[11;31H4474[11;46H146456[12;12Hlink w/ 3 Good: 18522496   Bad: 30768702[13;20H4[13;31H89099[13;46H502100[14;12Hlink w/ 3 Good: 18890476   Bad: 30400724[15;26H7[15;39H6[15;61H8[16;26H68[16;40H67[18;55H4[18;69H4 [43d[11;20H4[11;31H97869[11;47H83723[12;20H1[12;31H74885[12;46H806708[13;12Hno link Good: 18841784   Bad: 30539810[K[14;30H943182[14;47H38413[15;26H9[15;39H8[16;25H101[16;39H100[18;55H8[18;69H8 [43d[11;20H3[11;30H237862[11;46H234124[12;12Hno link Good: 18613801   Bad: 30858187[K[13;29H81231[13;45H90758[14;20H2[14;31H82655[14;47H89335[15;24H302[15;37H301[15;61H9[16;26H34[16;40H33[18;54H92[18;68H92 [43d[11;12Hno link Good: 19256989   Bad: 30305399[K[12;29H31353[12;44H931036[13;29H99480[13;44H662911[14;12Hno link Good: 19001262   Bad: 30561130[K[15;26H4[15;39H3[15;61H7[16;26H67[16;40H66[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 19296059   Bad: 30356720[12;29H69454[12;45H8332[13;28H937914[13;44H714867[14;29H39900[14;44H612882[15;26H6[15;39H5[16;25H200[16;40H99[18;53H200[18;67H200 [43d[11;12Hno link Good: 19349119   Bad: 30394053[K[12;12Hlink w/ 1 Good: 18721826   Bad: 31021347[13;29H90612[13;45H52562[14;29H92653[14;45H5052[15;26H9[15;39H8[16;26H34[16;39H233[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 19375394   Bad: 30458179[12;12Hno link Good: 18746731   Bad: 31086843[K[13;27H901609[13;44H817483[14;28H118259[14;44H715317[15;25H11[15;38H10[16;26H67[16;40H66[18;55H8[18;69H8 [43d[11;12Hno link Good: 19394411   Bad: 30529557[K[12;29H64449[12;44H159520[13;29H3437[13;45H89598[14;29H36678[14;45H87294[15;26H3[15;39H2[16;25H300[16;40H99[18;54H12[18;68H12 [43d[11;28H442780[11;45H71585[12;12Hlink w/ 1 Good: 18811804   Bad: 31202563[13;12Hlink w/ 1 Good: 19082103   Bad: 30932265[14;12Hlink w/ 2 Good: 19184660   Bad: 30829709[15;26H6[15;39H5[15;61H8[16;26H33[16;39H332[18;55H6[18;69H6 [43d[11;29H89288[11;44H615473[12;20H3[12;31H5742[12;47H47338[13;12Hno link Good: 19128080   Bad: 30976683[K[14;12Hno link Good: 19230751   Bad: 30874013[K[15;26H8[15;39H7[16;26H66[16;40H65[18;54H20[18;68H20 [43d[11;28H50843[11;45H86718[12;12Hno link Good: 18875073   Bad: 31320084[K[13;29H46333[13;43H1048826[14;29H49177[14;44H94598[15;25H21[15;38H20[15;61H9[16;26H99[16;40H98[18;55H4[18;69H4 [43d[11;29H36607[11;44H748945[12;28H902004[12;45H83549[13;29H73758[13;44H11179[14;12Hlink w/ 1 Good: 19276983   Bad: 31008572[15;26H3[15;39H2[15;61H8[16;25H432[16;39H431[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 19555729   Bad: 30820220[12;29H19588[12;44H456362[13;29H92012[13;45H83940[14;12Hno link Good: 19295703   Bad: 31080250[K[15;26H5[15;39H4[15;61H6[16;26H66[16;40H65[18;54H32[18;68H32 [43d[11;12Hno link Good: 19595351   Bad: 30871317[K[12;12Hlink w/ 3 Good: 18958158   Bad: 31508512[13;28H231064[13;44H235607[14;28H334870[14;44H131802[15;26H8[15;39H7[15;61H7[16;26H99[16;40H98[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 19648500   Bad: 30908567[12;29H9010473[12;47H46596[13;29H83752[13;45H73318[14;12Hlink w/ 3 Good: 19387587   Bad: 31169484[15;25H30[15;39H9[16;25H532[16;39H531[18;54H40[18;68H40 [43d[11;31H74391[11;47H73073[12;12Hno link Good: 19034912   Bad: 31612553[K[13;28H308821[13;44H338645[14;20H2[14;30H41282[14;46H234641[15;26H2[15;38H31[16;26H65[16;40H64[18;55H4[18;69H4 [43d[11;12Hno link Good: 19693442   Bad: 31044416[K[12;29H52549[12;45H85311[13;12Hlink w/ 4 Good: 19327054   Bad: 31410807[14;12Hno link Good: 19431372   Bad: 31306490[K[15;26H5[15;39H4[15;61H8[16;26H98[16;40H97[18;55H8[18;69H8 [43d[11;28H741303[11;45H86953[12;29H99634[12;44H728623[13;12Hno link Good: 19374426   Bad: 31453832[K[14;29H79063[14;45H49196[15;26H7[15;39H6[16;25H631[16;39H630[18;54H52[18;68H52 [43d[11;29H87455[11;44H131190[12;28H14489[12;45H73752[13;12Hlink w/ 2 Good: 19420024   Bad: 31498623[14;28H52480[14;45H93845[15;25H40[15;39H9[16;26H65[16;40H64[18;55H6[18;69H6 [43d[11;28H806721[11;44H202327[12;29H62505[12;44H846544[13;12Hno link Good: 19438330   Bad: 31570720[K[14;29H43314[14;44H465737[15;26H2[15;38H41[16;26H98[16;40H97[18;54H60[18;68H60 [43d[11;12Hlink w/ 2 Good: 19839690   Bad: 31259752[12;29H94209[12;44H90523[13;12Hlink w/ 2 Good: 19470529   Bad: 31628915[14;29H75822[14;44H523623[15;26H4[15;39H3[16;25H731[16;39H730[18;55H4[18;69H4 [43d[11;20H3[11;31H92748[11;47H9709[12;12Hlink w/ 3 Good: 19246541   Bad: 31943301[13;20H1[13;30H523231[13;47H66612[14;28H628628[14;45H61216[15;26H7[15;39H6[15;61H7[16;26H64[16;40H63[18;55H8[18;69H8 [43d[11;20H2[11;30H92509[11;46H355139[12;12Hno link Good: 19277713   Bad: 32002525[K[13;12Hno link Good: 19554885   Bad: 31725354[K[14;29H60471[14;44H619769[15;26H9[15;39H8[16;26H97[16;40H96[18;54H72[18;68H72 [43d[11;12Hno link Good: 19944269   Bad: 31426364[K[12;29H95252[12;45H75382[13;12Hlink w/ 2 Good: 19573178   Bad: 31797457[14;29H78975[14;45H91661[15;25H51[15;38H50[16;25H830[16;39H829[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 19990922   Bad: 31470107[12;12Hlink w/ 1 Good: 19340993   Bad: 32120037[13;20H1[13;30H619317[13;46H841714[14;28H725318[14;44H735715[15;26H4[15;39H3[15;61H8[16;26H63[16;40H62[18;54H80[18;68H80 [43d[11;12Hno link Good: 20043921   Bad: 31507501[K[12;12Hno link Good: 19393365   Bad: 32158058[K[13;31H72003[13;47H79422[14;29H78174[14;45H73252[15;26H6[15;39H5[15;61H7[16;26H97[16;40H96[18;55H4[18;69H4 [43d[11;29H66985[11;45H74836[12;28H41494[12;44H226877[13;12Hno link Good: 19694320   Bad: 31947503[K[14;12Hlink w/ 2 Good: 19800622   Bad: 31841203[15;26H9[15;39H8[15;61H8[16;25H930[16;39H929[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 20093350   Bad: 31638865[12;12Hlink w/ 4 Good: 19439975   Bad: 32292241[13;12Hlink w/ 2 Good: 19719989   Bad: 32012229[14;20H3[14;31H26643[14;46H905576[15;25H61[15;38H60[16;26H63[16;40H62[18;54H92[18;68H92 [43d[11;12Hno link Good: 20146450   Bad: 31676162[K[12;12Hno link Good: 19492321   Bad: 32330292[K[13;20H1[13;31H72652[13;47H49962[14;20H2[14;31H79405[14;47H43211[15;26H3[15;39H2[16;26H96[16;40H95[18;55H6[18;69H6 [43d[11;29H85431[11;44H727574[12;28H530260[12;45H82747[13;12Hno link Good: 19811045   Bad: 32101963[K[14;12Hno link Good: 19917913   Bad: 31995096[K[15;26H6[15;39H5[15;61H9[16;24H9029[16;38H9028[18;53H300[18;67H300 [43d[11;28H20460[11;45H98805[12;29H47878[12;44H455529[13;29H29326[13;45H74082[14;12Hlink w/ 1 Good: 19936422   Bad: 32066987[15;26H8[15;39H7[15;61H7[16;26H62[16;40H61[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 20244672   Bad: 31849125[12;12Hlink w/ 3 Good: 19586986   Bad: 32506812[13;12Hlink w/ 4 Good: 19868830   Bad: 32224970[14;12Hno link Good: 19976093   Bad: 32117708[K[15;25H70[15;39H9[16;26H95[16;40H94[18;55H8[18;69H8 [43d[11;20H4[11;31H97753[11;47H86443[12;12Hno link Good: 19639328   Bad: 32544869[K[13;12Hno link Good: 19921524   Bad: 32262674[K[14;26H20028814[14;45H55386[15;26H3[15;38H72[16;25H129[16;39H128[18;54H12[18;68H12 [43d[11;12Hno link Good: 20323124   Bad: 31951470[K[12;29H6323[12;44H611357[13;29H45999[13;44H328597[14;29H53592[14;44H221005[15;26H5[15;39H4[16;26H62[16;40H61[18;55H6[18;69H6 [43d[11;29H42287[11;43H2022702[12;29H80891[12;45H84099[13;29H64220[13;44H400771[14;29H72125[14;45H92867[15;26H8[15;39H7[15;61H8[16;26H95[16;40H94[18;54H20[18;68H20 [43d[11;12Hlink w/ 3 Good: 20390593   Bad: 32064790[12;12Hlink w/ 1 Good: 19728412   Bad: 32726973[13;26H20012158[13;45H43228[14;12Hlink w/ 2 Good: 20120119   Bad: 32335268[15;25H80[15;39H9[16;25H228[16;39H227[18;55H4[18;69H4 [43d[11;12Hno link Good: 20436143   Bad: 32109637[K[12;12Hno link Good: 19772961   Bad: 32772821[K[13;12Hlink w/ 2 Good: 20057196   Bad: 32488587[14;12Hno link Good: 20165187   Bad: 32380597[K[15;26H2[15;38H81[16;26H61[16;40H60[18;55H8[18;69H8 [43d[11;29H55319[11;45H80858[12;29H90546[12;44H845633[13;12Hno link Good: 20075483   Bad: 32560697[K[14;29H83808[14;44H452373[15;26H5[15;39H4[16;26H94[16;40H93[18;54H32[18;68H32 [43d[11;29H83486[11;44H243087[12;12Hlink w/ 4 Good: 19817474   Bad: 32909100[13;12Hlink w/ 1 Good: 20102792   Bad: 32623783[14;12Hlink w/ 1 Good: 20211452   Bad: 32515124[15;26H7[15;39H6[16;25H327[16;39H326[18;55H6[18;69H6 [43d[11;28H502619[11;44H314352[12;12Hno link Good: 19835031   Bad: 32981941[K[13;12Hno link Good: 20121033   Bad: 32695941[K[14;20H2[14;31H3006[14;47H86913[15;25H90[15;39H9[15;61H7[16;26H61[16;40H60[18;54H40[18;68H40 [43d[11;12Hlink w/ 4 Good: 20543012   Bad: 32364354[12;29H74409[12;43H3032959[13;12Hlink w/ 4 Good: 20160896   Bad: 32746473[14;20H1[14;31H70053[14;46H637317[15;26H2[15;38H91[16;26H94[16;40H93[18;55H4[18;69H4 [43d[11;12Hno link Good: 20596104   Bad: 32401659[K[12;28H926830[12;45H70935[13;20H1[13;30H213554[13;47H84212[14;20H3[14;30H322855[14;47H74912[15;26H4[15;39H3[16;25H427[16;39H426[18;55H8[18;69H8 [43d[11;28H621031[11;45H67128[12;29H50489[12;44H137671[13;31H37771[13;46H850391[14;12Hno link Good: 20347196   Bad: 32740967[K[15;26H7[15;39H6[15;61H8[16;26H60[16;40H59[18;54H52[18;68H52 [43d[11;29H4024[11;44H538314[12;29H68081[12;44H210475[13;12Hno link Good: 20255968   Bad: 32922589[K[14;29H65753[14;44H812805[15;26H9[15;39H8[16;26H93[16;40H92[18;55H6[18;69H6 [43d[11;29H8980[11;45H79148[12;12Hlink w/ 1 Good: 20016842   Bad: 33252109[13;28H304984[13;45H63968[14;12Hlink w/ 1 Good: 20414999   Bad: 32853954[15;24H401[15;37H400[16;25H526[16;39H525[18;54H60[18;68H60 [43d[11;28H735158[11;44H624187[12;12Hno link Good: 20061131   Bad: 33298216[K[13;29H49716[13;43H3009632[14;12Hno link Good: 20459825   Bad: 32899524[K[15;26H4[15;39H3[16;26H59[16;40H58[18;55H4[18;69H4 [43d[11;29H54325[11;45H95419[12;29H78755[12;44H370990[13;29H68061[13;45H81685[14;29H78251[14;44H971496[15;26H6[15;39H5[16;26H93[16;40H92[18;55H8[18;69H8 [43d[11;29H88171[11;44H751967[12;28H11143[12;44H428704[13;28H401206[13;44H138934[14;28H511595[14;43H3028547[15;26H9[15;39H8[15;61H9[16;25H626[16;39H625[18;54H72[18;68H72 [43d[11;12Hlink w/ 4 Good: 20841234   Bad: 32789297[12;12Hlink w/ 1 Good: 20163762   Bad: 33466770[13;12Hlink w/ 1 Good: 20453790   Bad: 33176743[14;29H64399[14;45H66135[15;25H11[15;38H10[15;61H7[16;26H59[16;40H58[18;55H6[18;69H6 [43d[11;12Hno link Good: 20872835   Bad: 32848098[K[12;12Hno link Good: 20194126   Bad: 33526808[K[13;20H2[13;31H84545[13;46H236390[14;29H95461[14;44H12547[15;26H3[15;39H2[16;26H92[16;40H91[18;54H80[18;68H80 [43d[11;29H91879[11;44H919449[12;28H211660[12;45H99669[13;12Hno link Good: 20502774   Bad: 33308556[K[14;12Hlink w/ 3 Good: 20614064   Bad: 33197267[15;26H6[15;39H5[15;61H8[16;25H725[16;39H724[18;55H4[18;69H4 [43d[11;28H939398[11;45H62326[12;12Hlink w/ 4 Good: 20258390   Bad: 33643335[13;29H49838[13;45H51888[14;12Hno link Good: 20661309   Bad: 33240418[K[15;26H8[15;39H7[15;61H7[16;26H58[16;40H57[18;55H8[18;69H8 [43d[11;29H92463[11;45H99657[12;12Hno link Good: 20310691   Bad: 33681430[K[13;12Hlink w/ 1 Good: 20602499   Bad: 33389623[14;12Hlink w/ 3 Good: 20714095   Bad: 33278029[15;25H20[15;39H9[16;26H92[16;40H91[18;54H92[18;68H92 [43d[11;12Hlink w/ 4 Good: 21014681   Bad: 33067835[12;29H31486[12;44H751031[13;12Hno link Good: 20623933   Bad: 33458585[K[14;12Hno link Good: 20735659   Bad: 33346860[K[15;26H3[15;38H22[15;61H8[16;25H825[16;39H824[18;55H6[18;69H6 [43d[11;12Hno link Good: 21041831   Bad: 33131081[K[12;12Hlink w/ 4 Good: 20357577   Bad: 33815336[13;29H50462[13;44H522452[14;12Hlink w/ 3 Good: 20762395   Bad: 33410521[15;26H5[15;39H4[16;26H58[16;40H57[18;53H400[18;67H400 [43d[11;29H94906[11;45H68403[12;20H1[12;30H409879[12;47H53431[13;28H703187[13;45H60124[14;12Hno link Good: 20815148   Bad: 33448164[K[15;26H8[15;39H7[15;61H9[16;26H91[16;40H90[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 21132996   Bad: 33220707[12;31H46833[12;46H90687[13;29H40584[13;44H613122[14;12Hlink w/ 3 Good: 20852785   Bad: 33500922[15;25H30[15;39H9[15;61H7[16;25H924[16;39H923[18;55H8[18;69H8 [43d[11;12Hno link Good: 21152146   Bad: 33291954[K[12;20H4[12;31H6451[12;47H79588[13;29H58949[13;45H85153[14;12Hno link Good: 20871291   Bad: 33572813[K[15;26H2[15;38H31[16;26H57[16;40H56[18;54H12[18;68H12 [43d[11;12Hlink w/ 3 Good: 21193147   Bad: 33341343[12;12Hno link Good: 20504462   Bad: 34030030[K[13;12Hlink w/ 1 Good: 20799344   Bad: 33735149[14;12Hlink w/ 3 Good: 20911893   Bad: 33622601[15;26H5[15;39H4[16;26H90[16;40H89[18;55H6[18;69H6 [43d[11;20H4[11;30H24623[11;47H78656[12;12Hlink w/ 4 Good: 20556878   Bad: 34068016[13;12Hno link Good: 20851961   Bad: 33772934[K[14;31H64659[14;47H60237[15;26H7[15;39H6[16;23H20024[16;37H20023[18;54H20[18;68H20 [43d[11;31H70592[11;46H444697[12;20H3[12;31H79781[12;46H135510[13;29H75605[13;44H839687[14;12Hno link Good: 20988413   Bad: 33726880[K[15;26H9[15;39H8[16;26H57[16;40H56[18;55H4[18;69H4 [43d[11;12Hno link Good: 21289717   Bad: 33515967[K[12;12Hno link Good: 20597276   Bad: 34208410[K[13;29H93913[13;44H911774[14;27H1006918[14;45H9877[15;25H42[15;38H41[15;61H8[16;26H90[16;40H89[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 21338996   Bad: 33557081[12;12Hlink w/ 4 Good: 20645776   Bad: 34250302[13;12Hlink w/ 2 Good: 20942767   Bad: 33953312[14;12Hlink w/ 3 Good: 21055959   Bad: 33840121[15;26H4[15;39H3[16;25H123[16;39H122[18;54H32[18;68H32 [43d[11;20H4[11;31H83684[11;46H60279[12;12Hno link Good: 20689571   Bad: 34296905[K[13;20H4[13;31H86970[13;47H99508[14;12Hno link Good: 21100285   Bad: 33886194[K[15;26H7[15;39H6[16;26H56[16;40H55[18;55H6[18;69H6 [43d[11;20H3[11;30H40277[11;47H74100[12;28H7071[12;44H3697[13;29H1005201[13;45H4071676[14;29H18752[14;44H958126[15;26H9[15;39H8[16;26H89[16;40H88[18;54H40[18;68H40 [43d[11;12Hno link Good: 21430939   Bad: 33736329[K[12;12Hlink w/ 3 Good: 20734154   Bad: 34433115[13;12Hno link Good: 21032729   Bad: 34134542[K[14;29H46498[14;43H4020774[15;25H51[15;38H50[15;61H6[16;25H222[16;39H221[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 21450063   Bad: 33807605[12;20H1[12;31H51772[12;46H505897[13;29H50958[13;44H20671[14;29H65087[14;45H9258[15;26H4[15;39H3[15;61H7[16;26H56[16;40H55[18;55H8[18;69H8 [43d[11;12Hno link Good: 21491361   Bad: 33856700[K[12;20H3[12;31H92027[12;47H56035[13;29H91630[13;45H56433[14;12Hlink w/ 3 Good: 21205901   Bad: 34142164[15;26H6[15;39H5[16;26H89[16;40H88[18;54H52[18;68H52 [43d[11;12Hlink w/ 2 Good: 21544347   Bad: 33894111[12;20H1[12;30H844336[12;47H94124[13;28H144347[13;45H94114[14;12Hno link Good: 21258710   Bad: 34179752[K[15;26H8[15;39H7[16;25H322[16;39H321[18;55H6[18;69H6 [43d[11;12Hno link Good: 21568510   Bad: 33960346[K[12;12Hno link Good: 20866990   Bad: 34661867[K[13;29H67662[13;44H361197[14;12Hlink w/ 2 Good: 21282250   Bad: 34246610[15;25H61[15;38H60[15;61H8[16;26H55[16;40H54[18;54H60[18;68H60 [43d[11;29H87625[11;43H403162[12;29H84676[12;44H734576[13;29H85899[13;44H433354[14;30H300801[14;46H318453[15;26H3[15;39H2[16;26H88[16;40H87[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 21638107   Bad: 34071541[12;12Hlink w/ 1 Good: 20934359   Bad: 34775289[13;12Hlink w/ 1 Good: 21235894   Bad: 34473756[14;20H3[14;31H50929[14;47H58722[15;26H6[15;39H5[16;25H421[16;39H420[18;55H8[18;69H8 [43d[11;12Hno link Good: 21682475   Bad: 34117566[K[12;12Hno link Good: 20977737   Bad: 34822305[K[13;12Hno link Good: 21279772   Bad: 34520271[K[14;12Hno link Good: 21394806   Bad: 34405238[K[15;26H8[15;39H7[16;26H54[16;40H53[18;54H72[18;68H72 [43d[11;12Hlink w/ 2 Good: 21701567   Bad: 34188872[12;29H95402[12;45H95038[13;29H98077[13;45H92365[14;28H413368[14;45H77075[15;25H70[15;39H9[16;26H88[16;40H87[18;55H6[18;69H6 [43d[11;12Hno link Good: 21736255   Bad: 34244581[K[12;12Hlink w/ 4 Good: 21028808   Bad: 34952029[13;12Hlink w/ 4 Good: 21332048   Bad: 34648791[14;12Hlink w/ 1 Good: 21447650   Bad: 34533190[15;26H3[15;38H72[15;61H7[16;25H521[16;39H520[18;54H80[18;68H80 [43d[11;12Hlink w/ 4 Good: 21789391   Bad: 34281840[12;31H81137[12;47H90096[13;12Hno link Good: 21384748   Bad: 34686486[K[14;20H2[14;30H500395[14;47H7084[15;26H5[15;39H4[16;26H54[16;40H53[18;55H4[18;69H4 [43d[11;12Hno link Good: 21820099   Bad: 34341852[K[12;12Hno link Good: 21110614   Bad: 35051338[K[13;28H414674[13;44H747280[14;12Hno link Good: 21530564   Bad: 34631391[K[15;26H7[15;39H6[16;26H87[16;40H86[18;55H8[18;69H8 [43d[11;29H39256[11;44H413093[12;29H28053[12;44H124297[13;29H32955[13;44H819396[14;29H49098[14;44H703254[15;25H80[15;39H9[16;25H620[16;39H619[18;54H92[18;68H92 [43d[11;12Hlink w/ 3 Good: 21887814   Bad: 34454931[12;12Hlink w/ 1 Good: 21175733   Bad: 35167014[13;12Hlink w/ 4 Good: 21481079   Bad: 34861669[14;12Hlink w/ 2 Good: 21597381   Bad: 34745368[15;26H2[15;38H81[16;26H53[16;40H52[18;55H6[18;69H6 [43d[11;20H4[11;30H940845[11;47H92296[12;20H3[12;30H228049[12;46H205093[13;20H2[13;30H5337[13;47H99365[14;12Hno link Good: 21650208   Bad: 34782937[K[15;26H5[15;39H4[15;61H8[16;26H87[16;40H86[18;53H500[18;67H500 [43d[11;12Hno link Good: 21962038   Bad: 34561500[K[12;20H4[12;31H47802[12;47H75737[13;12Hno link Good: 21554237   Bad: 34969303[K[14;12Hlink w/ 1 Good: 21670703   Bad: 34852838[15;26H7[15;39H6[16;25H720[16;39H719[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 21990320   Bad: 34623611[12;20H3[12;31H74871[12;46H339061[13;12Hlink w/ 1 Good: 21581826   Bad: 35032108[14;31H98556[14;46H915379[15;26H9[15;39H8[16;26H53[16;40H52[18;55H8[18;69H8 [43d[11;12Hno link Good: 22043424   Bad: 34660906[K[12;20H1[12;30H327138[12;47H77194[13;20H2[13;30H634533[13;47H69800[14;20H3[14;30H751264[14;47H53070[15;25H92[15;38H91[16;26H86[16;40H85[18;54H12[18;68H12 [43d[11;29H8049[11;44H714231[12;12Hno link Good: 21363056   Bad: 35431670[K[13;12Hno link Good: 21670873   Bad: 35123855[K[14;12Hno link Good: 21787836   Bad: 35006893[K[15;26H4[15;39H3[15;61H7[16;25H819[16;39H818[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 22099524   Bad: 34785599[12;29H80770[12;44H504355[13;29H89165[13;45H95961[14;12Hlink w/ 2 Good: 21806323   Bad: 35078804[15;26H7[15;39H6[16;26H52[16;40H51[18;54H20[18;68H20 [43d[11;20H2[11;30H141395[11;46H834121[12;28H421784[12;45H53733[13;12Hlink w/ 4 Good: 21730528   Bad: 35244991[14;12Hno link Good: 21847964   Bad: 35127556[K[15;26H9[15;39H8[16;26H85[16;40H84[18;55H4[18;69H4 [43d[11;31H94452[11;47H71460[12;12Hlink w/ 4 Good: 21474097   Bad: 35591816[13;12Hno link Good: 21783219   Bad: 35282695[K[14;28H90074[14;45H65171[15;24H501[15;37H500[16;25H919[16;39H918[18;55H8[18;69H8 [43d[11;12Hno link Good: 22217987   Bad: 34938324[K[12;20H1[12;31H9591[12;46H660395[13;12Hlink w/ 1 Good: 21805828   Bad: 35350486[14;12Hlink w/ 1 Good: 21923498   Bad: 35232817[15;26H4[15;39H3[15;61H8[16;26H52[16;40H51[18;54H32[18;68H32 [43d[11;29H37153[11;43H500955[12;20H3[12;30H513554[12;46H733154[13;12Hno link Good: 21824086   Bad: 35422623[K[14;12Hno link Good: 21942074   Bad: 35304636[K[15;26H6[15;39H5[16;26H85[16;40H84[18;55H6[18;69H6 [43d[11;29H88359[11;45H48742[12;31H63923[12;47H73179[13;12Hlink w/ 1 Good: 21874820   Bad: 35462283[14;12Hlink w/ 3 Good: 21992974   Bad: 35344130[15;26H8[15;39H7[16;24H1018[16;38H1017[18;54H40[18;68H40 [43d[11;28H332071[11;45H95427[12;30H606618[12;46H820881[13;12Hno link Good: 21917983   Bad: 35509518[K[14;12Hno link Good: 22036215   Bad: 35391287[K[15;25H11[15;38H10[16;26H51[16;40H50[18;55H4[18;69H4 [43d[11;29H51224[11;44H166665[12;12Hno link Good: 21624272   Bad: 35893619[K[13;12Hlink w/ 2 Good: 21936223   Bad: 35581669[14;12Hlink w/ 1 Good: 22054608   Bad: 35463285[15;26H3[15;39H2[16;26H84[16;40H83[18;55H8[18;69H8 [43d[11;12Hlink w/ 4 Good: 22379436   Bad: 35228853[12;12Hlink w/ 3 Good: 21651239   Bad: 35957052[13;12Hno link Good: 21963589   Bad: 35644703[K[14;31H82283[14;46H526010[15;26H6[15;39H5[15;61H7[16;25H117[16;39H116[18;54H52[18;68H52 [43d[11;12Hno link Good: 22398445   Bad: 35300243[K[12;12Hno link Good: 21668841   Bad: 36029848[K[13;29H81892[13;44H716799[14;12Hno link Good: 22100731   Bad: 35597961[K[15;26H8[15;39H7[16;26H51[16;40H50[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 22440696   Bad: 35348386[12;12Hlink w/ 1 Good: 21710096   Bad: 36078987[13;27H2023607[13;45H65477[14;29H42666[14;44H646419[15;25H20[15;39H9[16;26H84[16;40H83[18;54H60[18;68H60 [43d[11;12Hno link Good: 22493839   Bad: 35385640[K[12;12Hno link Good: 21762470   Bad: 36117010[K[13;12Hlink w/ 2 Good: 22076199   Bad: 35803283[14;29H95464[14;45H840[15;26H3[15;38H22[15;61H8[16;25H217[16;39H216[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 22516873   Bad: 35453004[12;12Hlink w/ 3 Good: 21784068   Bad: 36185811[13;12Hno link Good: 22098442   Bad: 35871438[K[14;28H217952[14;44H75192[15;26H5[15;39H4[16;26H50[16;40H49[18;55H8[18;69H8 [43d[11;12Hno link Good: 22535904   Bad: 35524368[K[12;12Hno link Good: 21801764   Bad: 36258509[K[13;28H116809[13;44H943465[14;29H36437[14;44H823838[15;26H7[15;39H6[15;61H7[16;26H83[16;40H82[18;54H72[18;68H72 [43d[11;12Hlink w/ 2 Good: 22587323   Bad: 35563345[12;29H52516[12;45H98153[13;12Hlink w/ 2 Good: 22167839   Bad: 35982832[14;12Hlink w/ 2 Good: 22287515   Bad: 35863157[15;25H30[15;39H9[15;61H8[16;25H316[16;39H315[18;55H6[18;69H6 [43d[11;12Hno link Good: 22630752   Bad: 35610312[K[12;29H94847[12;44H346218[13;12Hno link Good: 22210569   Bad: 36030497[K[14;12Hno link Good: 22330356   Bad: 35910711[K[15;26H2[15;38H31[16;26H49[16;40H48[18;54H80[18;68H80 [43d[11;29H49824[11;45H81637[12;28H91253[12;44H418925[13;29H28764[13;44H102699[14;12Hlink w/ 3 Good: 22349006   Bad: 35982459[15;26H5[15;39H4[15;61H9[16;26H83[16;40H82[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 22685472   Bad: 35736384[12;12Hlink w/ 4 Good: 21947201   Bad: 36474657[13;12Hlink w/ 2 Good: 22263904   Bad: 36157955[14;12Hno link Good: 22384355   Bad: 36037505[K[15;26H7[15;39H6[15;61H7[16;25H416[16;39H415[18;55H8[18;69H8 [43d[11;20H3[11;30H738531[11;47H73722[12;31H99513[12;46H512742[13;20H1[13;30H316561[13;47H9569[14;12Hlink w/ 3 Good: 22437125   Bad: 36075132[15;26H9[15;39H8[16;26H49[16;40H48[18;54H92[18;68H92 [43d[11;12Hno link Good: 22768241   Bad: 35834408[K[12;29H2027732[12;47H74918[13;12Hno link Good: 22345472   Bad: 36257179[K[14;12Hno link Good: 22466169   Bad: 36136484[K[15;25H42[15;38H41[16;26H82[16;40H81[18;55H6[18;69H6 [43d[11;29H8725[11;44H905792[12;12Hno link Good: 22045290   Bad: 36647754[K[13;29H63711[13;44H329334[14;29H84652[14;44H20839[15;26H4[15;39H3[16;25H515[16;39H514[18;53H600[18;67H600 [43d[11;28H836638[11;45H46804[12;29H93832[12;45H89611[13;12Hlink w/ 2 Good: 22412705   Bad: 36370739[14;12Hlink w/ 3 Good: 22533762   Bad: 36249684[15;26H6[15;39H5[16;26H48[16;40H47[18;55H4[18;69H4 [43d[11;12Hlink w/ 4 Good: 22889700   Bad: 35984136[12;28H14618[12;44H727656[13;20H1[13;31H65361[13;46H408478[14;31H86638[14;47H87202[15;26H9[15;39H8[15;61H8[16;26H81[16;40H80[18;55H8[18;69H8 [43d[11;30H910971[11;45H6053262[12;29H65830[12;45H98404[13;12Hno link Good: 22485692   Bad: 36478543[K[14;12Hno link Good: 22607085   Bad: 36357151[K[15;25H51[15;38H50[16;25H615[16;39H614[18;54H12[18;68H12 [43d[11;12Hno link Good: 22940193   Bad: 36114437[K[12;12Hlink w/ 4 Good: 22193796   Bad: 36860836[13;28H514218[13;44H540415[14;12Hlink w/ 1 Good: 22635698   Bad: 36418936[15;26H4[15;39H3[16;26H48[16;40H47[18;55H6[18;69H6 [43d[11;29H93275[11;45H51750[12;20H1[12;30H246139[12;47H98887[13;12Hlink w/ 1 Good: 22566891   Bad: 36578136[14;20H3[14;31H88564[14;47H56465[15;26H6[15;39H5[16;26H81[16;40H80[18;54H20[18;68H20 [43d[11;27H3029449[11;44H205973[12;12Hno link Good: 22281260   Bad: 36954163[K[13;12Hno link Good: 22602444   Bad: 36632981[K[14;12Hno link Good: 22724317   Bad: 36511109[K[15;26H8[15;39H7[15;61H7[16;25H714[16;39H713[18;55H4[18;69H4 [43d[11;12Hlink w/ 3 Good: 23048621   Bad: 36277198[12;29H98785[12;43H7027035[13;29H20610[13;44H70521[14;29H42811[14;45H83011[15;25H61[15;38H60[16;26H47[16;40H46[18;55H8[18;69H8 [43d[11;12Hno link Good: 23091512   Bad: 36324700[K[12;12Hlink w/ 4 Good: 22340644   Bad: 37075569[13;12Hlink w/ 4 Good: 22662931   Bad: 36753284[14;12Hlink w/ 1 Good: 22785276   Bad: 36630940[15;26H3[15;39H2[16;26H80[16;40H79[18;54H32[18;68H32 [43d[11;28H144594[11;45H62014[12;31H92897[12;46H113712[13;20H2[13;30H71559[13;47H91019[14;12Hno link Good: 22838058   Bad: 36668553[K[15;26H5[15;39H4[16;25H813[16;39H812[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 23167145   Bad: 36429861[12;12Hno link Good: 22413955   Bad: 37183053[K[13;12Hno link Good: 22737311   Bad: 36859698[K[14;29H59842[14;44H737168[15;26H8[15;39H7[15;61H8[16;26H47[16;40H46[18;54H40[18;68H40 [43d[11;12Hno link Good: 23186212   Bad: 36501186[K[12;29H31659[12;44H255740[13;29H55605[13;44H931796[14;29H78405[14;44H808997[15;25H70[15;39H9[16;26H80[16;40H79[18;55H4[18;69H4 [43d[11;12Hlink w/ 2 Good: 23238410   Bad: 36539387[12;12Hlink w/ 1 Good: 22483083   Bad: 37294715[13;12Hlink w/ 2 Good: 22807352   Bad: 36970447[14;12Hlink w/ 3 Good: 22930253   Bad: 36847547[15;26H3[15;38H72[16;25H913[16;39H912[18;55H8[18;69H8 [43d[11;12Hno link Good: 23281191   Bad: 36587002[K[12;12Hno link Good: 22524870   Bad: 37343324[K[13;12Hno link Good: 22849551   Bad: 37018644[K[14;12Hno link Good: 22972556   Bad: 36895640[K[15;26H5[15;39H4[16;26H46[16;40H45[18;54H52[18;68H52 [43d[11;28H300230[11;44H658361[12;29H42433[12;44H416159[13;29H67815[13;45H90778[14;29H91132[14;44H967462[15;26H7[15;39H6[16;26H79[16;40H78[18;55H6[18;69H6 [43d[11;29H28444[11;44H720542[12;29H69392[12;45H79595[13;29H9523[13;44H153753[14;12Hlink w/ 2 Good: 23018765   Bad: 37030225[15;25H80[15;39H9[15;61H7[16;24H2012[16;38H2011[18;54H60[18;68H60 [43d[11;29H47528[11;45H91856[12;29H87054[12;44H552331[13;28H913543[13;44H22584[14;12Hno link Good: 23037271   Bad: 37102116[K[15;26H2[15;38H81[16;26H45[16;40H44[18;55H4[18;69H4 [43d[11;12Hlink w/ 4 Good: 23390660   Bad: 36839118[12;28H629283[12;44H600496[13;12Hlink w/ 4 Good: 22956250   Bad: 37273530[14;29H80076[14;45H49705[15;26H4[15;39H3[16;26H79[16;40H78[18;55H8[18;69H8 [43d[11;30H443701[11;47H76474[12;12Hlink w/ 4 Good: 22681626   Bad: 37638551[13;12Hno link Good: 23008939   Bad: 37311239[K[14;12Hlink w/ 1 Good: 23132842   Bad: 37187337[15;26H7[15;39H6[15;61H8[16;25H112[16;39H111[18;54H72[18;68H72 [43d[11;12Hno link Good: 23465907   Bad: 36944665[K[12;12Hno link Good: 22702500   Bad: 37708073[K[13;29H30414[13;45H80160[14;12Hno link Good: 23154416   Bad: 37256160[K[15;26H9[15;39H8[15;61H7[16;26H45[16;40H44[18;55H6[18;69H6 [43d[11;29H85098[11;43H7015868[12;12Hlink w/ 4 Good: 22720041   Bad: 37780926[13;12Hlink w/ 1 Good: 23048729   Bad: 37452239[14;29H72992[14;44H327977[15;25H92[15;38H91[15;61H8[16;26H78[16;40H77[18;54H80[18;68H80 [43d[11;12Hlink w/ 2 Good: 23537491   Bad: 37053871[12;12Hno link Good: 22771669   Bad: 37819694[K[13;20H2[13;30H100646[13;47H90718[14;28H225093[14;45H66273[15;26H4[15;39H3[16;25H211[16;39H210[18;55H4[18;69H4 [43d[11;12Hno link Good: 23580001   Bad: 37101759[K[12;28H81312[12;45H68632[13;12Hno link Good: 23142571   Bad: 37539192[K[14;29H6708[14;44H414681[15;26H6[15;39H5[16;26H44[16;40H43[18;55H8[18;69H8 [43d[11;29H99017[11;45H73137[12;29H30712[12;44H941444[13;29H60803[13;44H611354[14;29H855[14;45H86575[15;26H9[15;39H8[16;26H78[16;40H77[18;54H92[18;68H92 [43d[11;28H635576[11;44H226976[12;12Hlink w/ 3 Good: 22866208   Bad: 37996346[13;29H96756[13;45H65799[14;12Hlink w/ 1 Good: 23321793   Bad: 37540763[15;24H601[15;37H600[15;61H7[16;25H311[16;39H310[18;55H6[18;69H6 [43d[11;29H88672[11;45H64273[12;20H4[12;30H918584[12;45H8034362[13;12Hlink w/ 1 Good: 23249479   Bad: 37703468[14;12Hno link Good: 23374601   Bad: 37578348[K[15;26H4[15;39H3[16;26H44[16;40H43[18;53H700[18;67H700 [43d[11;28H717375[11;44H325970[12;12Hno link Good: 22946053   Bad: 38097293[K[13;12Hno link Good: 23277440   Bad: 37765907[K[14;28H402868[14;44H640481[15;26H6[15;39H5[16;26H77[16;40H76[18;55H4[18;69H4 [43d[11;29H36449[11;45H97291[12;29H63697[12;44H170045[13;29H95696[13;44H83804[14;12Hlink w/ 2 Good: 23421387   Bad: 37712357[15;26H8[15;39H7[16;25H410[16;39H409[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 23786716   Bad: 37437422[12;12Hlink w/ 4 Good: 23013212   Bad: 38210928[13;12Hlink w/ 4 Good: 23345488   Bad: 37878653[14;20H3[14;31H71470[14;47H52672[15;25H11[15;38H10[15;61H8[16;26H43[16;40H42[18;54H12[18;68H12 [43d[11;30H839788[11;47H74743[12;31H65491[12;47H49041[13;31H98061[13;46H916472[14;12Hno link Good: 23524227   Bad: 37790307[K[15;26H3[15;39H2[16;26H76[16;40H75[18;55H6[18;69H6 [43d[11;12Hno link Good: 23860255   Bad: 37544672[K[12;12Hno link Good: 23084585   Bad: 38320343[K[13;30H417689[13;47H87240[14;29H44088[14;44H860843[15;26H5[15;39H4[16;25H510[16;39H509[18;54H20[18;68H20 [43d[11;12Hlink w/ 3 Good: 23890264   Bad: 37605059[12;12Hlink w/ 1 Good: 23113347   Bad: 38381977[13;12Hno link Good: 23447031   Bad: 38048294[K[14;12Hlink w/ 3 Good: 23573591   Bad: 37921735[15;26H8[15;39H7[16;26H43[16;40H42[18;55H4[18;69H4 [43d[11;20H2[11;30H943258[11;47H42462[12;20H3[12;31H65731[12;46H419991[13;29H99722[13;45H86001[14;20H1[14;30H626386[14;47H59338[15;25H20[15;39H9[16;26H76[16;40H75[18;55H8[18;69H8 [43d[11;12Hno link Good: 23978538   Bad: 37697578[K[12;12Hno link Good: 23199902   Bad: 38476215[K[13;28H53429[13;44H141826[14;12Hno link Good: 23661127   Bad: 38014992[K[15;26H3[15;38H22[15;61H7[16;25H609[16;39H608[18;54H32[18;68H32 [43d[11;29H97622[11;44H768891[12;28H21753[12;44H548982[13;29H52528[13;44H213988[14;12Hlink w/ 1 Good: 23679563   Bad: 38086954[15;26H5[15;39H4[16;26H42[16;40H41[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 24041375   Bad: 37815534[12;12Hlink w/ 3 Good: 23260387   Bad: 38596523[13;12Hlink w/ 2 Good: 23595777   Bad: 38261135[14;12Hno link Good: 23722929   Bad: 38133984[K[15;26H7[15;39H6[16;26H75[16;40H74[18;54H40[18;68H40 [43d[11;20H2[11;31H94432[11;47H52873[12;12Hno link Good: 23312763   Bad: 38634543[K[13;12Hno link Good: 23648541   Bad: 38298766[K[14;29H75698[14;45H71610[15;25H30[15;39H9[15;61H8[16;25H708[16;39H707[18;55H4[18;69H4 [43d[11;12Hno link Good: 24116102   Bad: 37921601[K[12;29H32915[12;44H704789[13;29H69336[13;44H368369[14;29H96635[14;44H241071[15;26H2[15;38H31[16;26H42[16;40H41[18;55H8[18;69H8 [43d[11;12Hlink w/ 3 Good: 24135261   Bad: 37992836[12;12Hlink w/ 4 Good: 23350653   Bad: 38777446[13;29H87710[13;44H440390[14;28H815177[14;44H312925[15;26H4[15;39H3[16;26H75[16;40H74[18;54H52[18;68H52 [43d[11;12Hno link Good: 24188276   Bad: 38030216[K[12;20H3[12;30H403025[12;46H815468[13;12Hlink w/ 2 Good: 23740395   Bad: 38478099[14;29H67959[14;45H50536[15;26H7[15;39H6[16;25H808[16;39H807[18;55H6[18;69H6 [43d[11;12Hlink w/ 2 Good: 24230261   Bad: 38078627[12;12Hno link Good: 23443865   Bad: 38865024[K[13;12Hno link Good: 23781770   Bad: 38527120[K[14;12Hlink w/ 2 Good: 23909305   Bad: 38399586[15;26H9[15;39H8[16;26H41[16;40H40[18;54H60[18;68H60 [43d[11;12Hno link Good: 24249367   Bad: 38149917[K[12;29H61504[12;44H937781[13;28H800073[13;45H99213[14;12Hno link Good: 23927784   Bad: 38471503[K[15;25H42[15;38H41[15;61H9[16;26H74[16;40H73[18;55H4[18;69H4 [43d[11;29H77599[11;44H212082[12;29H88470[12;43H9001213[13;29H27480[13;44H662204[14;29H55418[14;44H534267[15;26H4[15;39H3[15;61H7[16;25H907[16;39H906[18;55H8[18;69H8 [43d[11;29H96647[11;45H83430[12;28H506185[12;45H7389[13;29H4572[13;44H734359[14;29H74067[14;44H606013[15;26H6[15;39H5[16;26H40[16;40H39[18;54H72[18;68H72 [43d[11;12Hlink w/ 2 Good: 24340693   Bad: 38329782[12;12Hlink w/ 1 Good: 23549323   Bad: 39121153[13;12Hlink w/ 2 Good: 23889232   Bad: 38781246[14;27H4017798[14;45H52681[15;26H9[15;39H8[15;61H8[16;26H74[16;40H73[18;55H6[18;69H6 [43d[11;12Hno link Good: 24393753   Bad: 38367118[K[12;12Hno link Good: 23601702   Bad: 39159170[K[13;12Hno link Good: 23941920   Bad: 38818953[K[14;12Hlink w/ 2 Good: 24070565   Bad: 38690309[15;25H51[15;38H50[15;61H7[16;24H3007[16;38H3006[18;54H80[18;68H80 [43d[11;28H415120[11;44H436142[12;29H21561[12;44H229702[13;29H62435[13;45H88829[14;12Hno link Good: 24091250   Bad: 38760015[K[15;26H3[15;39H2[16;26H40[16;40H39[18;55H4[18;69H4 [43d[11;29H34486[11;44H507176[12;12Hlink w/ 3 Good: 23639272   Bad: 39302392[13;29H80939[13;44H960726[14;12Hlink w/ 3 Good: 24109992   Bad: 38831674[15;26H6[15;39H5[15;61H8[16;26H73[16;40H72[18;55H8[18;69H8 [43d[11;12Hlink w/ 4 Good: 24487582   Bad: 38544476[12;20H1[12;31H91581[12;47H40479[13;12Hlink w/ 1 Good: 24033606   Bad: 38998455[14;31H62806[14;47H69256[15;26H8[15;39H7[16;25H106[16;39H105[18;54H92[18;68H92 [43d[11;12Hno link Good: 24529216   Bad: 38593240[K[12;12Hno link Good: 23732159   Bad: 39390298[K[13;12Hno link Good: 24074583   Bad: 39047875[K[14;12Hno link Good: 24203979   Bad: 38918480[K[15;25H61[15;38H60[16;26H39[16;40H38[18;55H6[18;69H6 [43d[11;29H48197[11;44H664654[12;29H49766[12;44H463086[13;12Hlink w/ 2 Good: 24092905   Bad: 39119949[14;12Hlink w/ 1 Good: 24222540   Bad: 38990315[15;26H3[15;39H2[16;26H72[16;40H71[18;53H800[18;67H800 [43d[11;29H85695[11;44H717543[12;12Hlink w/ 3 Good: 23786180   Bad: 39517059[13;30H12982[13;47H73415[14;20H2[14;31H59642[14;45H9043600[15;26H5[15;39H4[15;61H7[16;25H206[16;39H205[18;55H4[18;69H4 [43d[11;28H638784[11;45H54859[12;20H1[12;30H838545[12;47H5509[13;20H4[13;31H82558[13;46H211088[14;20H1[14;30H312420[14;47H81227[15;26H8[15;39H7[16;26H39[16;40H38[18;55H8[18;69H8 [43d[11;29H66772[11;44H817270[12;12Hno link Good: 23865043   Bad: 39619001[K[13;12Hno link Good: 24209700   Bad: 39274345[K[14;12Hno link Good: 24339798   Bad: 39144248[K[15;25H70[15;39H9[16;26H72[16;40H71[18;54H12[18;68H12 [43d[11;29H85921[11;45H88513[12;29H82681[12;45H91754[13;12Hlink w/ 2 Good: 24227959   Bad: 39346478[14;29H58336[14;44H216102[15;26H2[15;38H71[16;25H305[16;39H304[18;55H6[18;69H6 [43d[11;28H737073[11;44H927760[12;28H933110[12;44H73172[13;12Hno link Good: 24278684   Bad: 39386151[K[14;12Hlink w/ 3 Good: 24409316   Bad: 39255521[15;26H5[15;39H4[15;61H8[16;26H38[16;40H37[18;54H20[18;68H20 [43d[11;29H89662[11;45H65567[12;12Hlink w/ 4 Good: 23984971   Bad: 39770259[13;28H330927[13;44H424304[14;12Hno link Good: 24461556   Bad: 39293677[K[15;26H7[15;39H6[16;26H71[16;40H70[18;55H4[18;69H4 [43d[11;28H808881[11;43H9036744[12;12Hno link Good: 24002543   Bad: 39843083[K[13;12Hlink w/ 1 Good: 24349137   Bad: 39496490[14;29H80032[14;44H36559[15;25H80[15;39H9[16;25H404[16;39H403[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 24839716   Bad: 39096304[12;12Hlink w/ 1 Good: 24032353   Bad: 39903668[13;20H4[13;31H79372[13;46H55665[14;12Hlink w/ 3 Good: 24510504   Bad: 39425520[15;26H2[15;38H81[16;26H38[16;40H37[18;54H32[18;68H32 [43d[11;20H4[11;31H92774[11;46H133643[12;12Hno link Good: 24084685   Bad: 39941733[K[13;12Hno link Good: 24432063   Bad: 39594356[K[14;12Hno link Good: 24563276   Bad: 39463144[K[15;26H4[15;39H3[16;26H71[16;40H70[18;55H6[18;69H6 [43d[11;30H927219[11;47H89595[12;28H117860[12;45H98955[13;29H65765[13;44H651051[14;12Hlink w/ 1 Good: 24597191   Bad: 39519627[15;26H7[15;39H6[15;61H7[16;25H504[16;39H503[18;54H40[18;68H40 [43d[11;12Hno link Good: 24946238   Bad: 39260968[K[12;29H35436[12;42H40071771[13;29H83969[13;44H723239[14;30H615584[14;47H91626[15;26H9[15;39H8[16;26H37[16;40H36[18;55H4[18;69H4 [43d[11;29H90882[11;44H306723[12;29H79143[12;44H118463[13;12Hlink w/ 2 Good: 24528094   Bad: 39769514[14;12Hno link Good: 24659912   Bad: 39637697[K[15;25H91[15;38H90[16;26H70[16;40H69[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 25043939   Bad: 39344059[12;12Hlink w/ 3 Good: 24231408   Bad: 40156591[13;12Hno link Good: 24580774   Bad: 39807226[K[14;28H712644[14;45H7535[15;26H4[15;39H3[15;61H8[16;25H603[16;39H602[18;54H52[18;68H52 [43d[11;12Hno link Good: 25064762   Bad: 39413636[K[12;12Hno link Good: 24250708   Bad: 40227691[K[13;28H600737[13;45H77664[14;29H32770[14;44H745632[15;26H6[15;39H5[16;26H36[16;40H35[18;55H6[18;69H6 [43d[11;12Hlink w/ 2 Good: 25084753   Bad: 39484042[12;29H69145[12;45H9965[13;12Hlink w/ 1 Good: 24619901   Bad: 39948896[14;12Hlink w/ 2 Good: 24752194   Bad: 39816604[15;26H9[15;39H8[16;26H70[16;40H69[18;54H60[18;68H60 [43d[11;30H137880[11;46H521309[12;12Hlink w/ 1 Good: 24321478   Bad: 40337712[13;12Hno link Good: 24672519   Bad: 39986672[K[14;20H3[14;30H804987[14;47H54206[15;24H701[15;37H700[16;25H703[16;39H702[18;55H4[18;69H4 [43d[11;12Hno link Good: 25178880   Bad: 39570704[K[12;12Hno link Good: 24361492   Bad: 40388094[K[13;12Hlink w/ 2 Good: 24712921   Bad: 40036666[14;31H45453[14;46H904135[15;26H3[15;39H2[16;26H36[16;40H35[18;55H8[18;69H8 [43d[11;29H97935[11;44H642047[12;29H79004[12;44H460979[13;12Hno link Good: 24731242   Bad: 40108742[K[14;12Hno link Good: 24863909   Bad: 39976076[K[15;26H6[15;39H5[15;61H7[16;26H69[16;40H68[18;54H72[18;68H72 [43d[11;28H226277[11;44H704100[12;28H405887[12;44H524491[13;12Hlink w/ 1 Good: 24758757   Bad: 40171622[14;29H91618[14;42H40038762[15;26H8[15;39H7[16;25H802[16;39H801[18;55H6[18;69H6 [43d[11;29H45413[11;45H75362[12;29H23528[12;45H97248[13;20H2[13;31H77009[13;46H243768[14;28H910080[14;44H110699[15;25H11[15;38H10[15;61H8[16;26H35[16;40H34[18;54H80[18;68H80 [43d[11;12Hlink w/ 3 Good: 25290312   Bad: 39820859[12;29H67532[12;44H643640[13;30H821338[13;47H89836[14;29H54695[14;45H56480[15;26H3[15;39H2[15;61H7[16;26H68[16;40H67[18;55H4[18;69H4 [43d[11;12Hno link Good: 25343368   Bad: 39858191[K[12;12Hlink w/ 1 Good: 24519813   Bad: 40681748[13;20H1[13;31H74004[13;46H327558[14;12Hlink w/ 1 Good: 25007518   Bad: 40194045[15;26H5[15;39H4[16;25H902[16;39H901[18;55H8[18;69H8 [43d[11;29H63790[11;44H928173[12;12Hno link Good: 24538783   Bad: 40753181[K[13;12Hno link Good: 24893605   Bad: 40398360[K[14;12Hno link Good: 25027388   Bad: 40264578[K[15;26H8[15;39H7[15;61H8[16;26H35[16;40H34[18;54H92[18;68H92 [43d[11;12Hlink w/ 3 Good: 25383006   Bad: 39999348[12;29H56599[12;44H825756[13;28H911882[13;44H470475[14;29H46033[14;44H336325[15;25H20[15;39H9[16;26H68[16;40H67[18;55H6[18;69H6 [43d[11;12Hno link Good: 25436103   Bad: 40036650[K[12;12Hlink w/ 3 Good: 24608917   Bad: 40863837[13;29H6460[13;44H508154[14;29H98777[14;45H73980[15;26H2[15;38H21[16;24H4001[16;38H4000[18;53H900[18;67H900 [43d[11;12Hlink w/ 4 Good: 25476841   Bad: 40086310[12;20H4[12;31H48533[12;46H914619[13;27H5004835[13;45H58318[14;28H138991[14;44H424163[15;26H5[15;39H4[16;26H34[16;40H33[18;55H4[18;69H4 [43d[11;12Hno link Good: 25496056   Bad: 40157491[K[12;12Hno link Good: 24666271   Bad: 40987277[K[13;29H23146[13;44H630403[14;12Hlink w/ 2 Good: 25157505   Bad: 40496046[15;26H7[15;39H6[15;61H7[16;26H67[16;40H66[18;55H8[18;69H8 [43d[11;12Hlink w/ 2 Good: 25534452   Bad: 40209489[12;28H703539[12;43H1040403[13;29H6090[13;45H83037[14;12Hno link Good: 25195471   Bad: 40548474[K[15;25H30[15;39H9[16;25H100[16;40H99[18;54H12[18;68H12 [43d[11;12Hno link Good: 25587574   Bad: 40246762[K[12;12Hlink w/ 1 Good: 24755887   Bad: 41078451[13;28H11353[13;44H720803[14;12Hlink w/ 3 Good: 25248311   Bad: 40586029[15;26H2[15;38H31[16;26H34[16;39H133[18;55H6[18;69H6 [43d[11;28H614622[11;44H310114[12;12Hno link Good: 24781558   Bad: 41143179[K[13;12Hlink w/ 2 Good: 25139788   Bad: 40784950[14;12Hno link Good: 25274721   Bad: 40650018[K[15;26H4[15;39H3[16;26H67[16;40H66[18;54H20[18;68H20 [43d[11;29H33694[11;45H81435[12;29H99160[12;44H215971[13;12Hno link Good: 25157914   Bad: 40857218[K[14;29H93228[14;44H721905[15;26H7[15;39H6[15;61H8[16;25H200[16;40H99[18;55H4[18;69H4 [43d[11;12Hlink w/ 4 Good: 25685727   Bad: 40419801[12;28H85054[12;45H54989[13;12Hlink w/ 2 Good: 25209536   Bad: 40895994[14;28H34507[14;45H60453[15;26H9[15;39H8[16;26H33[16;39H232[18;55H8[18;69H8 [43d[11;20H3[11;30H737532[11;47H58393[12;12Hlink w/ 4 Good: 24901587   Bad: 41294339[13;12Hno link Good: 25260946   Bad: 40934981[K[14;29H96607[14;45H99322[15;25H41[15;38H40[16;26H66[16;40H65[18;54H32[18;68H32 [43d[11;12Hno link Good: 25756560   Bad: 40529761[K[12;12Hno link Good: 24919264   Bad: 41367058[K[13;12Hlink w/ 2 Good: 25279221   Bad: 41007102[14;28H415115[14;44H871209[15;26H4[15;39H3[16;26H99[16;40H98[18;55H6[18;69H6 [43d[11;12Hlink w/ 4 Good: 25788372   Bad: 40588342[12;29H49898[12;44H426817[13;12Hno link Good: 25310312   Bad: 41066405[K[14;12Hlink w/ 3 Good: 25446472   Bad: 40930246[15;26H6[15;39H5[16;25H332[16;39H331[18;54H40[18;68H40 [43d[11;30H841425[11;46H625687[12;12Hlink w/ 4 Good: 25002275   Bad: 41464838[13;12Hlink w/ 1 Good: 25362946   Bad: 41104169[14;20H2[14;31H99278[14;47H67838[15;26H9[15;39H8[15;61H7[16;26H66[16;40H65[18;55H4[18;69H4 [43d[11;31H75099[11;47H8240[12;12Hno link Good: 25034616   Bad: 41522891[K[13;12Hno link Good: 25395852   Bad: 41161657[K[14;12Hno link Good: 25532280   Bad: 41025230[K[15;25H51[15;38H50[16;26H99[16;40H98[18;55H8[18;69H8 [43d[11;12Hno link Good: 25894223   Bad: 40753681[K[12;29H52232[12;45H95674[13;28H414157[13;44H233750[14;29H50825[14;45H97083[15;26H3[15;39H2[16;25H432[16;39H431[18;54H52[18;68H52 [43d[11;12Hlink w/ 2 Good: 25939655   Bad: 40798646[12;12Hlink w/ 4 Good: 25096879   Bad: 41641424[13;29H59115[13;45H79189[14;12Hlink w/ 1 Good: 25596129   Bad: 41142176[15;26H6[15;39H5[15;61H8[16;26H65[16;40H64[18;55H6[18;69H6 [43d[11;31H92794[11;46H835902[12;30H149207[12;47H79490[13;12Hlink w/ 1 Good: 25511788   Bad: 41316910[14;20H3[14;30H648881[14;47H79819[15;26H8[15;39H7[16;26H98[16;40H97[18;54H60[18;68H60 [43d[11;12Hno link Good: 26012655   Bad: 40906436[K[12;12Hno link Good: 25167452   Bad: 41751641[K[13;31H30731[13;47H88363[14;12Hno link Good: 25667905   Bad: 41251190[K[15;25H60[15;39H9[15;61H7[16;25H531[16;39H530[18;55H4[18;69H4 [43d[11;29H33603[11;45H7588[12;12Hlink w/ 1 Good: 25186921   Bad: 41822569[13;20H2[13;31H50827[13;46H458664[14;12Hlink w/ 2 Good: 25688220   Bad: 41321273[15;26H3[15;38H62[15;61H8[16;26H65[16;40H64[18;55H8[18;69H8 [43d[11;12Hlink w/ 4 Good: 26086680   Bad: 41013204[12;20H3[12;30H239182[12;47H60703[13;12Hno link Good: 25603563   Bad: 41496323[K[14;12Hno link Good: 25740956   Bad: 41358932[K[15;26H5[15;39H4[16;26H98[16;40H97[18;54H72[18;68H72 [43d[11;12Hno link Good: 26126836   Bad: 41063447[K[12;12Hno link Good: 25278245   Bad: 41912039[K[13;29H43134[13;44H547151[14;12Hlink w/ 3 Good: 25780618   Bad: 41409669[15;26H8[15;39H7[16;25H631[16;39H630[18;55H6[18;69H6 [43d[11;29H45918[11;44H134761[12;29H95970[12;45H84710[13;29H61320[13;44H61936[14;12Hno link Good: 25799133   Bad: 41481549[K[15;25H70[15;39H9[15;61H7[16;26H64[16;40H63[18;54H80[18;68H80 [43d[11;29H74157[11;45H96916[12;28H322897[12;43H2048178[13;29H88742[13;45H82334[14;12Hlink w/ 3 Good: 25826875   Bad: 41544202[15;26H2[15;38H71[16;26H97[16;40H96[18;55H4[18;69H4 [43d[11;29H93255[11;44H268215[12;29H40621[12;44H120850[13;28H706989[13;44H754483[14;12Hno link Good: 25845459   Bad: 41616014[K[15;26H5[15;39H4[16;25H730[16;39H729[18;55H8[18;69H8 [43d[11;28H2390[11;44H312813[12;29H85597[12;45H66272[13;12Hlink w/ 1 Good: 25752259   Bad: 41799611[14;12Hlink w/ 3 Good: 25890916   Bad: 41660955[15;26H7[15;39H6[16;26H63[16;40H62[18;54H92[18;68H92 [43d[11;12Hlink w/ 4 Good: 26292181   Bad: 41350076[12;12Hlink w/ 1 Good: 25437896   Bad: 42204362[13;12Hno link Good: 25804959   Bad: 41837300[K[14;12Hno link Good: 25943720   Bad: 41698540[K[15;26H9[15;39H8[16;26H97[16;40H96[18;55H6[18;69H6 [43d[11;12Hno link Good: 26311835   Bad: 41420824[K[12;12Hno link Good: 25455947   Bad: 42276713[K[13;12Hlink w/ 2 Good: 25823683   Bad: 41908979[14;29H62617[14;44H770046[15;25H82[15;38H81[15;61H8[16;25H830[16;39H829[18;52H3000[18;66H3000 [43d[11;12Hlink w/ 2 Good: 26332831   Bad: 41490225[12;12Hlink w/ 3 Good: 25475569   Bad: 42347488[13;31H43946[13;47H79112[14;12Hlink w/ 2 Good: 25983054   Bad: 41840005[15;26H4[15;39H3[16;26H63[16;40H62[18;55H4[18;69H4 [43d[11;31H85892[11;46H527559[12;30H527914[12;47H8553[13;12Hno link Good: 25896579   Bad: 42016874[K[14;12Hno link Good: 26035876   Bad: 41877578[K[15;26H7[15;39H6[16;26H96[16;40H95[18;55H8[18;69H8 [43d[11;12Hno link Good: 26425767   Bad: 41578080[K[12;12Hno link Good: 25566600   Bad: 42437249[K[13;28H935792[13;45H68058[14;12Hlink w/ 3 Good: 26075184   Bad: 41928667[15;26H9[15;39H8[16;25H929[16;39H928[18;54H12[18;68H12 [43d[11;29H44910[11;44H649334[12;29H84137[12;44H510108[13;29H54030[13;44H140216[14;20H2[14;31H93697[14;45H2000551[15;25H91[15;38H90[15;61H7[16;26H62[16;40H61[18;55H6[18;69H6 [43d[11;12Hlink w/ 3 Good: 26484104   Bad: 41700534[12;12Hlink w/ 3 Good: 25622440   Bad: 42562199[13;12Hlink w/ 2 Good: 25992617   Bad: 42192024[14;20H3[14;30H132542[14;47H52100[15;26H4[15;39H3[16;26H95[16;40H94[18;54H20[18;68H20 [43d[11;12Hno link Good: 26537198   Bad: 41737838[K[12;20H4[12;31H7478[12;46H600257[13;12Hno link Good: 26045328   Bad: 42229710[K[14;12Hno link Good: 26185297   Bad: 42089742[K[15;26H6[15;39H5[16;24H5029[16;38H5028[18;55H4[18;69H4 [43d[11;29H6342[11;44H802006[12;12Hno link Good: 25699493   Bad: 42665942[K[13;29H7074[13;45H94689[14;28H210860[14;44H154577[15;26H8[15;39H7[16;26H62[16;40H61[18;55H8[18;69H8 [43d[11;29H82452[11;45H73375[12;28H71702[12;44H738805[13;29H88957[13;44H366873[14;12Hlink w/ 2 Good: 26229477   Bad: 42226354[15;24H801[15;37H800[15;61H8[16;26H95[16;40H94[18;54H32[18;68H32 [43d[44;1H[?1049l [?1l>Caught SIGINT. Exiting...
4477]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# ~netfpga/netfpga/projects/selftest/sw/selftest -cn [C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[K~netfpga/netfpga/projects/selftest/sw/selftest -cn
4478Found net device: nf2c0
4479CPCI Information
4480----------------
4481Version: 4 (rev 1)
4482
4483Device (Virtex) Information
4484---------------------------
4485Project directory: selftest
4486Project name: Selftest
4487Project description: NetFPGA selftest -- exercises all major subsystems of the board
4488
4489Device ID: 5
4490Version: 1.1.0
4491Built against CPCI version: 4 (rev 1)
4492
4493[?1049h[1;44r[m(B[4l[?7h[H[2J[0;7m(B    NetFPGA selftest v1.00 alpha                                                                                                                               [3;1H[m(BClock test: pass
4494Reg test: pass
4495MDIO test: pass
4496[6GPhy 1: rev 1   up, 1000Base-TX full
4497[6GPhy 2: rev 1   up, 1000Base-TX full
4498[6GPhy 3: rev 1   up, 1000Base-TX full
4499[6GPhy 4: rev 1   up, 1000Base-TX full
4500PHY test: fail
4501   Port 1: no link Good: 3721   Bad: 13609
4502   Port 2: no link Good: 3394   Bad: 13937
4503   Port 3: no link Good: 3594   Bad: 13738
4504   Port 4: no link Good: 3536   Bad: 13798
4505DRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4506SRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4507SATA Test Disabled
4508DMA test: Iteration(one pkt write, read, compare): 40   Good: 40   Bad: 0 [44d[0;7m(BQ[m(B Quit [A[11;27H5088   Bad: 72862[12;12Hlink w/ 4 Good: 33537   Bad: 74414[13;27H4127   Bad: 73825[14;27H4493   Bad: 73460[15;23H3[15;33H2[15;51H10.74 Gbps[16;23H34   Good: 33   Bad: 0   B/W: 4.43 Gbps[18;52H8[18;63H8 [43d[11;26H88099[11;39H110223[12;28H85838[12;41H112485[13;26H8679[13;39H111527[14;12Hlink w/ 1 Good: 87247   Bad: 111079[15;23H6[15;33H5[15;52H3.42[16;23H67[16;34H66[18;52H120   Good: 120   Bad: 0 [43d[11;12Hlink w/ 2 Good: 132095   Bad: 156615[12;28H128944   Bad: 159767[13;12Hlink w/ 4 Good: 130310   Bad: 158402[14;20H3[28G130851   Bad: 157862[15;23H8[15;33H7[15;51H9.40 Gbps[K[16;23H100   Good: 99   Bad: 0   B/W: 3.32 Gbps[18;53H6[18;65H6 [43d[11;20H4[11;29H85202[11;43H9390[12;12Hno link Good: 181281   Bad: 197827[K[13;20H2[13;29H82973[13;43H96136[14;29H83692[14;43H95418[15;23H10   Good: 9   Bad: 0   B/W: 9.66 Gbps[16;24H34[16;35H133   Bad: 0   B/W: 3.57 Gbps[18;52H20[18;64H20 [43d[11;12Hno link Good: 212477   Bad: 257027[K[12;12Hlink w/ 3 Good: 207143   Bad: 262362[13;20H4[28G20944[13;42H260063[14;20H1[28G210269[14;42H25923[15;24H3[15;34H12   Bad: 0   B/W: 10.74 Gbps[16;24H67[16;36H66[16;57H71[18;53H4[18;65H4 [43d[11;27H3158[11;40H328313[12;29H24677[12;42H335224[13;12Hno link Good: 227758   Bad: 332144[K[14;12Hno link Good: 228736   Bad: 331168[K[15;24H5[15;35H4[16;23H200[16;36H99[16;57H82[18;53H8[18;65H8 [43d[11;27H83352[11;41H66944[12;12Hno link Good: 275753   Bad: 374544[K[13;27H79190[13;41H71109[14;12Hlink w/ 2 Good: 280313   Bad: 369987[15;24H7[15;35H6[16;24H33[16;35H232[16;58H9[18;52H32[18;64H32 [43d[11;26H33538[11;40H405310[12;26H3269[12;40H413740[13;26H330737[13;40H409958[14;20H1[28G331938[14;42H408758[15;23H20[15;35H9[15;54H1.33[16;24H66[16;36H65[16;57H95[18;53H6[18;65H6 [43d[11;27H54503[11;41H76586[12;12Hlink w/ 1 Good: 344666   Bad: 486424[13;12Hlink w/ 1 Good: 348904   Bad: 482187[14;20H2[14;29H50374[14;43H8071[15;24H2[15;34H21[15;56H27[16;24H99[16;36H98[16;55H4.00[18;52H40[18;64H40 [43d[11;12Hlink w/ 3 Good: 386112   Bad: 535371[12;29H75090[12;42H54639[13;12Hno link Good: 379808   Bad: 541677[K[14;12Hno link Good: 381557   Bad: 539929[K[15;24H5[15;35H4[15;56H71[16;23H332[16;35H331[16;58H4[18;53H4[18;65H4 [43d[11;12Hno link Good: 439241   Bad: 572640[K[12;12Hno link Good: 427410   Bad: 584472[K[13;12Hlink w/ 4 Good: 432449   Bad: 579434[14;12Hlink w/ 3 Good: 434275   Bad: 577609[15;24H7[15;35H6[15;54H0.74[16;24H66[16;36H65[16;55H3.77[18;53H8[18;65H8 [43d[11;12Hlink w/ 4 Good: 473152   Bad: 629121[12;27H59902[12;40H6423[13;12Hno link Good: 465465   Bad: 636810[K[14;29H67577[14;42H63469[15;24H9[15;35H8[16;24H99[16;36H98[16;57H82[18;52H52[18;64H52 [43d[11;12Hno link Good: 492259   Bad: 700413[K[12;27H77528[12;40H715145[13;27H8375[13;40H708919[14;12Hno link Good: 486064   Bad: 706611[K[15;23H32[15;34H31[15;54H1.10[16;23H432[16;35H431[16;58H6[18;53H6[18;65H6 [43d[11;26H537538[11;41H45530[12;12Hlink w/ 3 Good: 521795   Bad: 761275[13;12Hlink w/ 2 Good: 528541   Bad: 754530[14;12Hlink w/ 1 Good: 531077   Bad: 751995[15;24H4[15;35H3[15;56H07[16;24H65[16;36H64[16;58H9[18;52H60[18;64H60 [43d[11;12Hlink w/ 3 Good: 590655   Bad: 782808[12;12Hno link Good: 574104   Bad: 799360[K[13;12Hno link Good: 581271   Bad: 792194[K[14;20H2[14;29H83851[14;43H89616[15;24H6[15;35H5[15;57H5[16;24H98[16;36H97[16;57H92[18;53H4[18;65H4 [43d[11;20H2[28G610716[11;42H853144[12;27H92692[12;40H871169[13;26H600479[13;40H86338[14;12Hno link Good: 603316   Bad: 860548[K[15;24H9[15;35H8[15;56H33[16;23H531[16;35H530[16;58H5[18;53H8[18;65H8 [43d[11;12Hno link Good: 631255   Bad: 923003[K[12;12Hlink w/ 1 Good: 611772   Bad: 942487[13;27H20145[13;40H934115[14;27H23299[14;40H930962[15;23H41[15;34H40[15;57H0[16;24H64[16;36H63[16;58H8[18;52H72[18;64H72 [43d[11;12Hlink w/ 4 Good: 684350   Bad: 960301[12;20H3[12;29H64106[12;43H80546[13;12Hlink w/ 1 Good: 672799   Bad: 971854[14;12Hlink w/ 3 Good: 676057   Bad: 968598[15;24H4[15;35H3[15;56H54[16;24H98[16;36H97[16;55H4.01[18;53H6[18;65H6 [43d[11;12Hno link Good: 724720   Bad: 1010327[K[12;20H4[28G703360[12;42H1031688[13;12Hno link Good: 712552   Bad: 1022497[K[14;12Hno link Good: 715925   Bad: 1019125[K[15;24H6[15;35H5[15;57H0[16;23H631[16;35H630[16;58H3[18;52H80[18;64H80 [43d[11;27H43887[11;42H81560[12;12Hno link Good: 721026   Bad: 1104422[K[13;27H30789[13;42H94661[14;27H34564[14;42H90887[15;24H8[15;35H7[15;54H0.97[16;24H64[16;36H63[16;55H3.87[18;53H4[18;65H4 [43d[11;12Hlink w/ 3 Good: 782630   Bad: 1133212[12;27H58703[12;42H57140[13;12Hlink w/ 2 Good: 768902   Bad: 1146943[14;12Hlink w/ 2 Good: 772929   Bad: 1142917[15;23H51[15;34H50[15;54H1.18[16;24H97[16;36H96[16;58H9[18;53H8[18;65H8 [43d[11;20H2[28G835687[11;44H70551[12;12Hlink w/ 1 Good: 811056   Bad: 1195183[13;20H1[28G821639[13;44H84601[14;20H3[28G825666[14;44H80576[15;24H3[15;35H2[15;57H7[16;23H730[16;35H729[16;57H91[18;52H92[18;64H92 [43d[11;12Hno link Good: 862236   Bad: 1234401[K[12;12Hno link Good: 836369   Bad: 1260269[K[13;12Hno link Good: 847655   Bad: 1248984[K[14;12Hno link Good: 851801   Bad: 1244839[K[15;24H5[15;35H4[15;57H5[16;24H63[16;36H62[16;58H3[18;53H6[18;65H6 [43d[11;27H81320[11;41H305707[12;27H54035[12;41H332994[13;27H65830[13;41H321200[14;12Hlink w/ 2 Good: 870334   Bad: 1316697[15;24H8[15;35H7[15;56H33[16;24H96[16;36H95[16;58H5[18;52H1000   Good: 1000   Bad: 0 [43d[11;12Hlink w/ 2 Good: 933727   Bad: 1343698[12;26H905678[12;42H71749[13;12Hlink w/ 4 Good: 917859   Bad: 1359569[14;20H1[28G92251[14;44H54915[15;23H60[15;35H9[15;57H1[16;23H830[16;35H829[16;58H7
4509
4510[54G4[18;67H4 [43d[11;12Hno link Good: 985970   Bad: 1381852[K[12;27H57002[12;41H410821[13;12Hno link Good: 969580   Bad: 1398244[K[14;12Hno link Good: 974347   Bad: 1393478[K[15;24H3[15;34H62[15;56H48[16;24H63[16;36H62[16;58H9
4511
4512[54G8[18;67H8 [43d[11;26H1005055   Bad: 1453163[12;27H74539[12;42H83680[13;27H8784[13;41H470380[14;27H92894[14;41H465327[15;24H5[15;35H4[15;57H5[16;24H96[16;36H95[16;55H4.00[18;53H12[18;66H12 [43d[11;28H37219[11;42H51139[12;26H1005494   Bad: 1543119[13;26H1019346   Bad: 1529269[14;26H1024696   Bad: 1523920[15;24H7[15;35H6[15;57H3[16;23H929[16;35H928[16;58H2
4513
4514[54G6[18;67H6 [43d[11;12Hlink w/ 2 Good: 1090338   Bad: 1548672[12;12Hlink w/ 3 Good: 1057858   Bad: 1581153[13;28H71972[13;43H67040[14;28H7751[14;43H61497[15;23H70[15;35H9[15;56H2[16;24H62[16;36H61[16;55H3.91[18;53H20[18;66H20 [43d[11;29H134346[11;45H95061[12;12Hno link Good: 1100969   Bad: 1628439[K[13;12Hlink w/ 2 Good: 1115498   Bad: 1613911[14;12Hlink w/ 3 Good: 1121130   Bad: 1608280[15;24H2[15;34H71[15;57H1[16;24H95[16;36H94[16;58H2
4515
4516[54G4[18;67H4 [43d[11;12Hno link Good: 1187460   Bad: 1632344[K[12;12Hlink w/ 3 Good: 1153279   Bad: 1666526[13;30H68206[13;45H51600[14;20H1[14;30H73865[14;45H45942[15;24H4[15;35H3[15;57H0[16;23H1028   Good: 1027   Bad: 0   B/W: 3.94 Gbps[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 1213908   Bad: 1696292[12;12Hno link Good: 1178288   Bad: 1731913[K[13;12Hno link Good: 1193732   Bad: 1716470[K[14;12Hno link Good: 1199625   Bad: 1710578[K[15;24H7[15;35H6[15;56H33[16;25H62[16;38H61[16;60H6[18;53H32[18;66H32 [43d[11;12Hno link Good: 1233021   Bad: 1767572[K[12;12Hlink w/ 1 Good: 1195860   Bad: 1804734[13;27H21185[13;43H88743[14;27H2181[14;43H82471[15;24H9[15;35H8[15;57H2[16;25H95[16;38H94[16;60H7[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 1285709   Bad: 1805283[12;20H3[12;29H247852[12;45H43141[13;12Hlink w/ 4 Good: 1264213   Bad: 1826781[14;28H70673[14;42H820322[15;23H82[15;34H81[15;56H44[16;24H128[16;37H127[16;60H8[18;53H40[18;66H40 [43d[11;12Hno link Good: 1336684   Bad: 1844704[K[12;12Hno link Good: 1298085   Bad: 1883304[K[13;29H314784[13;45H66607[14;27H321286[14;43H60106[15;24H4[15;35H3[15;57H3[16;25H61[16;38H60[16;60H9[18;54H4[18;67H4 [43d[11;28H55870[11;42H91591[12;12Hlink w/ 4 Good: 1315707   Bad: 1956078[13;12Hno link Good: 1333066   Bad: 1938720[K[14;12Hlink w/ 1 Good: 1339791   Bad: 1931996[15;24H6[15;35H5[15;57H1[16;25H94[16;38H93[16;57H4.00[18;54H8[18;67H8 [43d[11;28H88261[11;43H73912[12;12Hno link Good: 1346969   Bad: 2015205[K[13;12Hlink w/ 1 Good: 1364811   Bad: 1997365[14;20H2[14;30H7178[14;45H903[15;24H9[15;35H8[15;56H52[16;24H227[16;37H226[16;60H1[18;53H52[18;66H52 [43d[11;12Hlink w/ 3 Good: 1441398   Bad: 2011178[12;12Hlink w/ 3 Good: 1399322   Bad: 2053255[13;20H2[13;29H41750[13;43H2035077[14;12Hno link Good: 1424551   Bad: 2028028[K[15;23H91[15;34H90[15;56H24[16;25H60[16;38H59[16;57H3.93[18;54H6[18;67H6 [43d[11;30H74314[11;45H6865[12;20H4[12;29H43105[12;44H111921[13;20H4[13;30H49677[13;45H9329[14;28H5689[14;43H86084[15;24H3[15;35H2[15;57H3[16;25H94[16;38H93[16;60H4[18;53H60[18;66H60 [43d[11;12Hno link Good: 1493427   Bad: 2139938[K[12;12Hno link Good: 1448807   Bad: 2184559[K[13;12Hno link Good: 1467935   Bad: 2165432[K[14;28H75354[14;42H15801[15;24H6[15;35H5[15;56H3[16;24H327[16;37H326[16;60H5[18;54H4[18;67H4 [43d[11;27H539542[11;43H84224[12;12Hlink w/ 1 Good: 1494211   Bad: 2229556[13;27H513642[13;42H210126[14;27H521171[14;42H202598[15;24H8[15;35H7[15;57H2[16;25H60[16;38H59[16;60H7[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 1592614   Bad: 2221542[12;20H4[12;29H546562[12;45H67595[13;28H66337[13;43H47821[14;28H73944[14;43H40215[15;23H101   Good: 100   Bad: 0   B/W: 11.42 Gbps[16;25H93[16;38H92[16;60H8[18;53H72[18;66H72 [43d[11;12Hno link Good: 1611722   Bad: 2292834[K[12;20H3[12;30H64191[12;44H340366[13;28H84636[13;42H319923[14;28H92512[14;42H312048[15;25H3[15;37H2[15;59H1[16;24H426[16;37H425[18;54H6[18;67H6 [43d[11;28H33113[11;42H361839[12;30H84174[12;44H410780[13;27H605230[13;43H89725[14;12Hlink w/ 3 Good: 1613225   Bad: 2381731[15;25H5[15;37H4[15;58H39[16;25H59[16;38H58[16;60H9[18;53H80[18;66H80 [43d[11;28H86250[11;43H99098[12;12Hno link Good: 1636538   Bad: 2448811[K[13;12Hlink w/ 2 Good: 1657912   Bad: 2427439[14;20H2[14;30H66013[14;44H419339[15;25H8[15;37H7[15;58H4[16;25H92[16;38H91[16;57H4.00[18;54H4[18;67H4 [43d[11;27H725824[11;42H449921[12;28H7501[12;42H500728[13;30H96839[13;45H7890[14;12Hno link Good: 1704909   Bad: 2470840[K[15;24H10[15;37H9[15;59H7[16;24H526[16;37H525[16;60H1[18;54H8[18;67H8 [43d[11;28H44861[11;42H521280[12;12Hlink w/ 3 Good: 1692597   Bad: 2573545[13;12Hno link Good: 1715128   Bad: 2551015[K[14;12Hlink w/ 3 Good: 1723365   Bad: 2542779[15;25H2[15;36H11[15;58H24[16;25H59[16;38H58[16;57H3.95[18;53H92[18;66H92 [43d[11;12Hlink w/ 2 Good: 1784488   Bad: 2572047[12;20H4[12;29H731186[12;44H625350[13;12Hlink w/ 2 Good: 1754193   Bad: 2602345[14;30H62582[14;45H93957[15;25H5[15;37H4[15;58H33[16;25H92[16;38H91[18;54H6[18;67H6 [43d[11;12Hno link Good: 1837528   Bad: 2609405[K[12;12Hno link Good: 1783554   Bad: 2663380[K[13;12Hno link Good: 1806876   Bad: 2640059[K[14;20H2[14;29H815359[14;44H63157[15;25H7[15;37H6[15;59H2[16;24H625[16;37H624[16;60H6[18;52H200[18;65H200 [43d[11;28H63407[11;43H73923[12;27H807927[12;42H729404[13;28H31873[13;42H705460[14;12Hno link Good: 1840566   Bad: 2696768[K[15;24H20[15;37H9[15;58H41[16;25H58[16;38H57[16;60H7[18;54H4[18;67H4 [43d[11;12Hlink w/ 3 Good: 1882828   Bad: 2744897[12;12Hlink w/ 3 Good: 1825790   Bad: 2801936[13;12Hlink w/ 1 Good: 1850424   Bad: 2777303[14;12Hlink w/ 3 Good: 1859352   Bad: 2768377[15;25H2[15;36H21[15;59H0[16;25H91[16;38H90[16;60H8[18;54H8[18;67H8 [43d[11;12Hno link Good: 1935844   Bad: 2782276[K[12;12Hno link Good: 1878157   Bad: 2839964[K[13;12Hno link Good: 1903065   Bad: 2815057[K[14;12Hno link Good: 1912143   Bad: 2805980[K[15;25H4[15;37H3[15;58H39[16;24H724[16;37H723[16;60H9[18;53H12[18;66H12 [43d[11;12Hlink w/ 4 Good: 1986474   Bad: 2822044[12;27H927899[12;43H80620[13;28H53111[13;43H55410[14;12Hlink w/ 2 Good: 1962357   Bad: 2846165[15;25H7[15;37H6[15;58H47[16;25H58[16;38H57[16;57H4.00[18;54H6[18;67H6 [43d[11;12Hno link Good: 2005754   Bad: 2893159[K[12;28H45530[12;42H953384[13;28H71339[13;42H927576[14;12Hno link Good: 1980933   Bad: 2917984[K[15;25H9[15;37H8[15;59H5[16;25H91[16;38H90[18;53H20[18;66H20 [43d[11;28H38786[11;42H950524[12;12Hlink w/ 4 Good: 1977443   Bad: 3011868[13;12Hlink w/ 2 Good: 2003775   Bad: 2985537[14;12Hlink w/ 1 Good: 2013598   Bad: 2975715[15;24H32[15;36H31[15;58H53[16;24H824[16;37H823[16;60H1[18;54H4[18;67H4 [43d[11;12Hlink w/ 2 Good: 2091886   Bad: 2987821[12;12Hno link Good: 2029745   Bad: 3049963[K[13;12Hno link Good: 2056338   Bad: 3023371[K[14;30H66442[14;43H3013269[15;25H4[15;37H3[15;58H3[16;25H57[16;38H56[16;57H3.95[18;54H8[18;67H8 [43d[44;1H[?1049l [?1l>Caught SIGINT. Exiting...
4517]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~#
4518]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~#
4519]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# exit
4520logout
4521]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ ls
4522[0m[01;32mbad_pkt_dump[0m     or_ip.c     or_utils.o      selftest_clk.o   selftest_dram.h  selftest_mdio.o  selftest_reg.c     selftest_serial.o
4523bad_pkt_dump.c   or_ip.h     [01;32mselftest[0m        selftest_dma.c   selftest_dram.o  selftest.o       selftest_reg.h     selftest_sram.c
4524bad_pkt_dump.o   or_ip.o     selftest.c      selftest_dma.h   selftest.h       selftest_phy.c   selftest_reg.o     selftest_sram.h
4525Makefile         or_utils.c  selftest_clk.c  selftest_dma.o   selftest_mdio.c  selftest_phy.h   selftest_serial.c  selftest_sram.o
4526or_data_types.h  or_utils.h  selftest_clk.h  selftest_dram.c  selftest_mdio.h  selftest_phy.o   selftest_serial.h
4527[m]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ lssudo su -
4528]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# exit~netfpga/netfpga/projects/selftest/sw/selftest -cn
4529Found net device: nf2c0
4530CPCI Information
4531----------------
4532Version: 4 (rev 1)
4533
4534Device (Virtex) Information
4535---------------------------
4536Project directory: selftest
4537Project name: Selftest
4538Project description: NetFPGA selftest -- exercises all major subsystems of the board
4539
4540Device ID: 5
4541Version: 1.1.0
4542Built against CPCI version: 4 (rev 1)
4543
4544[?1049h[1;44r[m(B[4l[?7h[H[2J[0;7m(B    NetFPGA selftest v1.00 alpha                                                                                                                               [3;1H[m(BClock test: pass
4545Reg test: pass
4546MDIO test: pass
4547[6GPhy 1: rev 1   up, 1000Base-TX full
4548[6GPhy 2: rev 1   up, 1000Base-TX full
4549[6GPhy 3: rev 1   up, 1000Base-TX full
4550[6GPhy 4: rev 1   up, 1000Base-TX full
4551PHY test: fail
4552   Port 1: link w/ 3 Good: 10183   Bad: 7138
4553   Port 2: no link Good: 10063   Bad: 7259
4554   Port 3: link w/ 2 Good: 10089   Bad: 7234
4555   Port 4: link w/ 3 Good: 10135   Bad: 7189
4556DRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4557SRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4558SATA Test Disabled
4559DMA test: Iteration(one pkt write, read, compare): 40   Good: 40   Bad: 0 [44d[0;7m(BQ[m(B Quit [A[11;12Hno link Good: 49136   Bad: 58784[K[12;26H47801[12;39H60120[13;12Hno link Good: 48346   Bad: 59577[K[14;12Hno link Good: 48614   Bad: 59309[K[15;23H3[15;33H2[15;51H5.37 Gbps[16;23H34   Good: 33   Bad: 0   B/W: 2.21 Gbps[18;52H8[18;63H8 [43d[11;26H68287[11;39H130007[12;26H65484[12;39H132811[13;26H66538[13;39H131758[14;26H67169[14;39H131128[15;23H6[15;33H5[15;51H8.95[16;23H67[16;34H66[16;55H95
4560
4561[52G120   Good: 120   Bad: 0 [43d[11;26H113078   Bad: 175605[12;12Hlink w/ 4 Good: 109381   Bad: 179303[13;26H110744   Bad: 177941[14;26H111632   Bad: 177054[15;23H8[15;33H7[15;51H9.40[16;23H100   Good: 99   Bad: 0   B/W: 3.32 Gbps[18;53H6[18;65H6 [43d[11;12Hlink w/ 3 Good: 166208   Bad: 212870[12;29H61678[12;42H217401[13;27H63432[13;40H215648[14;27H64408[14;40H214673[15;23H10   Good: 9   Bad: 0   B/W: 9.66 Gbps[16;24H34[16;35H133   Bad: 0   B/W: 3.57 Gbps[18;52H20[18;64H20 [43d[11;12Hno link Good: 186837   Bad: 282636[K[12;12Hno link Good: 180747   Bad: 288727[K[13;27H83193[13;41H86282[14;27H84353[14;41H85124[15;24H3[15;34H12   Bad: 0   B/W: 10.74 Gbps[16;24H67[16;36H66[16;57H71[18;53H4[18;65H4 [43d[11;26H21139[11;40H348477[12;12Hlink w/ 1 Good: 203948   Bad: 355928[13;26H206948[13;40H352929[14;26H208385[14;40H351493[15;24H5[15;35H4[16;23H200[16;36H99[16;57H82[18;53H8[18;65H8 [43d[11;12Hlink w/ 3 Good: 264494   Bad: 385775[12;12Hno link Good: 256302   Bad: 393968[K[13;27H59611[13;41H90660[14;12Hlink w/ 2 Good: 261215   Bad: 389057[15;24H7[15;35H6[16;24H33[16;35H232[16;58H9[18;52H32[18;64H32 [43d[11;28H305339[11;42H43531[12;27H96036[12;40H444620[13;12Hlink w/ 1 Good: 299907   Bad: 440750[14;20H1[28G301541[14;42H43911[15;23H20[15;35H9[15;54H1.33[16;24H66[16;36H65[16;57H95[18;53H6[18;65H6 [43d[11;20H2[11;29H24537[11;42H506521[12;12Hlink w/ 4 Good: 313645   Bad: 517414[13;12Hno link Good: 318060   Bad: 513000[K[14;12Hno link Good: 320030   Bad: 511031[K[15;24H2[15;34H21[15;56H27[16;24H99[16;36H98[16;55H4.00[18;52H40[18;64H40 [43d[11;20H4[11;29H58419[11;43H63038[12;20H1[12;29H46383[12;43H75076[13;27H51246[13;41H70214[14;12Hlink w/ 2 Good: 353473   Bad: 567988[15;24H5[15;35H4[15;54H0.74[16;23H332[16;35H331[16;55H3.7
4562
4563[53G4[18;65H4 [43d[11;20H3[28G411538[11;42H600314[12;12Hno link Good: 398702   Bad: 613151[K[13;26H4039[13;40H607909[14;20H3[28G406249[14;42H605607[15;24H7[15;35H6[16;24H66[16;36H65[16;58H7[18;53H8[18;65H8 [43d[11;20H2[11;29H38622[11;43H63625[12;26H424469[12;41H77779[13;12Hlink w/ 2 Good: 430295   Bad: 671955[14;12Hno link Good: 432760   Bad: 669491[K[15;24H9[15;35H8[16;24H99[16;36H98[16;57H82[18;52H52[18;64H52 [43d[11;12Hno link Good: 457748   Bad: 734894[K[12;27H41978[12;40H750666[13;12Hno link Good: 448500   Bad: 744145[K[14;27H51272[14;40H741374[15;23H32[15;34H31[15;54H1.10[16;23H432[16;35H431[16;58H6[18;53H6[18;65H6 [43d[11;12Hlink w/ 4 Good: 509687   Bad: 773352[12;12Hlink w/ 1 Good: 493117   Bad: 789923[13;26H500014[13;41H83027[14;26H5029[14;41H80071[15;24H4[15;35H3[15;56H07[16;24H65[16;36H64[16;58H9[18;52H60[18;64H60 [43d[11;12Hno link Good: 557055   Bad: 816380[K[12;12Hno link Good: 539699   Bad: 833737[K[13;12Hlink w/ 1 Good: 546913   Bad: 826524[14;27H49924[14;40H823514[15;24H6[15;35H5[15;57H5[16;24H98[16;36H97[16;57H92[18;53H4[18;65H4 [43d[11;27H76222[11;41H87608[12;12Hlink w/ 3 Good: 557364   Bad: 906467[13;12Hno link Good: 565119   Bad: 898714[K[14;27H68341[14;41H95493[15;24H9[15;35H8[15;56H33[16;23H531[16;35H530[16;58H5[18;53H8[18;65H8 [43d[11;12Hlink w/ 4 Good: 607985   Bad: 946242[12;12Hno link Good: 587869   Bad: 966360[K[13;27H96178[13;40H958052[14;27H99575[14;40H954656[15;23H41[15;34H40[15;57H0[16;24H64[16;36H63[16;58H8[18;52H72[18;64H72 [43d[11;20H3[11;29H61134[11;43H83488[12;12Hlink w/ 1 Good: 640146   Bad: 1004478[13;26H64883[13;41H95787[14;26H652397[14;41H92229[15;24H4[15;35H3[15;56H54[16;24H98[16;36H97[16;55H4.01[18;53H6[18;65H6 [43d[11;12Hno link Good: 699249   Bad: 1035771[K[12;12Hno link Good: 677260   Bad: 1057761[K[13;27H86404[13;40H1048618[14;27H90139[14;40H1044884[15;24H6[15;35H5[15;54H0.98[16;23H631[16;35H630[16;55H3.84[18;52H80[18;64H80 [43d[11;26H718471[11;41H106944[12;27H94883[12;41H130533[13;12Hlink w/ 2 Good: 704670   Bad: 1120748[14;12Hlink w/ 1 Good: 708549   Bad: 1116870[15;24H8[15;35H7[15;57H7[16;24H64[16;36H63[16;58H7[18;53H4[18;65H4 [43d[11;12Hlink w/ 2 Good: 763882   Bad: 1151930[12;26H739385[12;42H76428[13;12Hno link Good: 749620   Bad: 1166194[K[14;20H2[14;29H53562[14;44H62253[15;23H51[15;34H50[15;54H1.18[16;24H97[16;36H96[16;58H9[18;53H8[18;65H8 [43d[11;12Hno link Good: 808710   Bad: 1197498[K[12;27H83268[12;41H222941[13;27H93992[13;41H212219[14;12Hno link Good: 797974   Bad: 1208238[K[15;24H3[15;35H2[15;57H7[16;23H730[16;35H729[16;57H91[18;52H92[18;64H92 [43d[11;12Hlink w/ 4 Good: 860858   Bad: 1235747[12;26H834784[12;42H61822[13;12Hlink w/ 1 Good: 845828   Bad: 1250780[14;12Hlink w/ 2 Good: 849930   Bad: 1246679[15;24H5[15;35H4[15;57H5[16;24H63[16;36H62[16;58H3[18;53H6[18;65H6 [43d[11;12Hno link Good: 907955   Bad: 1279047[K[12;27H81050[12;41H305953[13;12Hno link Good: 892412   Bad: 1294592[K[14;12Hno link Good: 896645   Bad: 1290360[K[15;24H8[15;35H7[15;56H33[16;24H96[16;36H95[16;58H5[18;52H1000   Good: 1000   Bad: 0 [43d[11;12Hlink w/ 4 Good: 927149   Bad: 1350247[12;27H98692[12;42H78705[13;26H910719[13;41H366680[14;26H915188[14;41H362212[15;23H60[15;35H9[15;57H1[16;23H830[16;35H829[16;58H7
4564
4565[54G4[18;67H4 [43d[11;20H2[11;29H5910[11;43H408685[12;12Hlink w/ 4 Good: 929493   Bad: 1438302[13;12Hlink w/ 4 Good: 942010   Bad: 1425786[14;12Hlink w/ 3 Good: 946746   Bad: 1421051[15;24H3[15;34H62[15;56H48[16;24H63[16;36H62[16;58H9
4566
4567[54G8[18;67H8 [43d[11;12Hno link Good: 1012165   Bad: 1446021[K[12;12Hno link Good: 981837   Bad: 1476350[K[13;12Hno link Good: 994651   Bad: 1463538[K[14;12Hno link Good: 999581   Bad: 1458609[K[15;24H5[15;35H4[15;57H5[16;24H96[16;36H95[16;55H4.00[18;53H12[18;66H12 [43d[11;12Hlink w/ 4 Good: 1051006   Bad: 1497580[12;26H1019501   Bad: 1529086[13;26H1032770   Bad: 1515818[14;26H1037938   Bad: 1510651[15;24H7[15;35H6[15;56H07[16;23H929[16;35H928[16;55H3.89
4568
4569[54G6[18;67H6 [43d[11;12Hno link Good: 1070090   Bad: 1568891[K[12;28H37027[12;42H601955[13;28H51049[13;43H87935[14;28H56416[14;43H82569[15;23H70[15;35H9[15;56H23[16;24H62[16;36H61[16;57H91[18;53H20[18;66H20 [43d[11;27H115704[11;42H613674[12;12Hlink w/ 3 Good: 1081838   Bad: 1647541[13;28H96242[13;42H633138[14;12Hlink w/ 2 Good: 1101700   Bad: 1627681[15;24H2[15;34H71[15;57H1[16;24H95[16;36H94[16;58H2
4570
4571[54G4[18;67H4 [43d[11;12Hlink w/ 2 Good: 1168753   Bad: 1651021[12;20H1[12;29H134241[12;45H85534[13;12Hlink w/ 2 Good: 1148871   Bad: 1670905[14;12Hno link Good: 1154482   Bad: 1665295[K[15;24H4[15;35H3[15;57H0[16;23H1028   Good: 1027   Bad: 0   B/W: 3.94 Gbps[18;54H8[18;67H8 [43d[11;12Hno link Good: 1188422   Bad: 1721750[K[12;12Hno link Good: 1152407   Bad: 1757766[K[13;12Hno link Good: 1167787   Bad: 1742388[K[14;28H73536[14;42H736639[15;24H7[15;35H6[15;56H33[16;25H62[16;38H61[16;60H6[18;53H32[18;66H32 [43d[11;12Hlink w/ 3 Good: 1213734   Bad: 1786833[12;12Hlink w/ 3 Good: 1176612   Bad: 1823956[13;28H92501[13;42H80806[14;28H98388[14;42H802183[15;24H9[15;35H8[15;57H2[16;25H95[16;38H94[16;60H7[18;54H6[18;67H6 [43d[11;20H4[11;30H66753[11;44H824209[12;20H1[12;29H229000[12;45H61963[13;12Hlink w/ 1 Good: 1245141   Bad: 1845823[14;27H25114[14;43H39817[15;23H82[15;34H81[15;56H44[16;24H128[16;37H127[16;60H8[18;53H40[18;66H40 [43d[11;12Hno link Good: 1306723   Bad: 1874635[K[12;12Hno link Good: 1267889   Bad: 1913470[K[13;12Hno link Good: 1284528   Bad: 1896832[K[14;28H90576[14;43H90785[15;24H4[15;35H3[15;57H3[16;25H61[16;38H60[16;60H9[18;54H4[18;67H4 [43d[11;28H25839[11;42H94591[12;28H85542[12;43H86213[13;27H302894[13;42H96886[14;27H309099[14;42H962658[15;24H6[15;35H5[15;57H1[16;25H94[16;38H93[16;57H4.00[18;54H8[18;67H8 [43d[11;28H60391[11;41H2001759[12;27H318929[12;41H2043222[13;28H3681[13;41H2025339[14;12Hlink w/ 1 Good: 1343303   Bad: 2018851[15;24H9[15;35H8[15;56H25[16;24H227[16;37H226[16;57H3.92[18;53H52[18;66H52 [43d[11;12Hlink w/ 2 Good: 1413476   Bad: 2039072[12;28H7134[12;43H81200[13;12Hlink w/ 1 Good: 1389428   Bad: 2063123[14;20H3[14;30H9608[14;45H56469[15;23H91[15;34H90[15;57H4[16;25H60[16;38H59[16;60H3[18;54H6[18;67H6 [43d[11;12Hno link Good: 1439766   Bad: 2103175[K[12;28H961[12;42H146793[13;12Hno link Good: 1414939   Bad: 2128004[K[14;12Hno link Good: 1421698   Bad: 2121246[K[15;24H3[15;35H2[15;57H3[16;25H94[16;38H93[16;60H4[18;53H60[18;66H60 [43d[11;28H58902[11;43H74436[12;12Hlink w/ 4 Good: 1413786   Bad: 2219553[13;28H33143[13;42H200197[14;28H40153[14;43H93189[15;24H6[15;35H5[15;56H3[16;24H327[16;37H326[16;60H5[18;54H4[18;67H4 [43d[11;27H511765[11;42H211969[12;20H1[12;30H65912[12;45H57824[13;12Hlink w/ 4 Good: 1485546   Bad: 2238191[14;28H92699[14;42H23103[15;24H8[15;35H7[15;57H2[16;25H60[16;38H59[16;60H7[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 1558320   Bad: 2255809[12;12Hno link Good: 1511517   Bad: 2302613[K[13;20H1[13;29H531557[13;45H82575[14;27H53883[14;43H75294[15;23H101   Good: 100   Bad: 0   B/W: 11.42 Gbps[16;25H93[16;38H92[16;60H8[18;53H72[18;66H72 [43d[11;12Hno link Good: 1577459   Bad: 2327066[K[12;28H29228[12;43H75298[13;12Hno link Good: 1549861   Bad: 2354666[K[14;28H57388[14;42H347140[15;25H3[15;37H2[15;59H1[16;24H426[16;37H425[18;54H6[18;67H6 [43d[11;12Hlink w/ 3 Good: 1610118   Bad: 2384803[12;12Hlink w/ 3 Good: 1560585   Bad: 2434337[13;28H81744[13;42H413179[14;12Hlink w/ 1 Good: 1589558   Bad: 2405367[15;25H5[15;37H4[15;58H39[16;25H59[16;38H58[16;60H9[18;53H80[18;66H80 [43d[11;12Hno link Good: 1663153   Bad: 2422166[K[12;12Hno link Good: 1612920   Bad: 2472401[K[13;12Hlink w/ 4 Good: 1634436   Bad: 2450886[14;20H3[14;29H642380[14;45H42943[15;25H8[15;37H7[15;58H4[16;25H92[16;38H91[16;57H4.00[18;54H4[18;67H4 [43d[11;27H700271[11;43H75442[12;28H48998[12;42H526717[13;30H70914[13;44H504802[14;12Hno link Good: 1679042   Bad: 2496675[K[15;24H10[15;37H9[15;58H25[16;24H526[16;37H525[16;57H3.94[18;54H8[18;67H8 [43d[11;28H1946[11;42H546651[12;28H66601[12;43H99512[13;12Hno link Good: 1689100   Bad: 2577014[K[14;28H97603[14;42H568512[15;25H2[15;36H11[15;59H4[16;25H59[16;38H58[16;60H5[18;53H92[18;66H92 [43d[11;28H65758[11;43H90749[12;12Hlink w/ 1 Good: 1711979   Bad: 2644530[13;12Hlink w/ 2 Good: 1734887   Bad: 2621623[14;12Hlink w/ 1 Good: 1743567   Bad: 2612944[15;25H5[15;37H4[15;58H33[16;25H92[16;38H91[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 1809810   Bad: 2637094[12;12Hno link Good: 1755012   Bad: 2691893[K[13;20H4[13;30H78390[13;45H68517[14;30H87101[14;45H59807[15;25H7[15;37H6[15;59H2[16;24H625[16;37H624[16;60H6[18;52H200[18;65H200 [43d[11;20H3[11;30H62885[11;45H74416[12;12Hlink w/ 4 Good: 1807356   Bad: 2729946[13;20H1[13;29H831023[13;44H706280[14;12Hno link Good: 1839825   Bad: 2697479[K[15;24H20[15;37H9[15;58H41[16;25H58[16;38H57[16;60H7[18;54H4[18;67H4 [43d[11;12Hno link Good: 1909113   Bad: 2718582[K[12;20H3[12;30H52627[12;45H75069[13;12Hno link Good: 1876737   Bad: 2750960[K[14;28H85574[14;42H742125[15;25H2[15;36H21[15;59H0[16;25H91[16;38H90[16;60H8[18;54H8[18;67H8 [43d[11;28H28215[11;43H89877[12;12Hno link Good: 1870267   Bad: 2847826[K[13;28H94982[13;42H823113[14;27H904175[14;42H813921[15;25H4[15;37H3[15;58H39[16;24H724[16;37H723[16;60H9[18;53H12[18;66H12 [43d[11;12Hlink w/ 3 Good: 1961054   Bad: 2847433[12;27H901909[12;42H906579[13;12Hlink w/ 1 Good: 1927095   Bad: 2881395[14;12Hlink w/ 3 Good: 1936612   Bad: 2871879[15;25H7[15;37H6[15;58H47[16;25H58[16;38H57[16;57H4.00[18;54H6[18;67H6 [43d[11;12Hno link Good: 2014216   Bad: 2884669[K[12;12Hlink w/ 4 Good: 1954215   Bad: 2944672[13;20H2[13;30H79784[13;44H919104[14;12Hno link Good: 1989408   Bad: 2909481[K[15;25H9[15;37H8[15;59H5[16;25H91[16;38H90[18;53H20[18;66H20 [43d[11;28H5204[11;42H937233[12;12Hno link Good: 1990972   Bad: 2998308[K[13;28H2017121[13;45H72161[14;12Hlink w/ 1 Good: 2026878   Bad: 2962405[15;24H32[15;36H31[15;58H34[16;24H824[16;37H823[16;57H3.95[18;54H4[18;67H4 [43d[11;12Hlink w/ 2 Good: 2071111   Bad: 3008564[12;26H2008760[12;41H3070916[13;12Hno link Good: 2035381   Bad: 3044296[K[14;12Hno link Good: 2045301   Bad: 3034377[K[15;25H4[15;37H3[15;59H3[16;25H57[16;38H56[18;54H8[18;67H8 [43d[11;12Hno link Good: 2117613   Bad: 3052456[K[12;12Hlink w/ 1 Good: 2054474   Bad: 3115597[13;12Hlink w/ 2 Good: 2081438   Bad: 3088634[14;28H91480[14;43H78593[15;25H6[15;37H5[15;59H2[16;25H90[16;38H89[16;60H6[18;53H32[18;66H32 [43d[11;12Hlink w/ 3 Good: 2170370   Bad: 3090099[12;12Hno link Good: 2106449   Bad: 3154021[K[13;20H1[13;29H133792[13;44H126679[14;27H143794[14;42H116679[15;25H9[15;37H8[15;58H40[16;24H923[16;37H922[16;60H7[18;54H6[18;67H6 [43d[11;20H4[11;30H89603[11;44H161260[12;28H24033[12;42H226832[13;12Hno link Good: 2152060   Bad: 3198806[K[14;28H62272[14;43H88595[15;24H41[15;36H40[15;58H39[16;25H57[16;38H56[16;60H8[18;53H40[18;66H40 [43d[11;12Hno link Good: 2216002   Bad: 3225254[K[12;12Hlink w/ 3 Good: 2148980   Bad: 3292278[13;28H77546[13;42H263713[14;28H88096[14;42H253164[15;25H3[15;37H2[15;59H8[16;25H90[16;38H89[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 2269087   Bad: 3262571[12;12Hno link Good: 2201333   Bad: 3330326[K[13;12Hlink w/ 2 Good: 2230202   Bad: 3301458[14;27H240898[14;43H90763[15;25H6[15;37H5[15;58H45[16;23H2023[16;36H2022[16;60H9[18;54H8[18;67H8 [43d[11;29H308204[11;44H313850[12;12Hlink w/ 4 Good: 2239337   Bad: 3382718[13;12Hno link Good: 2268643   Bad: 3353413[K[14;28H79477[14;42H342580[15;25H8[15;37H7[15;59H4[16;25H56[16;38H55[16;57H4.00[18;53H52[18;66H52 [43d[11;20H3[11;30H27328[11;45H85121[12;12Hno link Good: 2257015   Bad: 3455435[K[13;28H8696[13;42H425489[14;28H97971[14;42H414482[15;24H51[15;36H50[15;58H50[16;25H89[16;38H88[18;54H6[18;67H6 [43d[11;20H2[11;30H62804[11;44H440040[12;28H91279[12;42H511566[13;27H32173[13;43H81113[14;12Hlink w/ 3 Good: 2333012   Bad: 3469836[15;25H3[15;37H2[15;58H33[16;24H122[16;37H121[16;57H3.95[18;53H60[18;66H60 [43d[11;20H3[11;29H415916[11;45H77323[12;27H343611[12;43H49629[13;12Hlink w/ 2 Good: 2374359   Bad: 3518883[14;30H85801[14;44H507442[15;25H5[15;37H4[16;25H55[16;38H54[16;60H6[18;54H4[18;67H4 [43d[11;12Hno link Good: 2441302   Bad: 3542334[K[12;28H67650[12;42H615987[13;12Hno link Good: 2398961   Bad: 3584677[K[14;20H2[14;29H410583[14;45H73057[15;25H8[15;37H7[15;59H9[16;25H89[16;38H88[16;60H7[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 2460998   Bad: 3613033[12;28H86005[12;43H8802[13;27H417884[13;42H656149[14;20H1[14;30H29737[14;44H64429[15;24H60[15;37H9[15;59H8[16;24H222[16;37H221[18;53H72[18;66H72 [43d[11;20H3[11;29H514062[11;45H50370[12;12Hlink w/ 1 Good: 2438364   Bad: 3726070[13;28H70569[13;43H93866[14;12Hno link Good: 2482555   Bad: 3681881[K[15;25H2[15;36H61[15;59H7[16;25H55[16;38H54[16;60H8[18;54H6[18;67H6 [43d[11;12Hno link Good: 2559595   Bad: 3695227[K[12;30H83118[12;45H71705[13;27H515676[13;42H739148[14;12Hlink w/ 2 Good: 2527690   Bad: 3727135[15;25H5[15;37H4[15;58H43[16;25H88[16;38H87[16;60H9[18;53H80[18;66H80 [43d[11;28H78782[11;42H766438[12;12Hno link Good: 2500737   Bad: 3844484[K[13;12Hlink w/ 2 Good: 2534048   Bad: 3811174[14;12Hno link Good: 2546205   Bad: 3799018[K[15;25H7[15;37H6[16;24H321[16;37H320[18;54H4[18;67H4 [43d[11;27H612240[11;42H823379[12;28H32996[12;42H90262[13;20H4[13;30H66875[13;45H68746[14;12Hlink w/ 2 Good: 2579207   Bad: 3856415[15;24H70[15;37H9[15;59H8[16;25H54[16;38H53[16;57H4.00[18;54H8[18;67H8 [43d[11;28H6540[11;43H60613[12;12Hlink w/ 3 Good: 2585332   Bad: 3940683[13;12Hno link Good: 2619591   Bad: 3906425[K[14;20H1[14;29H631998[14;45H94019[15;25H2[15;36H71[15;58H33[16;25H87[16;38H86[16;57H3.95[18;53H92[18;66H92 [43d[11;27H701747[11;42H914661[12;12Hno link Good: 2620444   Bad: 3995965[K[13;28H55303[13;43H61108[14;20H3[14;30H67820[14;44H948592[15;25H4[15;37H3[16;24H421[16;37H420[16;60H6[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 2720879   Bad: 3985928[12;28H38108[12;41H4068700[13;12Hlink w/ 2 Good: 2673724   Bad: 4033085[14;20H2[14;30H86175[14;43H4020635[15;25H7[15;37H6[15;59H8[16;25H54[16;38H53[16;60H7[18;52H300[18;65H300 [43d[11;12Hno link Good: 2768061   Bad: 4029142[K[12;12Hlink w/ 1 Good: 2684442   Bad: 4112762[13;12Hno link Good: 2720395   Bad: 4076811[K[14;12Hno link Good: 2733087   Bad: 4064120[K[15;25H9[15;37H8[16;25H87[16;38H86[18;54H4[18;67H4 [43d[11;27H812106[11;43H7549[12;12Hno link Good: 2727485   Bad: 4160115[K[13;12Hlink w/ 1 Good: 2763858   Bad: 4123743[14;12Hlink w/ 2 Good: 2776611   Bad: 4110991[15;24H81[15;36H80[15;59H7[16;24H520[16;37H519[16;60H8[18;54H8[18;67H8 [43d[11;28H65152[11;42H112845[12;12Hlink w/ 1 Good: 2779831   Bad: 4198167[13;20H2[13;29H816549[13;45H61450[14;20H3[14;29H829320[14;45H48680[15;25H4[15;37H3[15;58H42[16;25H53[16;38H52[18;53H12[18;66H12 [43d[11;27H910475[11;43H57912[12;12Hno link Good: 2824193   Bad: 4244196[K[13;12Hno link Good: 2861379   Bad: 4207011[K[14;12Hno link Good: 2874138   Bad: 4194253[K[15;25H6[15;37H5[16;25H86[16;38H85[16;60H9[18;54H6[18;67H6 [43d[11;28H29671[11;42H229114[12;28H41867[12;42H316919[13;28H7961[13;43H79168[14;28H9269[14;42H266090[15;25H9[15;37H8[15;59H7[16;24H619[16;37H618[18;53H20[18;66H20 [43d[11;12Hlink w/ 2 Good: 2963275   Bad: 4285910[12;12Hlink w/ 4 Good: 2874578   Bad: 4374608[13;27H912641[13;42H336546[14;27H926034[14;42H323154[15;24H91[15;36H90[15;59H6[16;25H53[16;38H52[16;57H4.00[18;54H4[18;67H4 [43d[11;12Hno link Good: 3016412   Bad: 4323166[K[12;20H3[12;29H926934[12;44H412645[13;12Hlink w/ 1 Good: 2965372   Bad: 4374208[14;28H78751[14;43H60831[15;25H3[15;37H2[15;58H33[16;25H86[16;38H85[16;57H3.96[18;54H8[18;67H8 [43d[11;28H5246[11;43H77513[12;12Hno link Good: 2961941   Bad: 4468035[K[13;12Hno link Good: 3000920   Bad: 4429057[K[14;26H3014300[14;42H415678[15;25H6[15;37H5[15;59H8[16;24H719[16;37H718[16;60H7[18;53H32[18;66H32 [43d[11;28H71644[11;42H448729[12;28H79563[12;42H540811[13;12Hlink w/ 2 Good: 3019211   Bad: 4501164[14;28H32849[14;43H87527[15;25H8[15;37H7[15;59H7[16;25H52[16;38H51[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 3119034   Bad: 4491732[12;12Hlink w/ 3 Good: 3026102   Bad: 4584666[13;20H1[13;30H6625[13;45H44518[14;28H79897[14;42H530873[15;23H200[15;37H9[16;25H85[16;38H84[16;60H8[18;53H40[18;66H40 [43d[11;12Hno link Good: 3171019   Bad: 4530145[K[12;12Hno link Good: 3077162   Bad: 4624003[K[13;12Hno link Good: 3117698   Bad: 4583468[K[14;12Hlink w/ 3 Good: 3131423   Bad: 4569745[15;25H3[15;35H202[15;58H42[16;24H818[16;37H817[18;54H4[18;67H4 [43d[11;28H90173[11;42H601388[12;12Hlink w/ 4 Good: 3094766   Bad: 4696796[13;28H3598[13;42H655575[14;12Hno link Good: 3149884   Bad: 4641680[K[15;25H5[15;37H4[15;59H1[16;25H51[16;38H50[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 3217245   Bad: 4664711[12;12Hno link Good: 3120653   Bad: 4761304[K[13;28H62489[13;42H719469[14;12Hlink w/ 2 Good: 3176543   Bad: 4705416[15;25H8[15;37H7[15;59H6[16;25H85[16;38H84[16;60H9[18;53H52[18;66H52 [43d[11;20H2[11;30H70346[11;44H702005[12;12Hlink w/ 3 Good: 3172961   Bad: 4799391[13;27H215195[13;43H57158[14;12Hno link Good: 3229297   Bad: 4743057[K[15;24H10[15;37H9[15;59H5[16;24H918[16;37H917[16;57H4.00[18;54H6[18;67H6 [43d[11;29H308587[11;45H54161[12;12Hno link Good: 3210029   Bad: 4852720[K[13;28H52750[13;42H810000[14;28H67074[14;43H9567[15;25H2[15;36H11[15;59H4[16;25H51[16;38H50[18;53H60[18;66H60 [43d[11;12Hno link Good: 3327665   Bad: 4825480[K[12;12Hlink w/ 1 Good: 3227749   Bad: 4925397[13;28H71022[13;43H82125[14;28H85570[14;42H867578[15;25H5[15;37H4[15;58H38[16;25H84[16;38H83[16;57H3.96[18;54H4[18;67H4 [43d[11;28H64110[11;43H79432[12;20H4[12;30H6288[12;45H80654[13;12Hlink w/ 2 Good: 3306731   Bad: 4936813[14;27H321503[14;42H922042[15;25H7[15;37H6[15;59H7[16;23H3017[16;36H3016[16;60H7[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 3417219   Bad: 4916718[12;20H3[12;29H315192[12;43H5018747[13;12Hno link Good: 3359369   Bad: 4974571[K[14;12Hlink w/ 3 Good: 3374266   Bad: 4959675[15;25H9[15;37H8[15;59H6[16;25H50[16;38H49[18;53H72[18;66H72 [43d[11;12Hno link Good: 3441737   Bad: 4982594[K[12;30H38324[12;45H86008[13;28H83094[13;41H5041239[14;12Hno link Good: 3398074   Bad: 5026260[K[15;24H22[15;36H21[15;58H41[16;25H83[16;38H82[16;60H8[18;54H6[18;67H6 [43d[11;12Hlink w/ 2 Good: 3462343   Bad: 5052385[12;20H1[12;30H57595[12;44H157135[13;12Hlink w/ 2 Good: 3402995   Bad: 5111736[14;27H418118[14;43H96614[15;25H4[15;37H3[15;59H0[16;24H117[16;37H116[18;53H80[18;66H80 [43d[11;20H4[11;29H515397[11;45H89727[12;29H409938[12;45H95188[13;30H5561[13;45H49512[14;12Hlink w/ 3 Good: 3470926   Bad: 5134202[15;25H7[15;37H6[15;59H5[16;25H50[16;38H49[16;60H9[18;54H4[18;67H4 [43d[11;12Hno link Good: 3560188   Bad: 5135331[K[12;12Hno link Good: 3453708   Bad: 5241812[K[13;20H1[13;30H99803[13;45H95719[14;12Hno link Good: 3515201   Bad: 5180322[K[15;25H9[15;37H8[15;59H4[16;25H83[16;38H82[18;54H8[18;67H8 [43d[11;28H79327[11;42H206588[12;28H71327[12;42H314590[13;12Hno link Good: 3518149   Bad: 5267769[K[14;28H33700[14;42H252219[15;24H31[15;36H30[15;59H3[16;24H216[16;37H215[16;57H4.00[18;53H92[18;66H92 [43d[11;27H613670[11;43H62642[12;27H504626[12;43H71688[13;28H51777[13;42H324538[14;12Hlink w/ 2 Good: 3567564   Bad: 5308752[15;25H4[15;37H3[15;59H8[16;25H49[16;38H48[18;54H6[18;67H6 [43d[11;12Hlink w/ 3 Good: 3666805   Bad: 5299903[12;28H56978[12;42H409731[13;27H604451[13;43H62259[14;20H1[14;29H620362[14;45H46349[15;25H6[15;37H5[15;58H37[16;25H82[16;38H81[16;57H3.97[18;52H400[18;65H400 [43d[11;20H2[11;29H703106[11;44H353995[12;12Hlink w/ 4 Good: 3592150   Bad: 5464952[13;28H40190[13;42H416913[14;12Hno link Good: 3656251   Bad: 5400853[K[15;25H9[15;37H8[15;58H41[16;24H315[16;37H314[18;54H4[18;67H4 [43d[11;12Hno link Good: 3722087   Bad: 5425415[K[12;12Hno link Good: 3609847   Bad: 5537656[K[13;28H58435[13;43H89069[14;28H74714[14;43H72792[15;24H41[15;36H40[15;59H0[16;25H49[16;38H48[16;60H8[18;54H8[18;67H8 [43d[11;12Hlink w/ 2 Good: 3770029   Bad: 5467868[12;12Hlink w/ 3 Good: 3657042   Bad: 5580856[13;27H705989[13;42H531911[14;12Hlink w/ 2 Good: 3722407   Bad: 5515494[15;25H3[15;37H2[16;25H82[16;38H81[18;53H12[18;66H12 [43d[11;12Hno link Good: 3814045   Bad: 5514249[K[12;20H1[12;29H700110[12;44H628185[13;12Hlink w/ 4 Good: 3749469   Bad: 5578827[14;12Hno link Good: 3766038   Bad: 5562259[K[15;25H6[15;37H5[15;59H4[16;24H415[16;37H414[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 3867124   Bad: 5551567[12;12Hno link Good: 3752464   Bad: 5666228[K[13;20H1[13;29H802136[13;44H61655[14;27H81885[14;43H99837[15;25H8[15;37H7[15;59H3[16;25H48[16;38H47[16;60H9[18;53H20[18;66H20 [43d[11;12Hno link Good: 3911610   Bad: 5597478[K[12;28H95977[12;42H713113[13;12Hno link Good: 3845993   Bad: 5663098[K[14;28H6284[14;42H646244[15;24H50[15;37H9[16;25H81[16;38H80[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 3930728   Bad: 5668754[12;27H813610[12;43H8587[13;28H64311[13;42H735173[14;28H81297[14;42H718189[15;25H3[15;36H52[15;59H7[16;24H514[16;37H513[16;57H4.00[18;54H8[18;67H8 [43d[11;20H2[11;30H65287[11;44H724590[12;12Hlink w/ 3 Good: 3847068   Bad: 5842811[13;12Hlink w/ 4 Good: 3898317   Bad: 5791563[14;12Hlink w/ 1 Good: 3915483   Bad: 5774398[15;25H5[15;37H4[15;59H6[16;25H47[16;38H46[18;53H32[18;66H32 [43d[11;28H4018346[11;45H61928[12;20H1[12;30H99387[12;45H80888[13;12Hno link Good: 3950983   Bad: 5829293[K[14;30H68280[14;44H811997[15;25H8[15;37H7[15;59H0[16;25H81[16;38H80[16;57H3.97[18;54H6[18;67H6 [43d[11;20H4[11;30H53647[11;44H817021[12;12Hno link Good: 3933384   Bad: 5937285[K[13;28H85624[13;43H85046[14;12Hno link Good: 4003063   Bad: 5867608[K[15;24H60[15;37H9[16;24H614[16;37H613[18;53H40[18;66H40 [43d[11;12Hno link Good: 4072713   Bad: 5888353[K[12;28H51065[12;41H6010002[13;26H4003930[13;42H957138[14;12Hlink w/ 2 Good: 4021602   Bad: 5939468[15;25H2[15;36H61[15;58H39[16;25H47[16;38H46[16;60H8[18;54H4[18;67H4 [43d[11;12Hlink w/ 3 Good: 4121007   Bad: 5930456[12;12Hlink w/ 4 Good: 3998603   Bad: 6052861[13;12Hlink w/ 4 Good: 4051770   Bad: 5999695[14;20H3[14;30H69649[14;45H81817[15;25H5[15;37H4[15;58H43[16;25H80[16;38H79[18;54H8[18;67H8 [43d[11;12Hno link Good: 4171971   Bad: 5969888[K[12;12Hno link Good: 4048742   Bad: 6093118[K[13;29H102334[13;43H6039528[14;12Hno link Good: 4120260   Bad: 6021603[K[15;25H7[15;37H6[15;59H2[16;24H713[16;37H712[16;60H9[18;53H52[18;66H52 [43d[11;28H91064[11;41H6041193[12;12Hlink w/ 4 Good: 4066286   Bad: 6165972[13;12Hno link Good: 4120632   Bad: 6111627[K[14;28H3862[14;43H93640[15;25H9[15;37H8[16;25H46[16;38H45[18;54H6[18;67H6 [43d[11;12Hlink w/ 3 Good: 4219178   Bad: 6103475[12;20H3[12;30H93169[12;44H229485[13;28H47895[13;43H74760[14;28H6627[14;42H156386[15;24H72[15;36H71[15;59H6[16;25H79[16;38H78[18;53H60[18;66H60 [43d[11;30H72287[11;45H40763[12;20H4[12;29H145484[12;45H67567[13;12Hlink w/ 4 Good: 4200554   Bad: 6212499[14;12Hlink w/ 2 Good: 4219090   Bad: 6193964[15;25H4[15;37H3[15;59H5[16;24H813[16;37H812[16;57H4.00[18;54H4[18;67H4 [43d[11;12Hno link Good: 4309545   Bad: 6193901[K[12;20H3[12;30H81597[12;44H321850[13;12Hno link Good: 4237228   Bad: 6266220[K[14;20H3[14;30H55854[14;44H247595[15;25H7[15;37H6[15;59H9[16;25H46[16;38H45[18;54H8[18;67H8 [43d[11;28H2873[11;42H265104[12;12Hno link Good: 4199260   Bad: 6394580[K[13;28H55542[13;42H338299[14;20H1[14;30H74222[14;44H319621[15;25H9[15;37H8[15;58H3[16;25H79[16;38H78[16;57H3.97[18;53H72[18;66H72 [43d[11;12Hlink w/ 2 Good: 4365987   Bad: 6318251[12;12Hlink w/ 1 Good: 4235408   Bad: 6448831[13;12Hlink w/ 4 Good: 4292224   Bad: 6392016[14;20H2[14;29H311147[14;45H73094[15;24H81[15;36H80[16;24H912[16;37H911[16;60H8[18;54H6[18;67H6 [43d[11;12Hno link Good: 4419026   Bad: 6355607[K[12;12Hno link Good: 4287766   Bad: 6486868[K[13;20H2[13;29H344932[13;44H429704[14;20H1[14;30H6393[14;44H410700[15;25H4[15;37H3[15;58H42[16;25H45[16;38H44[18;53H80[18;66H80 [43d[11;12Hlink w/ 2 Good: 4442736   Bad: 6422294[12;12Hlink w/ 3 Good: 4309968   Bad: 6555063[13;12Hno link Good: 4367786   Bad: 6497247[K[14;12Hno link Good: 4386919   Bad: 6478115[K[15;25H6[15;37H5[16;25H78[16;38H77[18;54H4[18;67H4 [43d[11;12Hno link Good: 4464213   Bad: 6491209[K[12;12Hno link Good: 4329992   Bad: 6625431[K[13;12Hlink w/ 4 Good: 4388468   Bad: 6566957[14;12Hlink w/ 2 Good: 4407908   Bad: 6547518[15;25H8[15;37H7[15;59H1[16;23H4011[16;36H4010[16;60H9[18;54H8[18;67H8 [43d[11;27H517305[11;42H528516[12;12Hlink w/ 4 Good: 4382298   Bad: 6663525[13;12Hno link Good: 4441135   Bad: 6604689[K[14;20H1[14;30H60736[14;45H85089[15;24H91[15;36H90[15;59H5[16;25H45[16;38H44[18;53H92[18;66H92 [43d[11;12Hlink w/ 4 Good: 4561251   Bad: 6574966[12;29H425172[12;44H711046[13;28H84487[13;43H51732[14;12Hno link Good: 4504211   Bad: 6632009[K[15;25H3[15;37H2[15;59H4[16;25H78[16;38H77[18;54H6[18;67H6 [43d[11;12Hno link Good: 4580382   Bad: 6646232[K[12;20H3[12;30H42808[12;45H83807[13;27H502800[13;42H723816[14;28H22700[14;42H703917[15;25H6[15;37H5[15;59H8[16;24H111[16;37H110[16;57H4.00[18;52H500[18;65H500 [43d[11;12Hlink w/ 4 Good: 4615500   Bad: 6701508[12;30H7689[12;44H840111[13;12Hlink w/ 2 Good: 4537339   Bad: 6779671[14;28H57518[14;43H59493[15;25H8[15;37H7[15;59H7[16;25H44[16;38H43[18;54H4[18;67H4 [43d[11;12Hno link Good: 4668621   Bad: 6738781[K[12;12Hno link Good: 4529240   Bad: 6878163[K[13;30H9002[13;44H817376[14;27H610289[14;43H97117[15;23H300[15;37H9[15;58H38[16;25H77[16;38H76[16;57H3.98[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 4704037   Bad: 6793765[12;12Hlink w/ 4 Good: 4563540   Bad: 6934264[13;12Hno link Good: 4624816   Bad: 6872989[K[14;28H45078[14;42H852728[15;25H3[15;35H302[15;58H42[16;24H210[16;37H209[18;53H12[18;66H12 [43d[11;12Hno link Good: 4723248   Bad: 6864946[K[12;12Hno link Good: 4581146   Bad: 7007050[K[13;28H43047[13;42H945150[14;12Hlink w/ 2 Good: 4663496   Bad: 6924702[15;25H5[15;37H4[15;59H1[16;25H44[16;38H43[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 4772136   Bad: 6906456[12;27H629232[12;43H49361[13;12Hlink w/ 2 Good: 4691487   Bad: 6987108[14;29H712159[14;45H66437[15;25H7[15;37H6[16;25H77[16;38H76[16;60H9[18;53H20[18;66H20 [43d[11;20H3[11;29H816152[11;45H52838[12;28H72244[12;43H96747[13;29H734950[13;43H7034042[14;12Hno link Good: 4755690   Bad: 7013303[K[15;24H10[15;37H9[15;59H4[16;24H310[16;37H309[18;54H4[18;67H4 [43d[11;12Hno link Good: 4869231   Bad: 6990154[K[12;12Hlink w/ 4 Good: 4724564   Bad: 7134823[13;20H1[13;30H87612[13;45H71776[14;27H808462[14;43H50927[15;25H2[15;36H11[16;25H43[16;38H42[18;54H8[18;67H8 [43d[11;27H912926[11;41H7036849[12;12Hno link Good: 4767104   Bad: 7182672[K[13;12Hno link Good: 4830621   Bad: 7119156[K[14;28H51648[14;43H98131[15;25H5[15;37H4[15;59H7[16;25H76[16;38H75[18;53H32[18;66H32 [43d[11;28H32067[11;42H10810[12;12Hlink w/ 4 Good: 4784829   Bad: 7255348[13;28H48900[13;43H91278[14;12Hlink w/ 1 Good: 4870225   Bad: 7169954[15;25H7[15;37H6[15;59H6[16;24H409[16;37H408[16;57H4.00[18;54H6[18;67H6 [43d[11;28H67662[11;43H62911[12;12Hno link Good: 4819220   Bad: 7311355[K[13;28H8374[13;42H246836[14;12Hno link Good: 4905244   Bad: 7225333[K[15;25H9[15;37H8[16;25H42[16;38H41[18;53H40[18;66H40 [43d[11;26H5020798[11;42H200167[12;28H71597[12;43H49369[13;12Hlink w/ 4 Good: 4936425   Bad: 7284543[14;12Hlink w/ 2 Good: 4958027   Bad: 7262941[15;24H22[15;36H21[15;59H1[16;25H76[16;38H75[16;57H3.98[18;54H4[18;67H4 [43d[11;28H55200[11;43H56168[12;27H904769[12;42H40659[13;12Hno link Good: 4970136   Bad: 7341234[K[14;12Hno link Good: 4991859   Bad: 7319512[K[15;25H4[15;37H3[16;24H509[16;37H508[18;54H8[18;67H8 [43d[11;28H74342[11;42H327419[12;28H2245[12;43H79303[13;28H88460[13;42H413303[14;26H5010437[14;43H91327[15;25H6[15;37H5[15;59H0[16;25H42[16;38H41[18;53H52[18;66H52 [43d[11;27H123486[11;43H68674[12;12Hlink w/ 4 Good: 4970894   Bad: 7521268[13;12Hlink w/ 2 Good: 5037252   Bad: 7454911[14;28H59319[14;42H432845[15;25H9[15;37H8[15;59H3[16;25H75[16;38H74[16;60H9[18;54H6[18;67H6 [43d[11;28H73629[11;42H408925[12;12Hno link Good: 5020120   Bad: 7562436[K[13;12Hno link Good: 5086888   Bad: 7495669[K[14;12Hlink w/ 1 Good: 5109046   Bad: 7473512[15;24H31[15;36H30[16;24H608[16;37H607[18;53H60[18;66H60 [43d[11;28H92737[11;43H8021[12;28H37748[12;42H63520[13;27H105169[13;42H567786[14;12Hno link Good: 5127555   Bad: 7545401[K[15;25H4[15;37H3[15;59H6[16;25H41[16;38H40[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 5221533   Bad: 7541816[12;12Hlink w/ 4 Good: 5065410   Bad: 7697940[13;28H33375[13;42H62997[14;12Hlink w/ 2 Good: 5155991   Bad: 7607361[15;25H6[15;37H5[16;25H74[16;38H73[18;54H8[18;67H8 [43d[11;12Hno link Good: 5274663   Bad: 7579078[K[12;12Hno link Good: 5117763   Bad: 7735979[K[13;28H86094[13;43H67649[14;20H3[14;29H20881[14;45H44934[15;25H8[15;37H7[15;59H5[16;24H708[16;37H707[16;57H4.00[18;53H72[18;66H72 [43d[11;12Hlink w/ 4 Good: 5311099   Bad: 7633042[12;28H52992[12;43H91150[13;12Hlink w/ 4 Good: 5221829   Bad: 7722315[14;12Hno link Good: 5244660   Bad: 7699485[K[15;24H41[15;36H40[15;59H8[16;25H41[16;38H40[18;54H6[18;67H6 [43d[11;12Hno link Good: 5330206   Bad: 7704329[K[12;28H7058[12;42H863954[13;12Hno link Good: 5240063   Bad: 7794474[K[14;28H63098[14;42H771440[15;25H3[15;37H2[15;59H0[16;25H74[16;38H73[16;57H3.98[18;53H80[18;66H80 [43d[44;1H[?1049l [?1l>Caught SIGINT. Exiting...
4572]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# ~netfpga/netfpga/projects/selftest/sw/selftest -cn
4573Found net device: nf2c0
4574CPCI Information
4575----------------
4576Version: 4 (rev 1)
4577
4578Device (Virtex) Information
4579---------------------------
4580Project directory: selftest
4581Project name: Selftest
4582Project description: NetFPGA selftest -- exercises all major subsystems of the board
4583
4584Device ID: 5
4585Version: 1.1.0
4586Built against CPCI version: 4 (rev 1)
4587
4588[?1049h[1;44r[m(B[4l[?7h[H[2J[0;7m(B    NetFPGA selftest v1.00 alpha                                                                                                                               [3;1H[m(BClock test: pass
4589Reg test: pass
4590MDIO test: pass
4591[6GPhy 1: rev 1   up, 1000Base-TX full
4592[6GPhy 2: rev 1   up, 1000Base-TX full
4593[6GPhy 3: rev 1   up, 1000Base-TX full
4594[6GPhy 4: rev 1   up, 1000Base-TX full
4595PHY test: fail
4596   Port 1: no link Good: 4243   Bad: 13088
4597   Port 2: no link Good: 0   Bad: 0
4598   Port 3: no link Good: 3229   Bad: 14106
4599   Port 4: link w/ 3 Good: 2766   Bad: 14570
4600DRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4601SRAM test: Iteration: 1   Good: 0   Bad: 0   B/W: nan Gbps
4602SATA Test Disabled
4603DMA test: Iteration(one pkt write, read, compare): 40   Good: 40   Bad: 0 [44d[0;7m(BQ[m(B Quit [A[11;26H26409   Bad: 81517[13;26H20490   Bad: 87439[14;12Hno link Good: 18031   Bad: 89899[K[15;23H3[15;33H2[15;51H10.74 Gbps[16;23H34   Good: 33   Bad: 0   B/W: 4.43 Gbps[18;52H8[18;63H8 [43d[11;26H67237[11;39H131056[12;35H2[13;26H6034[13;39H137956[14;12Hlink w/ 3 Good: 51095   Bad: 147202[15;23H6[15;33H5[15;51H8.95 Gbps[K[16;23H67[16;34H66[16;53H2.95
4604
4605[52G120   Good: 120   Bad: 0 [43d[11;12Hlink w/ 3 Good: 112340   Bad: 176342[13;26H105383   Bad: 183302[14;12Hno link Good: 96400   Bad: 192285[K[15;23H8[15;33H7[15;51H9.40[16;23H100   Good: 99   Bad: 0   B/W: 3.32 Gbps[18;53H6[18;65H6 [43d[11;12Hno link Good: 134439   Bad: 244640[K[13;12Hlink w/ 1 Good: 122576   Bad: 256506[14;12Hlink w/ 3 Good: 118856   Bad: 260227[15;23H10   Good: 9   Bad: 0   B/W: 9.66 Gbps[16;24H34[16;35H133   Bad: 0   B/W: 3.57 Gbps[18;52H20[18;64H20 [43d[11;27H61511[11;40H307963[12;35H4[13;12Hno link Good: 145323   Bad: 324153[K[14;29H34358[14;42H335119[15;24H3[15;34H12   Bad: 0   B/W: 10.74 Gbps[16;24H67[16;36H66[16;57H71[18;53H4[18;65H4 [43d[11;12Hlink w/ 4 Good: 206815   Bad: 353056[13;12Hlink w/ 1 Good: 190618   Bad: 369255[14;12Hno link Good: 179278   Bad: 380596[K[15;24H5[15;35H4[16;23H200[16;36H99[16;57H82[18;53H8[18;65H8 [43d[11;20H3[11;29H45590[11;42H404671[13;12Hno link Good: 227742   Bad: 422521[K[14;26H218735[14;40H431530[15;24H7[15;35H6[16;24H33[16;35H232[16;58H9[18;52H32[18;64H32 [43d[11;12Hno link Good: 267676   Bad: 472984[K[13;12Hlink w/ 1 Good: 244685   Bad: 495978[14;27H35198[14;40H505466[15;23H20[15;35H9[15;54H1.33[16;24H66[16;36H65[16;57H95[18;53H6[18;65H6 [43d[11;26H304015[11;40H527041[12;35H6[13;20H4[13;29H79234[13;42H551825[14;12Hlink w/ 3 Good: 262555   Bad: 568505[15;24H2[15;34H21[15;56H27[16;24H99[16;36H98[16;55H4.00[18;52H40[18;64H40 [43d[11;12Hlink w/ 3 Good: 349323   Bad: 572131[13;12Hno link Good: 324530   Bad: 596926[K[14;28H307859[14;42H613599[15;24H5[15;35H4[15;56H71[16;23H332[16;35H331[16;58H4[18;53H4[18;65H4 [43d[11;12Hno link Good: 375703   Bad: 636144[K[13;12Hlink w/ 4 Good: 347063   Bad: 664787[14;12Hno link Good: 335917   Bad: 675934[K[15;24H7[15;35H6[15;54H0.74[16;24H66[16;36H65[16;55H3.77[18;53H8[18;65H8 [43d[11;27H9818[11;40H704062[12;35H8[13;12Hno link Good: 364460   Bad: 737787[K[14;27H51720[14;40H750528[15;24H9[15;35H8[16;24H99[16;36H98[16;57H82[18;52H52[18;64H52 [43d[11;26H443508[11;41H49136[13;12Hlink w/ 1 Good: 409768   Bad: 782879[14;27H9098[14;40H80166[15;23H32[15;34H31[15;54H1.10[16;23H432[16;35H431[16;58H6[18;53H6[18;65H6 [43d[11;27H83706[11;41H99333[13;12Hno link Good: 448899   Bad: 834143[K[14;26H436289[14;41H46753[15;24H4[15;35H3[15;56H07[16;24H65[16;36H64[16;58H9[18;52H60[18;64H60 [43d[11;26H505771[11;40H867664[13;27H65893[13;40H907545[14;12Hlink w/ 3 Good: 452439   Bad: 921000[15;24H6[15;35H5[15;57H5[16;24H98[16;36H97[16;57H92[18;53H4[18;65H4 [43d[11;27H37230[11;40H926601[12;35H10[13;27H94047[13;41H69786[14;12Hno link Good: 483362   Bad: 980472[K[15;24H9[15;35H8[15;56H33[16;23H531[16;35H530[16;58H5[18;53H8[18;65H8 [43d[11;12Hlink w/ 3 Good: 559278   Bad: 994949[13;26H511055[13;40H1043175[14;12Hlink w/ 1 Good: 499112   Bad: 1055119[15;23H41[15;34H40[15;57H0[16;24H64[16;36H63[16;58H8[18;52H72[18;64H72 [43d[11;29H95854[11;42H1048771[12;36H2[13;12Hlink w/ 1 Good: 546040   Bad: 1098587[14;20H3[28G526723[14;43H117905[15;24H4[15;35H3[15;56H54[16;24H98[16;36H97[16;55H4.01[18;53H6[18;65H6 [43d[11;28H6411[11;44H93866[13;29H91334[13;43H143688[14;12Hno link Good: 572029   Bad: 1162994[K[15;24H6[15;35H5[15;57H0[16;23H631[16;35H630[16;58H3[18;52H80[18;64H80 [43d[11;12Hno link Good: 667268   Bad: 1158146[K[13;20H4[28G613931[13;43H211485[14;27H9977[14;41H225638[15;24H8[15;35H7[15;54H0.97[16;24H64[16;36H63[16;55H3.87[18;53H4[18;65H4 [43d[11;27H89869[11;41H225943[12;36H4[13;20H1[13;29H31606[13;44H84209[14;26H61550[14;41H300306[15;23H51[15;34H50[15;54H1.18[16;24H97[16;36H96[16;58H9[18;53H8[18;65H8 [43d[11;12Hlink w/ 4 Good: 735171   Bad: 1271040[13;12Hno link Good: 676899   Bad: 1329314[K[14;27H5492[14;42H51285[15;24H3[15;35H2[15;57H7[16;23H730[16;35H729[16;57H91[18;52H92[18;64H92 [43d[11;12Hno link Good: 775181   Bad: 1321422[K[13;12Hlink w/ 1 Good: 715758   Bad: 1380848[14;12Hlink w/ 3 Good: 700185   Bad: 1396422[15;24H5[15;35H4[15;57H5[16;24H63[16;36H62[16;58H3[18;53H6[18;65H6 [43d[11;27H97130[11;42H89869[13;12Hno link Good: 732666   Bad: 1454335[K[14;12Hno link Good: 716195   Bad: 1470807[K[15;24H8[15;35H7[15;56H33[16;24H96[16;36H95[16;58H5[18;52H1000   Good: 1000   Bad: 0 [43d[11;26H825377[11;41H452013[12;36H6[13;12Hlink w/ 4 Good: 757511   Bad: 1519881[14;27H37890[14;41H539503[15;23H60[15;35H9[15;57H1[16;23H830[16;35H829[16;58H7
4606
4607[54G4[18;67H4 [43d[11;12Hlink w/ 3 Good: 870693   Bad: 1497099[13;12Hno link Good: 802815   Bad: 1564979[K[14;27H8321[14;42H84585[15;24H3[15;34H62[15;56H48[16;24H63[16;36H62[16;58H9
4608
4609[54G8[18;67H8 [43d[11;20H4[28G901280[11;43H556908[13;27H29949[13;41H628242[14;26H81656[14;41H641632[15;24H5[15;35H4[15;57H5[16;24H96[16;36H95[16;55H4.00[18;53H12[18;66H12 [43d[11;12Hno link Good: 923358   Bad: 1625220[K[13;27H47017[13;41H701563[14;27H32609[14;41H71597[15;24H7[15;35H6[15;57H3[16;23H929[16;35H928[16;58H2
4610
4611[54G6[18;67H6 [43d[11;12Hlink w/ 3 Good: 964837   Bad: 1674142[12;36H8[13;12Hlink w/ 1 Good: 887451   Bad: 1751530[14;27H66285[14;42H72697[15;23H70[15;35H9[15;56H2[16;24H62[16;36H61[16;55H3.91[18;53H20[18;66H20 [43d[11;12Hno link Good: 1009316   Bad: 1720059[K[13;12Hno link Good: 931757   Bad: 1797620[K[14;26H911604[14;41H817773[15;24H2[15;34H71[15;57H1[16;24H95[16;36H94[16;58H2
4612
4613[54G4[18;67H4 [43d[11;28H31317[11;43H88456[13;27H48309[13;41H871466[14;27H32[14;42H871[15;24H4[15;35H3[15;57H0[16;23H1028   Good: 1027   Bad: 0   B/W: 3.94 Gbps[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 1058841   Bad: 1851327[12;35H20[13;12Hlink w/ 1 Good: 971899   Bad: 1938271[14;12Hlink w/ 3 Good: 948658   Bad: 1961514[15;24H7[15;35H6[15;56H33[16;25H62[16;38H61[16;60H6[18;53H32[18;66H32 [43d[11;12Hno link Good: 1104153   Bad: 1896410[K[13;12Hno link Good: 1017205   Bad: 1983360[K[14;12Hno link Good: 993979   Bad: 2006587[K[15;24H9[15;35H8[15;57H2[16;25H95[16;38H94[16;60H7[18;54H6[18;67H6 [43d[11;28H42236[11;42H948723[13;28H5365[13;41H2037306[14;12Hlink w/ 1 Good: 1033060   Bad: 2057903[15;23H82[15;34H81[15;56H44[16;24H128[16;37H127[16;60H8[18;53H40[18;66H40 [43d[11;28H64295[11;41H2017059[13;28H71408[13;42H109948[14;12Hno link Good: 1049237   Bad: 2132121[K[15;24H4[15;35H3[15;57H3[16;25H61[16;38H60[16;60H9[18;54H4[18;67H4 [43d[11;27H201228[11;43H70521[12;36H2[13;27H106472[13;43H65279[14;28H77601[14;43H9415[15;24H6[15;35H5[15;57H1[16;25H94[16;38H93[16;57H4.00[18;54H8[18;67H8 [43d[11;28H46534[11;42H115612[13;28H51781[13;42H210368[14;12Hlink w/ 3 Good: 1122907   Bad: 2239243[15;24H9[15;35H8[15;56H25[16;24H227[16;37H226[16;57H3.92[18;53H52[18;66H52 [43d[11;12Hlink w/ 3 Good: 1272340   Bad: 2180203[13;28H73540[13;43H79005[14;12Hno link Good: 1149949   Bad: 2302598[K[15;23H91[15;34H90[15;57H4[16;25H60[16;38H59[16;60H3[18;54H6[18;67H6 [43d[11;30H95515[11;44H247428[12;36H4[13;28H91629[13;42H351316[14;12Hlink w/ 1 Good: 1165544   Bad: 2377401[15;24H3[15;35H2[15;57H3[16;25H94[16;38H93[16;60H4[18;53H60[18;66H60 [43d[11;12Hno link Good: 1340845   Bad: 2292492[K[13;27H236934[13;43H9640[14;20H3[14;29H205679[14;44H427662[15;24H6[15;35H5[15;56H3[16;24H327[16;37H326[16;60H5[18;54H4[18;67H4 [43d[11;28H80460[11;42H34327[13;28H75181[13;42H448553[14;12Hno link Good: 1250383   Bad: 2473352[K[15;24H8[15;35H7[15;57H2[16;25H60[16;38H59[16;60H7[18;54H8[18;67H8 [43d[11;27H402507[11;42H411624[13;12Hlink w/ 1 Good: 1292609   Bad: 2521525[14;28H65704[14;42H548431[15;23H101   Good: 100   Bad: 0   B/W: 11.42 Gbps[16;25H93[16;38H92[16;60H8[18;53H72[18;66H72 [43d[11;28H33954[11;43H70570[12;36H6[13;29H321125[13;45H83402[14;28H96401[14;42H608127[15;25H3[15;37H2[15;59H1[16;24H426[16;37H425[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 1456008   Bad: 2538913[13;12Hno link Good: 1338386   Bad: 2656537[K[14;27H312099[14;43H82825[15;25H5[15;37H4[15;58H39[16;25H59[16;38H58[16;60H9[18;53H80[18;66H80 [43d[11;20H3[11;30H93183[11;45H92134[12;36H8[13;28H73740[13;42H711580[14;12Hlink w/ 3 Good: 1340718   Bad: 2744603[15;25H8[15;37H7[15;58H4[16;25H92[16;38H91[16;57H4.00[18;54H4[18;67H4 [43d[11;20H4[11;29H538480[11;44H637233[13;27H419044[13;43H56671[14;12Hno link Good: 1386014   Bad: 2789703[K[15;24H10[15;37H9[15;58H25[16;24H526[16;37H525[16;57H3.94[18;54H8[18;67H8 [43d[11;12Hno link Good: 1564036   Bad: 2702073[K[13;28H40825[13;42H825286[14;27H413225[14;42H852887[15;25H2[15;36H11[15;59H4[16;25H59[16;38H58[16;60H5[18;53H92[18;66H92 [43d[11;12Hlink w/ 4 Good: 1587372   Bad: 2769136[12;35H30[13;28H59292[13;43H97218[14;28H29419[14;42H927091[15;25H5[15;37H4[15;58H33[16;25H92[16;38H91[18;54H6[18;67H6 [43d[11;12Hno link Good: 1632702   Bad: 2814200[K[13;27H504597[13;42H942307[14;28H70143[14;43H76762[15;25H7[15;37H6[15;59H2[16;24H625[16;37H624[16;60H6[18;52H200[18;65H200 [43d[11;12Hlink w/ 3 Good: 1672085   Bad: 2865212[13;28H42680[13;43H94619[14;12Hlink w/ 1 Good: 1514597   Bad: 3022703[15;24H20[15;37H9[15;58H41[16;25H58[16;38H57[16;60H7[18;54H4[18;67H4 [43d[11;12Hno link Good: 1694101   Bad: 2933594[K[13;28H59275[13;41H3068422[14;12Hno link Good: 1530489   Bad: 3097209[K[15;25H2[15;36H21[15;59H0[16;25H91[16;38H90[16;60H8[18;54H8[18;67H8 [43d[11;27H722427[11;43H95662[12;36H2[13;12Hlink w/ 1 Good: 1583836   Bad: 3134256[14;12Hlink w/ 3 Good: 1553103   Bad: 3164990[15;25H4[15;37H3[15;58H39[16;24H724[16;37H723[16;60H9[18;53H12[18;66H12 [43d[11;28H6773[11;41H3040749[13;29H629137[13;45H79352[14;12Hno link Good: 1598415   Bad: 3210074[K[15;25H7[15;37H6[15;58H47[16;25H58[16;38H57[16;57H4.00[18;54H6[18;67H6 [43d[11;28H97805[11;42H101077[13;12Hno link Good: 1655910   Bad: 3242975[K[14;27H630826[14;43H68060[15;25H9[15;37H8[15;59H5[16;25H91[16;38H90[18;53H20[18;66H20 [43d[11;27H819843[11;43H69435[13;28H73186[13;42H316094[14;28H47110[14;42H342171[15;24H32[15;36H31[15;58H34[16;24H824[16;37H823[16;57H3.95[18;54H4[18;67H4 [43d[11;28H61872[11;42H217802[12;36H4[13;27H714512[13;43H6516[14;12Hlink w/ 3 Good: 1681667   Bad: 3398011[15;25H4[15;37H3[15;59H3[16;25H57[16;38H56[18;54H8[18;67H8 [43d[11;27H905788[11;43H64286[13;28H58097[13;42H411979[14;29H726982[14;44H443094[15;25H6[15;37H5[15;59H2[16;25H90[16;38H89[16;60H6[18;53H32[18;66H32 [43d[11;28H27926[11;42H332535[13;12Hlink w/ 1 Good: 1774609   Bad: 3485855[14;12Hno link Good: 1747950   Bad: 3512515[K[15;25H9[15;37H8[15;58H40[16;24H923[16;37H922[16;60H7[18;54H6[18;67H6 [43d[11;28H56134[11;43H94731[12;36H6[13;30H99183[13;44H55168[14;28H64567[14;43H86302[15;24H41[15;36H40[15;58H39[16;25H57[16;38H56[16;60H8[18;53H40[18;66H40 [43d[11;26H2001436[11;42H439823[13;29H844495[13;45H96767[14;12Hlink w/ 3 Good: 1809866   Bad: 3631397[15;25H3[15;37H2[15;59H8[16;25H90[16;38H89[18;54H4[18;67H4 [43d[11;28H38853[11;43H92801[13;12Hno link Good: 1880229   Bad: 3651428[K[14;12Hno link Good: 1848024   Bad: 3683634[K[15;25H6[15;37H5[15;58H45[16;23H2023[16;36H2022[16;60H9[18;54H8[18;67H8 [43d[11;28H60938[11;42H561112[13;12Hlink w/ 1 Good: 1897459   Bad: 3724594[14;28H63123[14;42H758931[15;25H8[15;37H7[15;59H4[16;25H56[16;38H55[16;57H4.00[18;53H52[18;66H52 [43d[11;28H98511[11;42H613936[12;36H8[13;12Hno link Good: 1933466   Bad: 3778984[K[14;28H92061[14;42H820390[15;24H51[15;36H50[15;58H50[16;25H89[16;38H88[18;54H6[18;67H6 [43d[11;27H143813[11;43H59030[13;28H78779[13;42H824066[14;27H937368[14;43H65478[15;25H3[15;37H2[15;58H33[16;24H122[16;37H121[16;57H3.95[18;53H60[18;66H60 [43d[11;28H68892[11;42H724346[13;28H9951[13;43H93722[14;12Hlink w/ 3 Good: 1963760   Bad: 3929482[15;25H5[15;37H4[16;25H55[16;38H54[16;60H6[18;54H4[18;67H4 [43d[11;28H92613[11;43H91023[12;35H40[13;12Hlink w/ 1 Good: 2018664   Bad: 3964975[14;12Hno link Good: 1979878   Bad: 4003761[K[15;25H8[15;37H7[15;59H9[16;25H89[16;38H88[16;60H7[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 2237933   Bad: 3836101[13;12Hno link Good: 2063973   Bad: 4010063[K[14;26H2020779[14;43H53258[15;24H60[15;37H9[15;59H8[16;24H222[16;37H221[18;53H72[18;66H72 [43d[11;12Hno link Good: 2276945   Bad: 3887478[K[13;12Hlink w/ 1 Good: 2101456   Bad: 4062970[14;28H64736[14;43H99691[15;25H2[15;36H61[15;59H7[16;25H55[16;38H54[16;60H8[18;54H6[18;67H6 [43d[11;28H99101[11;42H955721[13;12Hno link Good: 2118513   Bad: 4136312[K[14;28H80921[14;42H173905[15;25H5[15;37H4[15;58H43[16;25H88[16;38H87[16;60H9[18;53H80[18;66H80 [43d[11;27H331163[11;41H4014058[12;36H2[13;28H4750[13;43H97720[14;27H111285[14;42H233939[15;25H7[15;37H6[16;24H321[16;37H320[18;54H4[18;67H4 [43d[11;28H53185[11;43H82429[13;28H64572[13;42H271045[14;12Hlink w/ 1 Good: 2127354   Bad: 4308264[15;24H70[15;37H9[15;59H8[16;25H54[16;38H53[16;57H4.00[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 2390898   Bad: 4135112[12;36H4[13;12Hlink w/ 1 Good: 2201046   Bad: 4324966[14;20H3[14;30H56715[14;45H69298[15;25H2[15;36H71[16;25H87[16;38H86[18;53H92[18;66H92 [43d[11;29H436206[11;45H80201[13;12Hno link Good: 2246334   Bad: 4370075[K[14;12Hno link Good: 2202024   Bad: 4414387[K[15;25H4[15;37H3[15;58H33[16;24H421[16;37H420[16;57H3.96[18;54H6[18;67H6 [43d[11;12Hno link Good: 2461087   Bad: 4245718[K[13;28H66293[13;42H440514[14;28H28286[14;43H78522[15;25H7[15;37H6[15;59H8[16;25H54[16;38H53[16;60H7[18;52H300[18;65H300 [43d[11;28H85124[11;42H312077[12;36H6[13;12Hlink w/ 1 Good: 2285732   Bad: 4511472[14;12Hlink w/ 1 Good: 2243550   Bad: 4553654[15;25H9[15;37H8[16;25H87[16;38H86[18;54H4[18;67H4 [43d[11;12Hlink w/ 3 Good: 2530431   Bad: 4357168[13;12Hno link Good: 2331020   Bad: 4556581[K[14;20H3[14;30H84375[14;44H603228[15;24H81[15;36H80[15;59H7[16;24H520[16;37H519[16;60H8[18;54H8[18;67H8 [43d[11;12Hno link Good: 2569269   Bad: 4408719[K[13;28H68169[13;42H609822[14;12Hno link Good: 2327948   Bad: 4650044[K[15;25H4[15;37H3[15;58H42[16;25H53[16;38H52[18;53H12[18;66H12 [43d[11;28H91334[11;43H77054[13;28H85015[13;43H83376[14;28H44102[14;42H724290[15;25H6[15;37H5[16;25H86[16;38H85[16;60H9[18;54H6[18;67H6 [43d[11;27H621531[11;42H5372[12;36H8[13;12Hlink w/ 4 Good: 2411921   Bad: 4746867[14;12Hlink w/ 3 Good: 2367548   Bad: 4791241[15;25H9[15;37H8[15;59H7[16;24H619[16;37H618[18;53H20[18;66H20 [43d[11;28H66839[11;43H82340[13;20H1[13;30H57224[13;45H9195[14;12Hno link Good: 2412876   Bad: 4836306[K[15;24H91[15;36H90[15;59H6[16;25H53[16;38H52[16;57H4.00[18;54H4[18;67H4 [43d[11;28H96270[11;42H643307[13;30H83215[13;44H856365[14;28H44493[14;43H95088[15;25H3[15;37H2[15;59H5[16;25H86[16;38H85[18;54H8[18;67H8 [43d[11;27H718318[11;42H711654[13;12Hno link Good: 2499898   Bad: 4930077[K[14;12Hlink w/ 1 Good: 2459904   Bad: 4970072[15;25H6[15;37H5[15;58H38[16;24H719[16;37H718[16;57H3.97[18;53H32[18;66H32 [43d[11;28H60994[11;43H59379[12;35H50[13;27H542054[13;43H78321[14;20H3[14;30H94982[14;43H5025395[15;25H8[15;37H7[15;59H7[16;25H52[16;38H51[18;54H6[18;67H6 [43d[11;27H80428[11;42H806485[13;12Hlink w/ 1 Good: 2584866   Bad: 5025906[14;12Hno link Good: 2540285   Bad: 5070487[K[15;23H200[15;37H9[16;25H85[16;38H84[16;60H8[18;53H40[18;66H40 [43d[11;28H26268[11;43H74894[13;12Hno link Good: 2602058   Bad: 5099106[K[14;28H60248[14;42H140918[15;25H3[15;35H202[15;58H42[16;24H818[16;37H817[18;54H4[18;67H4 [43d[11;28H55061[11;42H936499[12;36H2[13;28H27162[13;42H164401[14;28H78570[14;42H212994[15;25H5[15;37H4[15;59H1[16;25H51[16;38H50[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 2900359   Bad: 4981594[13;12Hlink w/ 4 Good: 2672449   Bad: 5209506[14;27H623877[14;43H58079[15;25H8[15;37H7[15;59H6[16;25H85[16;38H84[16;60H9[18;53H52[18;66H52 [43d[11;12Hno link Good: 2937206   Bad: 5035143[K[13;12Hno link Good: 2707427   Bad: 5264925[K[14;28H61362[14;42H310991[15;24H10[15;37H9[15;59H5[16;24H918[16;37H917[16;57H4.00[18;54H6[18;67H6 [43d[11;28H59202[11;42H103542[13;28H25331[13;42H33741[14;28H76879[14;43H85868[15;25H2[15;36H11[15;59H4[16;25H51[16;38H50[18;53H60[18;66H60 [43d[11;28H97373[11;43H55768[12;36H4[13;12Hlink w/ 1 Good: 2761954   Bad: 5391189[14;12Hlink w/ 3 Good: 2706909   Bad: 5446236[15;25H5[15;37H4[15;59H9[16;25H84[16;38H83[18;54H4[18;67H4 [43d[11;12Hlink w/ 4 Good: 3042689   Bad: 5200849[13;12Hno link Good: 2807236   Bad: 5436304[K[14;12Hno link Good: 2752212   Bad: 5491330[K[15;25H7[15;37H6[15;58H37[16;23H3017[16;36H3016[16;57H3.97[18;54H8[18;67H8 [43d[11;30H67206[11;45H66731[13;28H27118[13;42H506821[14;28H77457[14;42H556483[15;25H9[15;37H8[15;59H6[16;25H50[16;38H49[18;53H72[18;66H72 [43d[11;12Hno link Good: 3091472   Bad: 5332859[K[12;36H6[13;28H46820[13;43H77514[14;28H92968[14;42H631366[15;24H22[15;36H21[15;58H41[16;25H83[16;38H82[16;60H8[18;54H6[18;67H6 [43d[11;12Hlink w/ 4 Good: 3136796   Bad: 5377933[13;28H921[13;42H622611[14;27H834434[14;43H80299[15;25H4[15;37H3[15;59H0[16;24H117[16;37H116[18;53H80[18;66H80 [43d[11;12Hno link Good: 3175210   Bad: 5429913[K[13;27H928793[13;43H76333[14;28H77629[14;42H727498[15;25H7[15;37H6[15;59H5[16;25H50[16;38H49[16;60H9[18;54H4[18;67H4 [43d[11;28H97147[11;43H98371[13;28H46342[13;42H749179[14;28H93560[14;42H801962[15;25H9[15;37H8[15;59H4[16;25H83[16;38H82[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 3229160   Bad: 5556757[12;36H8[13;12Hlink w/ 4 Good: 2976101   Bad: 5809818[14;27H923851[14;43H62070[15;24H31[15;36H30[15;59H3[16;24H216[16;37H215[16;57H4.00[18;53H92[18;66H92 [43d[11;12Hno link Good: 3251318   Bad: 5624997[K[13;12Hno link Good: 2993737   Bad: 5882580[K[14;28H39520[14;42H936798[15;25H4[15;37H3[15;59H8[16;25H49[16;38H48[18;54H6[18;67H6 [43d[11;28H89649[11;43H77058[12;35H60[13;26H3030580[13;42H93613[14;28H69395[14;43H97316[15;25H6[15;37H5[15;59H7[16;25H82[16;38H81[18;52H400[18;65H400 [43d[11;12Hlink w/ 4 Good: 3334951   Bad: 5722153[13;12Hlink w/ 1 Good: 3075868   Bad: 5981238[14;12Hlink w/ 3 Good: 3014707   Bad: 6042401[15;25H9[15;37H8[15;59H1[16;24H315[16;37H314[16;57H3.97[18;54H4[18;67H4 [43d[11;12Hno link Good: 3359199   Bad: 5788302[K[13;20H4[13;30H95855[13;43H6051649[14;12Hno link Good: 3040082   Bad: 6107423[K[15;24H41[15;36H40[15;59H0[16;25H49[16;38H48[16;60H8[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 3383667   Bad: 5854236[12;36H2[13;12Hno link Good: 3115667   Bad: 6122238[K[14;28H56257[14;43H81648[15;25H3[15;37H2[16;25H82[16;38H81[18;53H12[18;66H12 [43d[11;12Hno link Good: 3428966   Bad: 5899328[K[13;12Hlink w/ 4 Good: 3160975   Bad: 6167322[14;12Hlink w/ 3 Good: 3098094   Bad: 6230204[15;25H6[15;37H5[15;59H4[16;24H415[16;37H414[18;54H6[18;67H6 [43d[11;28H67159[11;42H951530[13;12Hno link Good: 3197470   Bad: 6221221[K[14;12Hno link Good: 3141064   Bad: 6277628[K[15;25H8[15;37H7[15;59H3[16;25H48[16;38H47[16;60H9[18;53H20[18;66H20 [43d[11;28H89323[11;41H6019764[13;27H214791[13;43H94299[14;28H57401[14;42H351690[15;24H50[15;37H9[16;25H81[16;38H80[18;54H4[18;67H4 [43d[11;27H520082[11;43H79398[12;36H4[13;12Hlink w/ 1 Good: 3243150   Bad: 6356332[14;12Hlink w/ 3 Good: 3181562   Bad: 6417921[15;25H3[15;36H52[15;59H7[16;24H514[16;37H513[16;57H4.00[18;54H8[18;67H8 [43d[11;12Hlink w/ 3 Good: 3565401   Bad: 6124479[13;30H88463[13;44H401419[14;29H226871[14;45H63012[15;25H5[15;37H4[15;59H6[16;25H47[16;38H46[18;53H32[18;66H32 [43d[11;12Hno link Good: 3594246   Bad: 6186027[K[13;12Hno link Good: 3314408   Bad: 6465867[K[14;12Hno link Good: 3258226   Bad: 6522050[K[15;25H8[15;37H7[15;58H50[16;25H81[16;38H80[18;54H6[18;67H6 [43d[11;27H616264[11;42H254406[13;12Hlink w/ 1 Good: 3331352   Bad: 6539320[14;12Hlink w/ 1 Good: 3274284   Bad: 6596389[15;24H60[15;37H9[15;58H4[16;24H614[16;37H613[16;57H3.97[18;53H40[18;66H40 [43d[11;28H5950[11;42H301554[12;36H6[13;12Hno link Good: 3374253   Bad: 6586808[K[14;20H3[14;29H310391[14;44H650671[15;25H2[15;36H61[15;58H39[16;25H47[16;38H46[16;60H8[18;54H4[18;67H4 [43d[11;12Hlink w/ 3 Good: 3702190   Bad: 6349272[13;27H416459[13;42H635005[14;30H55709[14;45H95756[15;25H5[15;37H4[15;58H43[16;25H80[16;38H79[18;54H8[18;67H8 [43d[11;12Hno link Good: 3724225   Bad: 6417636[K[13;12Hlink w/ 4 Good: 3433751   Bad: 6708112[14;12Hno link Good: 3375353   Bad: 6766512[K[15;25H7[15;37H6[15;59H2[16;24H713[16;37H712[16;60H9[18;53H52[18;66H52 [43d[11;28H53571[11;43H78684[12;36H8[13;20H1[13;30H59649[13;45H72608[14;12Hlink w/ 3 Good: 3393874   Bad: 6838385[15;25H9[15;37H8[16;25H46[16;38H45[18;54H6[18;67H6 [43d[11;28H98875[11;42H523777[13;12Hno link Good: 3504947   Bad: 6817707[K[14;12Hno link Good: 3439173   Bad: 6883483[K[15;24H72[15;36H71[15;59H6[16;25H79[16;38H78[18;53H60[18;66H60 [43d[11;27H835213[11;43H77834[13;28H3950[13;43H73543[14;28H76277[14;42H936774[15;25H4[15;37H3[15;59H5[16;24H813[16;37H812[16;57H4.00[18;54H4[18;67H4 [43d[11;28H57240[11;42H646201[13;12Hlink w/ 4 Good: 3556761   Bad: 6946682[14;28H91955[14;41H7011489[15;25H7[15;37H6[15;59H9[16;25H46[16;38H45[18;54H8[18;67H8 [43d[11;12Hlink w/ 4 Good: 3896020   Bad: 6697818[12;35H70[13;12Hno link Good: 3594390   Bad: 6999450[K[14;27H522487[14;43H71354[15;25H9[15;37H8[15;59H8[16;25H79[16;38H78[18;53H72[18;66H72 [43d[11;12Hno link Good: 3941319   Bad: 6742915[K[13;27H639704[13;41H7044533[14;12Hlink w/ 3 Good: 3567790   Bad: 7116448[15;24H81[15;36H80[15;58H39[16;24H912[16;37H911[16;57H3.98[18;54H6[18;67H6 [43d[11;12Hlink w/ 3 Good: 3965263   Bad: 6809368[13;28H58966[13;42H115668[14;12Hno link Good: 3593141   Bad: 7181494[K[15;25H4[15;37H3[15;58H42[16;25H45[16;38H44[18;53H80[18;66H80 [43d[44;1H[?1049l [?1l>]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# lear
4614No command 'lear' found, did you mean:
4615 Command 'klear' from package 'klear' (universe)
4616 Command 'leaf' from package 'cone' (universe)
4617 Command 'clear' from package 'ncurses-bin' (main)
4618 Command 'pear' from package 'php-pear' (main)
4619lear: command not found
4620]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# clear
4621[H[2J]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# clear
4622[H[2J]0;root@node1-1.sb9.orbit-lab.org: ~root@node1-1:~# exit
4623logout
4624]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ pwd
4625/home/netfpga/netfpga/projects/selftest/sw
4626]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ ls
4627[0m[01;32mbad_pkt_dump[0m     or_ip.c     or_utils.o      selftest_clk.o   selftest_dram.h  selftest_mdio.o  selftest_reg.c     selftest_serial.o
4628bad_pkt_dump.c   or_ip.h     [01;32mselftest[0m        selftest_dma.c   selftest_dram.o  selftest.o       selftest_reg.h     selftest_sram.c
4629bad_pkt_dump.o   or_ip.o     selftest.c      selftest_dma.h   selftest.h       selftest_phy.c   selftest_reg.o     selftest_sram.h
4630Makefile         or_utils.c  selftest_clk.c  selftest_dma.o   selftest_mdio.c  selftest_phy.h   selftest_serial.c  selftest_sram.o
4631or_data_types.h  or_utils.h  selftest_clk.h  selftest_dram.c  selftest_mdio.h  selftest_phy.o   selftest_serial.h
4632[m]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ cd [K[K[K../
4633-bash: ../: is a directory
4634]0;netfpga@node1-1: ~/netfpga/projects/selftest/swnetfpga@node1-1:~/netfpga/projects/selftest/sw$ cd ../
4635]0;netfpga@node1-1: ~/netfpga/projects/selftestnetfpga@node1-1:~/netfpga/projects/selftest$ ls
4636[0m[01;34minclude[0m  [01;34mlib[0m  Makefile  [01;34msrc[0m  [01;34msw[0m  [01;34msynth[0m  [01;34mverif[0m
4637[m]0;netfpga@node1-1: ~/netfpga/projects/selftestnetfpga@node1-1:~/netfpga/projects/selftest$ cd src/
4638]0;netfpga@node1-1: ~/netfpga/projects/selftest/srcnetfpga@node1-1:~/netfpga/projects/selftest/src$ ls
4639aurora_framing_aurora_lane.v           aurora_framing_rx_ll.v               ddr2_test_reg.v     phy_test_pktsrc.v      serial_test.v
4640aurora_framing_channel_error_detect.v  aurora_framing_standard_cc_module.v  ddr2_test.v         phy_test_port_ctrl.v   serial_tst_regs.v
4641aurora_framing_channel_init_sm.v       aurora_framing_sym_dec.v             dump.v              phy_test_port_grp.v    small_async_fifo.v
4642aurora_framing_chbond_count_dec.v      aurora_framing_sym_gen.v             lfsr32.v            phy_test_reg.v         sram_test_fast.v
4643aurora_framing_error_detect.v          aurora_framing_tx_ll_control.v       nf2_core.v          phy_test_rx_log_reg.v  sram_test_fixed_pat_fast.v
4644aurora_framing_frame_check.v           aurora_framing_tx_ll_datapath.v      nf2_mac_grp.v       phy_test_rx_reg.v      sram_test_fixed_pat.v
4645aurora_framing_frame_gen.v             aurora_framing_tx_ll.v               nf2_rxfifo_sm.v     phy_test_tx_reg.v      sram_test_rand_pat_fast.v
4646aurora_framing_global_logic.v          aurora_framing.v                     nf2_sram_sm_fast.v  phy_test.v             sram_test_rand_pat.v
4647aurora_framing_idle_and_ver_gen.v      aurora_module.v                      nf2_sram_sm.v       reg_addr_reflect.v     sram_test_reg.v
4648aurora_framing_lane_init_sm.v          clk_test_reg.v                       nf2_top.v           reg_file_test.v        sram_test.v
4649aurora_framing_phase_align.v           cpu_dma_queue.v                      nf2_txfifo_sm.v     reg_sram_msb.v         testbench_inc.v
4650aurora_framing_rx_ll_nfc.v             dcmx3y0_2vp50.v                      phy_test_pktcmp.v   rgmii_io.v             unet_defines.v
4651aurora_framing_rx_ll_pdu_datapath.v    ddr2_dram_access_reg.v               phy_test_pktgen.v   selftest_result.v
4652]0;netfpga@node1-1: ~/netfpga/projects/selftest/srcnetfpga@node1-1:~/netfpga/projects/selftest/src$ vi [K[K[Kless phy_test_pktgen.v
4653[?1049h[?1h= ///////////////////////////////////////////////////////////////////////////////
4654// vim:set shiftwidth=3 softtabstop=3 expandtab:
4655// $Id: phy_test_pktgen.v 1794 2007-05-21 01:38:29Z grg $
4656//
4657// Module: phy_test_pktgen.v
4658// Project: NetFPGA
4659// Description: Selftest module for Ethernet Phys.
4660//
4661//              This particular module is responsible for generating packets
4662//              only. The packet format is as follows:
4663//
4664//              DA: 00:ca:fe:00:01:Port
4665//              SA: 00:ca:fe:00:00:Port
4666//              Length: Length
4667//              Data: 8'b0, pattern (8 bits)
4668//                    seq_no (or 0)
4669//                    Pattern
4670//
4671// Note: data is muxed -- not the direct output for a flop
4672//
4673///////////////////////////////////////////////////////////////////////////////
4674
4675module phy_test_pktgen #(parameter
4676      CPCI_NF2_DATA_WIDTH = 32,
4677      NUM_PATTERNS = 5,
4678      SEQ_NO_WIDTH = 32
4679   )
4680   (
4681      output [31:0]                       data,
4682      output reg [3:0]                    ctrl,
4683      input                               rd_en,            // Output the next word
4684
4685      input  [2:0]                        port,             // Source port number
4686      input  [NUM_PATTERNS - 1:0]         pattern,          // Pattern enable
4687      input  [10:0]                       pkt_size,         // Packet size
4688      input  [SEQ_NO_WIDTH - 1:0]         seq_no,           // Initial sequence number
4689
4690      output reg                          busy,             // Currently transmitting packets
4691      output reg                          done,             // Indicates the last word of the packet is being output
4692
4693      //--- misc
4694      input             reset,
4695      input             clk
4696[7mphy_test_pktgen.v [27m[K [K [KESCESC[KOO[KBB [K   );
4697:[K [K [KESCESC[KOO[KBB [K
4698:[K [K [KESCESC[KOO[KBB [K   // Identify different patters
4699:[K [K [KESCESC[KOO[KBB [K   localparam  ALL_0_PATTERN   = 5'b00001;
4700:[K [K [KESCESC[KOO[KBB [K   localparam  ALL_1_PATTERN   = 5'b00010;
4701:[K [K [KESCESC[KOO[KBB [K   localparam  ALT_01_PATTERN  = 5'b00100;
4702:[K [K [KESCESC[KOO[KBB [K   localparam  ALT_10_PATTERN  = 5'b01000;
4703:[K [K [KESCESC[KOO[KBB [K   localparam  RANDOM_PATTERN  = 5'b10000;
4704:[K [K [KESCESC[KOO[KBB [K
4705:[K [K [KESCESC[KOO[KBB [K   // Count when the LFSR should be enabled
4706:[K [K [KESCESC[KOO[KBB [K   localparam START_LFSR = 'd5;
4707:[K [K [KESCESC[KOO[KBB [K
4708:[K [K [KESCESC[KOO[KBB [K   // Word locations of various packet components
4709:[K [K [KESCESC[KOO[KBB [K   localparam DA_HI           = 'd0;
4710:[K [K [KESCESC[KOO[KBB [K   localparam DA_LO_SA_HI     = 'd1;
4711:[K [K [KESCESC[KOO[KBB [K   localparam SA_LO           = 'd2;
4712:[K [K [KESCESC[KOO[KBB [K   localparam SIZE_PATTERN    = 'd3;
4713:[K [K [KESCESC[KOO[KBB [K   localparam SEQUENCE_NO     = 'd4;
4714:[K [K [KESCESC[KOO[KBB [K
4715:[K [K [KESCESC[KOO[KBB [K   // Packet length related variables
4716:[K [K [KESCESC[KOO[KBB [K   reg [8:0] num_words;
4717:[K [K [KESCESC[KOO[KBB [K   reg [3:0] final_ctrl;
4718:[K [K [KESCESC[KOO[KBB [K
4719:[K [K [KESCESC[KOO[KBB [K   reg [8:0] count;
4720:[K [K [KESCESC[KOO[KBB [K
4721:[K [K [KESCESC[KOO[KBB [K   wire [31:0] rand_data;
4722:[K [K [KESCESC[KOO[KBB [K   reg [31:0] header_nxt;
4723:[K [K [KESCESC[KOO[KBB [K   reg [31:0] payload;
4724:[K [K [KESCESC[KOO[KBB [K   reg [31:0] header;
4725:[K [K [KESCESC[KOO[KBB [K
4726:[K [K [KESCESC[KOO[KBB [K   reg done_nxt;
4727:[K [K [KESCESC[KOO[KBB [K   wire last_word;
4728:[K [K [KESCESC[KOO[KBB [K
4729:[K [K [KESCESC[KOO[KBB [K   reg enable_lfsr;
4730:[K [K [KESCESC[KOO[KBB [K
4731:[K [K [KESCESC[KOO[KBB [K   reg sel_payload;
4732:[K [K [KESCESC[KOO[KBB [K
4733:[K [K [KESCESC[KOO[KBB [K
4734:[K [K [KESCESC[KOO[KBB [K
4735:[K [K [KESCESC[KOO[KBB [K   // =================================
4736:[K [K [KESCESC[KOO[KBB [K   // Main state machine responsible for packet transmission
4737:[K [K [KESCESC[KOO[KBB [K   // Tracks the current word and places data on the output signals
4738:[K [K [KESCESC[KOO[KBB [K
4739:[K [K [KESCESC[KOO[KBB [K   // Generate the last word signal
4740:[K [K [KESCESC[KOO[KBB [K   assign last_word = count == num_words - 1;
4741:[K [K [KESCESC[KOO[KBB [K
4742:[K [K [KESCESC[KOO[KBB [K   always @(posedge clk)
4743:[K [K [KESCESC[KOO[KBB [K   begin
4744:[K [K [KESCESC[KOO[KBB [K      // Track the count and calculate the data to send
4745:[K [K [KESCESC[KOO[KBB [K      if (reset) begin
4746:[K [K [KESCESC[KOO[KBB [K         count <= 'h0;
4747:[K [K [KESCESC[KOO[KBB [K         enable_lfsr <= 1'b0;
4748:[K [K [KESCESC[KOO[KBB [K         final_ctrl <= 4'b0000;
4749:[K [K [KESCESC[KOO[KBB [K         num_words <= {9{1'b1}};
4750:[K [K [KESCESC[KOO[KBB [K         ctrl <= 'h0;
4751:[K [K [KESCESC[KOO[KBB [K         done <= 1'b0;
4752:[K [K [KESCESC[KOO[KBB [K         busy <= 1'b0;
4753:[K [K [KESCESC[KOO[KBB [K         sel_payload <= 1'b0;
4754:[K [K [KESCESC[KOO[KBB [K         header <= 'h0;
4755:[K [K [KESCESC[KOO[KBB [K      end
4756:[K [K [KESCESC[KOO[KBB [K      else if (rd_en) begin
4757:[K [K [KESCESC[KOO[KBB [K         if (last_word) begin
4758:[K [K [KESCESC[KOO[KBB [K            // If we are on the last word we should reset the
4759:[K [K [KESCESC[KOO[KBB [K            // counter and move to the next pattern
4760:[K [K [KESCESC[KOO[KBB [K            //
4761:[K [K [KESCESC[KOO[KBB [K            // Don't reset the LFSR here as the output may not
4762:[K [K [KESCESC[KOO[KBB [K            // have been processed yet
4763:[K [K [KESCESC[KOO[KBB [K            count <= 'h0;
4764:[K [K [KESCESC[KOO[KBB [K            final_ctrl <= 4'b0000;
4765:[K [K [KESCESC[KOO[KBB [K            num_words <= {9{1'b1}};
4766:[K [K [KESCESC[KOO[KBB [K            ctrl <= final_ctrl;
4767:[K [K [KESCESC[KOO[KBB [K            done <= 1'b1;
4768:[K [K [KESCESC[KOO[KBB [K            sel_payload <= 1'b1;
4769:[K [K [KESCESC[KOO[KBB [K            header <= header_nxt;
4770:[K [K [KESCESC[KOO[KBB [K         end
4771:[K [K [KESCESC[KOO[KBB [K         else begin
4772:[K [K [KESCESC[KOO[KBB [K            // Record the size and pattern if we're
4773:[K [K [KESCESC[KOO[KBB [K            // on the appropriate word
4774:[K [K [KESCESC[KOO[KBB [K            if (count == SIZE_PATTERN) begin
4775:[K [K [KESCESC[KOO[KBB [K               // Work out how many words we expect to send
4776:[K [K [KESCESC[KOO[KBB [K               num_words <= pkt_size[10:2] + (|pkt_size[1:0]);
4777:[K [K [KESCESC[KOO[KBB [K
4778:[K [K [KESCESC[KOO[KBB [K               // Calculate the control bits for the final word
4779:[K [K [KESCESC[KOO[KBB [K               case (pkt_size[1:0])
4780:[K [K [KESCESC[KOO[KBB [K                  2'd0 : final_ctrl <= 4'b0001;
4781:[K [K [KESCESC[KOO[KBB [K                  2'd1 : final_ctrl <= 4'b1000;
4782:[K [K [KESCESC[KOO[KBB [K                  2'd2 : final_ctrl <= 4'b0100;
4783:[K [K [KESCESC[KOO[KBB [K                  2'd3 : final_ctrl <= 4'b0010;
4784:[K [K [KESCESC[KOO[KBB [K               endcase
4785:[K [K [KESCESC[KOO[KBB [K            end
4786:[K [K [KESCESC[KOO[KBB [K
4787:[K [K [KESCESC[KOO[KBB [K            // Enable the LFSR if appropriate
4788:[K [K [KESCESC[KOO[KBB [K            if (count == START_LFSR)
4789:[K [K [KESCESC[KOO[KBB [K               enable_lfsr <= 1'b1;
4790:[K [K [KESCESC[KOO[KBB [K            else if (count == 'h0)
4791:[K [K [KESCESC[KOO[KBB [K               enable_lfsr <= 1'b0;
4792:[K [K [KESCESC[KOO[KBB [K
4793:[K [K [KESCESC[KOO[KBB [K            // If we are not on the last word then we should increment the
4794:[K [K [KESCESC[KOO[KBB [K            // counter but don't touch the pattern
4795:[K [K [KESCESC[KOO[KBB [K            count <= count + 'h1;
4796:[K [K [KESCESC[KOO[KBB [K            header <= header_nxt;
4797:[K [K [KESCESC[KOO[KBB [K            ctrl <= 'h0;
4798:[K [K [KESCESC[KOO[KBB [K            done <= 1'b0;
4799:[K [K [KESCESC[KOO[KBB [K            if (count == 'h0)
4800:[K [K [KESCESC[KOO[KBB [K               sel_payload <= 1'b0;
4801:[K [K [KESCESC[KOO[KBB [K            else if (count == SEQUENCE_NO)
4802:[K [K [KESCESC[KOO[KBB [K               sel_payload <= 1'b1;
4803:[K [K [KESCESC[KOO[KBB [K         end
4804:[K [K [KESCESC[KOO[KBB [K         busy <= 1'b1;
4805:[K [K [KESCESC[KOO[KBB [K      end
4806:[K [K [KESCESC[KOO[KBB [K      else if (count == 'h0)
4807:[K [K [KESCESC[KOO[KBB [K         busy <= 1'b0;
4808:[K [K [KESCESC[KOO[KBB [K   end
4809:[K [K [KESCESC[KOO[KBB [K
4810:[K [K [KESCESC[KOO[KBB [K   assign data = sel_payload ? payload : header;
4811:[K [K [KESCESC[KOO[KBB [K
4812:[K [K [KESCESC[KOO[KBB [K
4813:[K [K [KESCESC[KOO[KBB [K
4814:[K [K [KESCESC[KOO[KBB [K   // =================================
4815:[K [K [KESCESC[KOO[KBB [K   // Muxes to work out what data to transmit
4816:[K [K [KESCESC[KOO[KBB [K
4817:[K [K [KESCESC[KOO[KBB [K   always @*
4818:[K [K [KESCESC[KOO[KBB [K   begin
4819:[K [K [KESCESC[KOO[KBB [K      case (count)
4820:[K [K [KESCESC[KOO[KBB [K         //DA_HI       : header_nxt = 32'h 00_ca_fe_00;
4821:[K [K [KESCESC[KOO[KBB [K         DA_LO_SA_HI : header_nxt = {8'h 01, 5'd0, port, 16'h 00_ca};
4822:[K [K [KESCESC[KOO[KBB [K         SA_LO       : header_nxt = {24'h fe_00_00, 5'd0, port};
4823:[K [K [KESCESC[KOO[KBB [K         SIZE_PATTERN: header_nxt = {4'hf, 1'b0, pkt_size, 8'd0, {(8 - NUM_PATTERNS){1'b0}}, pattern};
4824:[K [K [KESCESC[KOO[KBB [K         default     : header_nxt = 32'h 00_ca_fe_00;
4825:[K [K [KESCESC[KOO[KBB [K      endcase
4826:[K [K [KESCESC[KOO[KBB [K   end
4827:[K [K [KESCESC[KOO[KBB [K
4828:[K [K [KESCESC[KOO[KBB [K   always @*
4829:[K [K [KESCESC[KOO[KBB [K   begin
4830:[K [K [KESCESC[KOO[KBB [K      case (pattern)
4831:[K [K [KESCESC[KOO[KBB [K         ALL_0_PATTERN  : payload = 32'h 00000000;
4832:[K [K [KESCESC[KOO[KBB [K         ALL_1_PATTERN  : payload = 32'h ffffffff;
4833:[K [K [KESCESC[KOO[KBB [K         ALT_01_PATTERN : payload = 32'h 55555555;
4834:[K [K [KESCESC[KOO[KBB [K         ALT_10_PATTERN : payload = 32'h aaaaaaaa;
4835:[K [K [KESCESC[KOO[KBB [K         default        : payload = rand_data;
4836:[K [K [KESCESC[KOO[KBB [K      endcase
4837:[K [K [KESCESC[KOO[KBB [K   end
4838:[K [K [KESCESC[KOO[KBB [K
4839:[K [K [KESCESC[KOO[KBB [K
4840:[K [K [KESCESC[KOO[KBB [K
4841:[K [K [KESCESC[KOO[KBB [K   // =================================
4842:[K [K [KESCESC[KOO[KBB [K   // LFSR to generate random patterns
4843:[K [K [KESCESC[KOO[KBB [K   //
4844:[K [K [KESCESC[KOO[KBB [K   // The LFSR should only progress when we are generating a random pattern at
4845:[K [K [KESCESC[KOO[KBB [K   // only when we are in the payload section.
4846:[K [K [KESCESC[KOO[KBB [K   //
4847:[K [K [KESCESC[KOO[KBB [K   // The first word should actually be repeated twice in the payload to allow
4848:[K [K [KESCESC[KOO[KBB [K   // the receiver to start an identical LFSR
4849:[K [K [KESCESC[KOO[KBB [K   lfsr32 patgen (
4850:[K [K [KESCESC[KOO[KBB [K      .val (rand_data),
4851:[K [K [KESCESC[KOO[KBB [K      .rd (pattern == RANDOM_PATTERN && rd_en && enable_lfsr),
4852:[K [K [KESCESC[KOO[KBB [K      .seed (seq_no),
4853:[K [K [KESCESC[KOO[KBB [K      .reset (reset || !enable_lfsr),
4854:[K [K [KESCESC[KOO[KBB [K      .clk (clk)
4855:[K [K [KESCESC[KOO[KBB [K   );
4856:[K [K [KESCESC[KOO[KBB [K
4857:[K [K [KESCESC[KOO[KBB [Kendmodule   // phy_test_pktgen
4858[7m(END) [27m[K [K [KESCESC[KOO[KBB [K [K[7m(END) [27m[K [K [KESCESC[KOO[KBB [K [K[7m(END) [27m[K [K [KESCESC[KOO[KBB [K [K[7m(END) [27m[K [K [KESCESC[KOO[KBB [K [K[7m(END) [27m[K [K [KESCESC[KOO[KBB [K [K[7m(END) [27m[K [K [KESCESC[KOO[KBB [K [K[7m(END) [27m[K [K [KESCESC[KOO[KBB [K [K[7m(END) [27m[K [K [KESCESC[KOO[KAA [K[HM   // =================================
4859[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4860[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4861[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4862[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   assign data = sel_payload ? payload : header;
4863[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4864[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   end
4865[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         busy <= 1'b0;
4866[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      else if (count == 'h0)
4867[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      end
4868[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         busy <= 1'b1;
4869[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         end
4870[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               sel_payload <= 1'b1;
4871[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            else if (count == SEQUENCE_NO)
4872[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               sel_payload <= 1'b0;
4873[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            if (count == 'h0)
4874[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            done <= 1'b0;
4875[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            ctrl <= 'h0;
4876[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            header <= header_nxt;
4877[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            count <= count + 'h1;
4878[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // counter but don't touch the pattern
4879[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // If we are not on the last word then we should increment the
4880[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4881[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               enable_lfsr <= 1'b0;
4882[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            else if (count == 'h0)
4883[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               enable_lfsr <= 1'b1;
4884[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            if (count == START_LFSR)
4885[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // Enable the LFSR if appropriate
4886[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4887[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            end
4888[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               endcase
4889[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd3 : final_ctrl <= 4'b0010;
4890[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd2 : final_ctrl <= 4'b0100;
4891[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd1 : final_ctrl <= 4'b1000;
4892[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd0 : final_ctrl <= 4'b0001;
4893[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               case (pkt_size[1:0])
4894[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               // Calculate the control bits for the final word
4895[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4896[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               num_words <= pkt_size[10:2] + (|pkt_size[1:0]);
4897[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               // Work out how many words we expect to send
4898[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            if (count == SIZE_PATTERN) begin
4899[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // on the appropriate word
4900[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // Record the size and pattern if we're
4901[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         else begin
4902[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         end
4903[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            header <= header_nxt;
4904[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            sel_payload <= 1'b1;
4905[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            done <= 1'b1;
4906[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            ctrl <= final_ctrl;
4907[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            num_words <= {9{1'b1}};
4908[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            final_ctrl <= 4'b0000;
4909[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            count <= 'h0;
4910[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // have been processed yet
4911[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // Don't reset the LFSR here as the output may not
4912[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            //
4913[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // counter and move to the next pattern
4914[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // If we are on the last word we should reset the
4915[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         if (last_word) begin
4916[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      else if (rd_en) begin
4917[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      end
4918[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         header <= 'h0;
4919[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         sel_payload <= 1'b0;
4920[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         busy <= 1'b0;
4921[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         done <= 1'b0;
4922[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         ctrl <= 'h0;
4923[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         num_words <= {9{1'b1}};
4924[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         final_ctrl <= 4'b0000;
4925[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         enable_lfsr <= 1'b0;
4926[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         count <= 'h0;
4927[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      if (reset) begin
4928[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      // Track the count and calculate the data to send
4929[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   begin
4930[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   always @(posedge clk)
4931[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4932[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   assign last_word = count == num_words - 1;
4933[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // Generate the last word signal
4934[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4935[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // Tracks the current word and places data on the output signals
4936[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // Main state machine responsible for packet transmission
4937[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // =================================
4938[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4939[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4940[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4941[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg sel_payload;
4942[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4943[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg enable_lfsr;
4944[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4945[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   wire last_word;
4946[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg done_nxt;
4947[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4948[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg [31:0] header;
4949[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg [31:0] payload;
4950[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg [31:0] header_nxt;
4951[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   wire [31:0] rand_data;
4952[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4953[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg [8:0] count;
4954[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4955[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg [3:0] final_ctrl;
4956[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   reg [8:0] num_words;
4957[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // Packet length related variables
4958[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4959[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam SEQUENCE_NO     = 'd4;
4960[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam SIZE_PATTERN    = 'd3;
4961[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam SA_LO           = 'd2;
4962[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam DA_LO_SA_HI     = 'd1;
4963[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam DA_HI           = 'd0;
4964[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // Word locations of various packet components
4965[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4966[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam START_LFSR = 'd5;
4967[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // Count when the LFSR should be enabled
4968[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4969[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam  RANDOM_PATTERN  = 5'b10000;
4970[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam  ALT_10_PATTERN  = 5'b01000;
4971[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam  ALT_01_PATTERN  = 5'b00100;
4972[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam  ALL_1_PATTERN   = 5'b00010;
4973[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   localparam  ALL_0_PATTERN   = 5'b00001;
4974[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   // Identify different patters
4975[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4976[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   );
4977[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      input             clk
4978[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      input             reset,
4979[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      //--- misc
4980[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4981[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      output reg                          done,             // Indicates the last word of the packet is being output
4982[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      output reg                          busy,             // Currently transmitting packets
4983[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4984[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      input  [SEQ_NO_WIDTH - 1:0]         seq_no,           // Initial sequence number
4985[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      input  [10:0]                       pkt_size,         // Packet size
4986[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      input  [NUM_PATTERNS - 1:0]         pattern,          // Pattern enable
4987[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      input  [2:0]                        port,             // Source port number
4988[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4989[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      input                               rd_en,            // Output the next word
4990[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      output reg [3:0]                    ctrl,
4991[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      output [31:0]                       data,
4992[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   (
4993[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   )
4994[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      SEQ_NO_WIDTH = 32
4995[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      NUM_PATTERNS = 5,
4996[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      CPCI_NF2_DATA_WIDTH = 32,
4997[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HMmodule phy_test_pktgen #(parameter
4998[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
4999[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM///////////////////////////////////////////////////////////////////////////////
5000[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//
5001[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM// Note: data is muxed -- not the direct output for a flop
5002[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//
5003[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//                    Pattern
5004[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//                    seq_no (or 0)
5005[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//              Data: 8'b0, pattern (8 bits)
5006[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//              Length: Length
5007[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//              SA: 00:ca:fe:00:00:Port
5008[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//              DA: 00:ca:fe:00:01:Port
5009[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//
5010[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//              only. The packet format is as follows:
5011[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//              This particular module is responsible for generating packets
5012[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//
5013[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM// Description: Selftest module for Ethernet Phys.
5014[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM// Project: NetFPGA
5015[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM// Module: phy_test_pktgen.v
5016[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM//
5017[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM// $Id: phy_test_pktgen.v 1794 2007-05-21 01:38:29Z grg $
5018[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM// vim:set shiftwidth=3 softtabstop=3 expandtab:
5019[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM///////////////////////////////////////////////////////////////////////////////
5020[44;1H [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KAA [K [K:[K [K [KESCESC[KOO[KBB [K   );
5021:[K [K [KESCESC[KOO[KBB [K
5022:[K [K [KESCESC[KOO[KBB [K   // Identify different patters
5023:[K [K [KESCESC[KOO[KBB [K   localparam  ALL_0_PATTERN   = 5'b00001;
5024:[K [K [KESCESC[KOO[KBB [K   localparam  ALL_1_PATTERN   = 5'b00010;
5025:[K [K [KESCESC[KOO[KBB [K   localparam  ALT_01_PATTERN  = 5'b00100;
5026:[K [K [KESCESC[KOO[KBB [K   localparam  ALT_10_PATTERN  = 5'b01000;
5027:[K [K [KESCESC[KOO[KBB [K   localparam  RANDOM_PATTERN  = 5'b10000;
5028:[K [K [KESCESC[KOO[KBB [K
5029:[K [K [KESCESC[KOO[KBB [K   // Count when the LFSR should be enabled
5030:[K [K [KESCESC[KOO[KBB [K   localparam START_LFSR = 'd5;
5031:[K [K [KESCESC[KOO[KBB [K
5032:[K [K [KESCESC[KOO[KBB [K   // Word locations of various packet components
5033:[K [K [KESCESC[KOO[KBB [K   localparam DA_HI           = 'd0;
5034:[K [K [KESCESC[KOO[KBB [K   localparam DA_LO_SA_HI     = 'd1;
5035:[K [K [KESCESC[KOO[KBB [K   localparam SA_LO           = 'd2;
5036:[K [K [KESCESC[KOO[KBB [K   localparam SIZE_PATTERN    = 'd3;
5037:[K [K [KESCESC[KOO[KBB [K   localparam SEQUENCE_NO     = 'd4;
5038:[K [K [KESCESC[KOO[KBB [K
5039:[K [K [KESCESC[KOO[KBB [K   // Packet length related variables
5040:[K [K [KESCESC[KOO[KBB [K   reg [8:0] num_words;
5041:[K [K [KESCESC[KOO[KBB [K   reg [3:0] final_ctrl;
5042:[K [K [KESCESC[KOO[KBB [K
5043:[K [K [KESCESC[KOO[KBB [K   reg [8:0] count;
5044:[K [K [KESCESC[KOO[KBB [K
5045:[K [K [KESCESC[KOO[KBB [K   wire [31:0] rand_data;
5046:[K [K [KESCESC[KOO[KBB [K   reg [31:0] header_nxt;
5047:[K [K [KESCESC[KOO[KBB [K   reg [31:0] payload;
5048:[K [K [KESCESC[KOO[KBB [K   reg [31:0] header;
5049:[K [K [KESCESC[KOO[KBB [K
5050:[K [K [KESCESC[KOO[KBB [K   reg done_nxt;
5051:[K [K [KESCESC[KOO[KBB [K   wire last_word;
5052:[K [K [KESCESC[KOO[KBB [K
5053:[K [K [KESCESC[KOO[KBB [K   reg enable_lfsr;
5054:[K [K [KESCESC[KOO[KBB [K
5055:[K [K [KESCESC[KOO[KBB [K   reg sel_payload;
5056:[K [K [KESCESC[KOO[KBB [K
5057:[K [K [KESCESC[KOO[KBB [K
5058:[K [K [KESCESC[KOO[KBB [K
5059:[K [K [KESCESC[KOO[KBB [K   // =================================
5060:[K [K [KESCESC[KOO[KBB [K   // Main state machine responsible for packet transmission
5061:[K [K [KESCESC[KOO[KBB [K   // Tracks the current word and places data on the output signals
5062:[K [K [KESCESC[KOO[KBB [K
5063:[K [K [KESCESC[KOO[KBB [K   // Generate the last word signal
5064:[K [K [KESCESC[KOO[KBB [K   assign last_word = count == num_words - 1;
5065:[K [K [KESCESC[KOO[KBB [K
5066:[K [K [KESCESC[KOO[KBB [K   always @(posedge clk)
5067:[K [K [KESCESC[KOO[KBB [K   begin
5068:[K [K [KESCESC[KOO[KBB [K      // Track the count and calculate the data to send
5069:[K [K [KESCESC[KOO[KBB [K      if (reset) begin
5070:[K [K [KESCESC[KOO[KBB [K         count <= 'h0;
5071:[K [K [KESCESC[KOO[KBB [K         enable_lfsr <= 1'b0;
5072:[K [K [KESCESC[KOO[KBB [K         final_ctrl <= 4'b0000;
5073:[K [K [KESCESC[KOO[KBB [K         num_words <= {9{1'b1}};
5074:[K [K [KESCESC[KOO[KBB [K         ctrl <= 'h0;
5075:[K [K [KESCESC[KOO[KBB [K         done <= 1'b0;
5076:[K [K [KESCESC[KOO[KBB [K         busy <= 1'b0;
5077:[K [K [KESCESC[KOO[KBB [K         sel_payload <= 1'b0;
5078:[K [K [KESCESC[KOO[KBB [K         header <= 'h0;
5079:[K [K [KESCESC[KOO[KBB [K      end
5080:[K [K [KESCESC[KOO[KBB [K      else if (rd_en) begin
5081:[K [K [KESCESC[KOO[KBB [K         if (last_word) begin
5082:[K [K [KESCESC[KOO[KBB [K            // If we are on the last word we should reset the
5083:[K [K [KESCESC[KOO[KBB [K            // counter and move to the next pattern
5084:[K [K [KESCESC[KOO[KBB [K            //
5085:[K [K [KESCESC[KOO[KBB [K            // Don't reset the LFSR here as the output may not
5086:[K [K [KESCESC[KOO[KBB [K            // have been processed yet
5087:[K [K [KESCESC[KOO[KBB [K            count <= 'h0;
5088:[K [K [KESCESC[KOO[KBB [K            final_ctrl <= 4'b0000;
5089:[K [K [KESCESC[KOO[KBB [K            num_words <= {9{1'b1}};
5090:[K [K [KESCESC[KOO[KBB [K            ctrl <= final_ctrl;
5091:[K [K [KESCESC[KOO[KBB [K            done <= 1'b1;
5092:[K [K [KESCESC[KOO[KBB [K            sel_payload <= 1'b1;
5093:[K [K [KESCESC[KOO[KBB [K            header <= header_nxt;
5094:[K [K [KESCESC[KOO[KBB [K         end
5095:[K [K [KESCESC[KOO[KBB [K         else begin
5096:[K [K [KESCESC[KOO[KBB [K            // Record the size and pattern if we're
5097:[K [K [KESCESC[KOO[KBB [K            // on the appropriate word
5098:[K [K [KESCESC[KOO[KBB [K            if (count == SIZE_PATTERN) begin
5099:[K [K [KESCESC[KOO[KBB [K               // Work out how many words we expect to send
5100:[K [K [KESCESC[KOO[KBB [K               num_words <= pkt_size[10:2] + (|pkt_size[1:0]);
5101:[K [K [KESCESC[KOO[KBB [K
5102:[K [K [KESCESC[KOO[KBB [K               // Calculate the control bits for the final word
5103:[K [K [KESCESC[KOO[KBB [K               case (pkt_size[1:0])
5104:[K [K [KESCESC[KOO[KBB [K                  2'd0 : final_ctrl <= 4'b0001;
5105:[K [K [KESCESC[KOO[KBB [K                  2'd1 : final_ctrl <= 4'b1000;
5106:[K [K [KESCESC[KOO[KBB [K                  2'd2 : final_ctrl <= 4'b0100;
5107:[K [K [KESCESC[KOO[KBB [K                  2'd3 : final_ctrl <= 4'b0010;
5108:[K [K [KESCESC[KOO[KBB [K               endcase
5109:[K [K [KESCESC[KOO[KBB [K            end
5110:[K [K [KESCESC[KOO[KBB [K
5111:[K [K [KESCESC[KOO[KBB [K            // Enable the LFSR if appropriate
5112:[K [K [KESCESC[KOO[KBB [K            if (count == START_LFSR)
5113:[K [K [KESCESC[KOO[KBB [K               enable_lfsr <= 1'b1;
5114:[K [K [KESCESC[KOO[KBB [K            else if (count == 'h0)
5115:[K [K [KESCESC[KOO[KBB [K               enable_lfsr <= 1'b0;
5116:[K [K [KESCESC[KOO[KBB [K
5117:[K [K [KESCESC[KOO[KBB [K            // If we are not on the last word then we should increment the
5118:[K [K [KESCESC[KOO[KBB [K            // counter but don't touch the pattern
5119:[K [K [KESCESC[KOO[KBB [K            count <= count + 'h1;
5120:[K [K [KESCESC[KOO[KBB [K            header <= header_nxt;
5121:[K [K [KESCESC[KOO[KBB [K            ctrl <= 'h0;
5122:[K [K [KESCESC[KOO[KBB [K            done <= 1'b0;
5123:[K [K [KESCESC[KOO[KBB [K            if (count == 'h0)
5124:[K [K [KESCESC[KOO[KBB [K               sel_payload <= 1'b0;
5125:[K [K [KESCESC[KOO[KBB [K            else if (count == SEQUENCE_NO)
5126:[K [K [KESCESC[KOO[KBB [K               sel_payload <= 1'b1;
5127:[K [K [KESCESC[KOO[KBB [K         end
5128:[K [K [KESCESC[KOO[KBB [K         busy <= 1'b1;
5129:[K [K [KESCESC[KOO[KBB [K      end
5130:[K [K [KESCESC[KOO[KBB [K      else if (count == 'h0)
5131:[K [K [KESCESC[KOO[KBB [K         busy <= 1'b0;
5132:[K [K [KESCESC[KOO[KBB [K   end
5133:[K [K [KESCESC[KOO[KBB [K
5134:[K [K [KESCESC[KOO[KBB [K   assign data = sel_payload ? payload : header;
5135:[K [K [KESCESC[KOO[KBB [K
5136:[K [K [KESCESC[KOO[KBB [K
5137:[K [K [KESCESC[KOO[KBB [K
5138:[K [K [KESCESC[KOO[KBB [K   // =================================
5139:[K [K [KESCESC[KOO[KBB [K   // Muxes to work out what data to transmit
5140:[K [K [KESCESC[KOO[KBB [K
5141:[K [K [KESCESC[KOO[KBB [K   always @*
5142:[K [K [KESCESC[KOO[KBB [K   begin
5143:[K [K [KESCESC[KOO[KBB [K      case (count)
5144:[K [K [KESCESC[KOO[KBB [K         //DA_HI       : header_nxt = 32'h 00_ca_fe_00;
5145:[K [K [KESCESC[KOO[KBB [K         DA_LO_SA_HI : header_nxt = {8'h 01, 5'd0, port, 16'h 00_ca};
5146:[K [K [KESCESC[KOO[KBB [K         SA_LO       : header_nxt = {24'h fe_00_00, 5'd0, port};
5147:[K [K [KESCESC[KOO[KBB [K         SIZE_PATTERN: header_nxt = {4'hf, 1'b0, pkt_size, 8'd0, {(8 - NUM_PATTERNS){1'b0}}, pattern};
5148:[K [K [KESCESC[KOO[KBB [K         default     : header_nxt = 32'h 00_ca_fe_00;
5149:[K [K [KESCESC[KOO[KBB [K      endcase
5150:[K [K [KESCESC[KOO[KBB [K   end
5151:[K [K [KESCESC[KOO[KBB [K
5152:[K [K [KESCESC[KOO[KBB [K   always @*
5153:[K [K [KESCESC[KOO[KBB [K   begin
5154:[K [K [KESCESC[KOO[KBB [K      case (pattern)
5155:[K [K [KESCESC[KOO[KBB [K         ALL_0_PATTERN  : payload = 32'h 00000000;
5156:[K [K [KESCESC[KOO[KBB [K         ALL_1_PATTERN  : payload = 32'h ffffffff;
5157:[K [K [KESCESC[KOO[KBB [K         ALT_01_PATTERN : payload = 32'h 55555555;
5158:[K [K [KESCESC[KOO[KBB [K         ALT_10_PATTERN : payload = 32'h aaaaaaaa;
5159:[K [K [KESCESC[KOO[KBB [K         default        : payload = rand_data;
5160:[K [K [KESCESC[KOO[KBB [K      endcase
5161:[K [K [KESCESC[KOO[KBB [K   end
5162:[K [K [KESCESC[KOO[KBB [K
5163:[K [K [KESCESC[KOO[KBB [K
5164:[K [K [KESCESC[KOO[KBB [K
5165:[K [K [KESCESC[KOO[KBB [K   // =================================
5166:[K [K [KESCESC[KOO[KBB [K   // LFSR to generate random patterns
5167:[K [K [KESCESC[KOO[KBB [K   //
5168:[K [K [KESCESC[KOO[KBB [K   // The LFSR should only progress when we are generating a random pattern at
5169:[K [K [KESCESC[KOO[KBB [K   // only when we are in the payload section.
5170:[K [K [KESCESC[KOO[KBB [K   //
5171:[K [K [KESCESC[KOO[KBB [K   // The first word should actually be repeated twice in the payload to allow
5172:[K [K [KESCESC[KOO[KBB [K   // the receiver to start an identical LFSR
5173:[K [K [KESCESC[KOO[KBB [K   lfsr32 patgen (
5174:[K [K [KESCESC[KOO[KBB [K      .val (rand_data),
5175:[K [K [KESCESC[KOO[KBB [K      .rd (pattern == RANDOM_PATTERN && rd_en && enable_lfsr),
5176:[K [K [KESCESC[KOO[KBB [K      .seed (seq_no),
5177:[K [K [KESCESC[KOO[KBB [K      .reset (reset || !enable_lfsr),
5178:[K [K [KESCESC[KOO[KBB [K      .clk (clk)
5179:[K [K [KESCESC[KOO[KBB [K   );
5180:[K [K [KESCESC[KOO[KBB [K
5181:[K [K [KESCESC[KOO[KAA [K[HM
5182[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
5183[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
5184[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   assign data = sel_payload ? payload : header;
5185[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
5186[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM   end
5187[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         busy <= 1'b0;
5188[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      else if (count == 'h0)
5189[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM      end
5190[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         busy <= 1'b1;
5191[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM         end
5192[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               sel_payload <= 1'b1;
5193[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            else if (count == SEQUENCE_NO)
5194[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               sel_payload <= 1'b0;
5195[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            if (count == 'h0)
5196[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            done <= 1'b0;
5197[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            ctrl <= 'h0;
5198[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            header <= header_nxt;
5199[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            count <= count + 'h1;
5200[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // counter but don't touch the pattern
5201[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // If we are not on the last word then we should increment the
5202[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
5203[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               enable_lfsr <= 1'b0;
5204[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            else if (count == 'h0)
5205[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               enable_lfsr <= 1'b1;
5206[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            if (count == START_LFSR)
5207[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            // Enable the LFSR if appropriate
5208[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM
5209[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM            end
5210[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               endcase
5211[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd3 : final_ctrl <= 4'b0010;
5212[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd2 : final_ctrl <= 4'b0100;
5213[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd1 : final_ctrl <= 4'b1000;
5214[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM                  2'd0 : final_ctrl <= 4'b0001;
5215[44;1H [K:[K [K [KESCESC[KOO[KAA [K[HM               case (pkt_size[1:0])