Hi Greg, the result of my tests for systems with original fec.c and patched fec.c are similar. The number of TXF and RXF interrupt event in both cases is much greater than the packets received or transmitted. Attached files InLAN_original_fec.txt and InLAN_new_fec.txt include the results after telnet when my board is connected in my LAN.
I isolate the board from LAN connecting it with cross ethernet cable to my
PC. I add traces to fec_enet_interrupt and fec_enet_interrupt_TXF functions
and repeat tests.
The attached file IsoLAN_original_fec_trace include the ethereal traces of
ethernet connection using original fec.c driver and
IsoLAN_original_fec_trace.txt is the trace of the serial console of my
board. The file IsoLAN_new_fec_trace include the ethereal traces of ethernet
connection using patched fec.c driver and IsoLAN_new_fec_trace.txt is the
trace of the serial console of my board. The behaviour in both cases is
similar, but you can see that there is an spurious TXF interrupt (with
events = 0) after real TXF interrupt when I use patched fec.c file.
The calls to TXF interrupt routine are equal to ifconfig TX packet counter
with original fec.c code; and they are double of ifconfig TX packet counter
using patched fec.c file (spurious TXF interrupts). The number of TXF and
RXF interrupt event in both cases is much greater than the packets received
or transmitted.
Finally, I add to the patched fec.c file IRQF_DISABLED flag in request_irq
calls. The file IsoLAN_new_fec_trace_DIS include the ethereal traces of
ethernet connection and IsoLAN_new_fec_trace_DIS.txt is the trace of the
serial console of my board. Using this code, the TXF and RXF event counters
are equals to ifconfig RX and TX packet counters and there are not spurious
TXF interrupts.
What do you thing about it?. May be some problem in system interrupt
controller?
Regards
Alberto
-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
En nombre de Greg Ungerer
Enviado el: jueves, 06 de marzo de 2008 7:55
Para: uClinux development list
Asunto: Re: [uClinux-dev] Re: MCF5282 network stall problem
Hi Juan,
Juan Alberto Muñoz Susin wrote:
> I test the IRQF_DISABLED setting OK.
Thanks.
> I agree about the TX and RX interrupt overlap. I'm sending the full
> patch that I use to solve the problem avoiding setting IRQF_DISABLED.
> It has been generated from 20071001 patch. It has common fixes whith
> Claude´s patch and some additional code modifications, like four
> different interrupt routines, that I think may be usefull to generate
> a patch in next system versions. The main code changes are:
I have tried this (converting it to also work on the 520x I am using for
testing at the moment). It works (as expected), but I am seeing something
odd.
I get a lot of interrup events for each packet. So for example, after
booting and getting a dhcp address I see:
/> ifconfig
eth0 Link encap:Ethernet HWaddr 00:14:15:00:00:17
inet addr:10.46.12.213 Bcast:10.46.12.255 Mask:255.255.255.0
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
/> cat /proc/interrupts
CPU0
68: 958 M68K-INTC timer
90: 1949 M68K-INTC UART
91: 0 M68K-INTC UART
92: 0 M68K-INTC UART
100: 70 M68K-INTC fec(TXF)
101: 0 M68K-INTC fec(TXB)
102: 0 M68K-INTC fec(TXFIFO)
103: 0 M68K-INTC fec(TXCR)
104: 42 M68K-INTC fec(RXF)
105: 0 M68K-INTC fec(RXB)
106: 126 M68K-INTC fec(MII)
107: 0 M68K-INTC fec(LC)
108: 0 M68K-INTC fec(HBERR)
109: 0 M68K-INTC fec(GRA)
110: 0 M68K-INTC fec(EBERR)
111: 0 M68K-INTC fec(BABT)
112: 0 M68K-INTC fec(BABR)
/>
So we have sent 5 packets, but have processed 70 TX events.
That wasn't the case with out these driver changes. It reports
5 TX events in the above case.
Do you see this in your setup?
Regards
Greg
--
------------------------------------------------------------------------
Greg Ungerer -- Chief Software Dude EMAIL: [EMAIL PROTECTED]
Secure Computing Corporation PHONE: +61 7 3435 2888
825 Stanley St, FAX: +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected] To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
Sash command shell (version 1.1.1)
/> [42949405.120000] RXF Int
[42949405.130000] RXF Int
[42949405.140000] In while
[42949405.150000] In while
[42949405.160000] Out break
[42949405.170000] TXF Int
[42949405.180000] In while
[42949405.190000] In while
[42949405.200000] Out break
[42949405.210000] TXF Int
[42949406.070000] RXF Int
[42949406.080000] In while
[42949406.090000] In while
[42949406.100000] Out break
[42949406.110000] TXF Int
[42949407.040000] RXF Int
[42949407.050000] In while
[42949407.060000] In while
[42949407.070000] Out break
[42949407.080000] TXF Int
[42949408.010000] RXF Int
[42949408.020000] In while
[42949408.030000] In while
[42949408.040000] Out break
[42949408.050000] TXF Int
[42949408.990000] RXF Int
[42949409.000000] In while
[42949409.010000] In while
[42949409.020000] Out break
[42949409.030000] TXF Int
[42949409.970000] RXF Int
[42949409.980000] In while
[42949409.990000] In while
[42949410.000000] Out break
[42949410.010000] TXF Int
[42949410.180000] RXF Int
[42949410.190000] In while
[42949410.200000] In while
[42949410.210000] Out break
[42949410.220000] TXF Int
[42949410.930000] RXF Int
[42949410.940000] In while
[42949410.950000] In while
[42949410.960000] Out break
[42949410.970000] TXF Int
[42949411.910000] RXF Int
[42949411.920000] In while
[42949411.930000] In while
[42949411.940000] Out break
[42949411.950000] TXF Int
[42949412.890000] RXF Int
[42949412.900000] In while
[42949412.910000] In while
[42949412.920000] Out break
[42949412.930000] TXF Int
[42949413.870000] RXF Int
[42949413.890000] In while
[42949413.900000] In while
[42949413.920000] Out break
[42949413.930000] TXF Int
ifconfig
eth0 Link encap:Ethernet HWaddr 00:CF:52:55:FC:71
inet addr:192.168.1.36 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
/> more /proc/interrupts
<< /proc/interrupts >>
CPU0
77: 0 M68K-INTC ColdFire UART
78: 0 M68K-INTC ColdFire UART
79: 3307 M68K-INTC ColdFire UART
87: 203 M68K-INTC fec(TXF)
88: 12 M68K-INTC fec(TXB)
89: 0 M68K-INTC fec(TXFIFO)
90: 0 M68K-INTC fec(TXCR)
91: 170 M68K-INTC fec(RXF)
92: 0 M68K-INTC fec(RXB)
93: 221 M68K-INTC fec(MII)
94: 0 M68K-INTC fec(LC)
95: 0 M68K-INTC fec(HBERR)
96: 0 M68K-INTC fec(GRA)
97: 0 M68K-INTC fec(EBERR)
98: 0 M68K-INTC fec(BABT)
99: 0 M68K-INTC fec(BABR)
119: 8743 M68K-INTC timer
/>/> ifconfig
eth0 Link encap:Ethernet HWaddr 00:CF:52:55:FC:71
inet addr:192.168.10.36 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:318 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
/> more /proc/interrupts
<< /proc/interrupts >>
CPU0
69: 0 M68K-INTC Modulo Puertos Plataforma Desarrollo ColdFire
(MPPDCF)
77: 0 M68K-INTC ColdFire UART
78: 0 M68K-INTC ColdFire UART
79: 0 M68K-INTC ColdFire UART
87: 1949 M68K-INTC fec(TXF)
88: 805 M68K-INTC fec(TXB)
89: 0 M68K-INTC fec(TXFIFO)
90: 0 M68K-INTC fec(TXCR)
91: 18612 M68K-INTC fec(RXF)
92: 0 M68K-INTC fec(RXB)
93: 207 M68K-INTC fec(MII)
94: 0 M68K-INTC fec(LC)
95: 0 M68K-INTC fec(HBERR)
96: 0 M68K-INTC fec(GRA)
97: 0 M68K-INTC fec(EBERR)
98: 0 M68K-INTC fec(BABT)
99: 0 M68K-INTC fec(BABR)
119: 4102 M68K-INTC timer
/> ifconfig
eth0 Link encap:Ethernet HWaddr 00:CF:52:55:FC:71
inet addr:192.168.10.36 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:918 errors:0 dropped:0 overruns:0 frame:0
TX packets:175 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
IsoLAN_new_fec_trace
Description: Binary data
Sash command shell (version 1.1.1)
/> [42949415.250000] In while
[42949415.260000] In while
[42949415.270000] Out break
[42949415.280000] Processing TXF interrupt
[42949415.290000] Spurious TXF interrupt: 0
[42949415.300000] In while
[42949415.310000] In while
[42949415.320000] Out break
[42949415.330000] Processing TXF interrupt
[42949415.340000] Spurious TXF interrupt: 0
[42949416.170000] In while
[42949416.180000] In while
[42949416.190000] Out break
[42949416.200000] Processing TXF interrupt
[42949416.210000] Spurious TXF interrupt: 0
[42949417.130000] In while
[42949417.140000] In while
[42949417.150000] Out break
[42949417.160000] Processing TXF interrupt
[42949417.170000] Spurious TXF interrupt: 0
[42949418.090000] In while
[42949418.100000] In while
[42949418.110000] Out break
[42949418.120000] Processing TXF interrupt
[42949418.130000] Spurious TXF interrupt: 0
[42949419.050000] In while
[42949419.060000] In while
[42949419.070000] Out break
[42949419.080000] Processing TXF interrupt
[42949419.090000] Spurious TXF interrupt: 0
[42949420.010000] In while
[42949420.020000] In while
[42949420.030000] Out break
[42949420.040000] Processing TXF interrupt
[42949420.050000] Spurious TXF interrupt: 0
[42949420.300000] In while
[42949420.310000] In while
[42949420.320000] Out break
[42949420.330000] Processing TXF interrupt
[42949420.340000] Spurious TXF interrupt: 0
[42949420.930000] In while
[42949420.940000] In while
[42949420.950000] Out break
[42949420.960000] Processing TXF interrupt
[42949420.970000] Spurious TXF interrupt: 0
[42949421.890000] In while
[42949421.900000] In while
[42949421.910000] Out break
[42949421.930000] Processing TXF interrupt
[42949421.940000] Spurious TXF interrupt: 0
[42949422.860000] In while
[42949422.870000] In while
[42949422.880000] Out break
[42949422.890000] Processing TXF interrupt
[42949422.900000] Spurious TXF interrupt: 0
[42949423.820000] In while
[42949423.830000] In while
[42949423.840000] Out break
[42949423.850000] Processing TXF interrupt
[42949423.860000] Spurious TXF interrupt: 0
[42949424.780000] In while
[42949424.790000] In while
[42949424.800000] Out break
[42949424.810000] Processing TXF interrupt
[42949424.820000] Spurious TXF interrupt: 0
[42949425.740000] In while
[42949425.750000] In while
[42949425.760000] Out break
[42949425.770000] Processing TXF interrupt
[42949425.780000] Spurious TXF interrupt: 0
ifconfig
eth0 Link encap:Ethernet HWaddr 00:CF:52:55:FC:71
inet addr:192.168.1.36 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
/> more /proc/interrupts
<< /proc/interrupts >>
CPU0
77: 0 M68K-INTC ColdFire UART
78: 0 M68K-INTC ColdFire UART
79: 3312 M68K-INTC ColdFire UART
87: 196 M68K-INTC fec(TXF)
88: 0 M68K-INTC fec(TXB)
89: 0 M68K-INTC fec(TXFIFO)
90: 0 M68K-INTC fec(TXCR)
91: 196 M68K-INTC fec(RXF)
92: 0 M68K-INTC fec(RXB)
93: 180 M68K-INTC fec(MII)
94: 0 M68K-INTC fec(LC)
95: 0 M68K-INTC fec(HBERR)
96: 0 M68K-INTC fec(GRA)
97: 0 M68K-INTC fec(EBERR)
98: 0 M68K-INTC fec(BABT)
99: 0 M68K-INTC fec(BABR)
119: 6731 M68K-INTC timer
/>
IsoLAN_new_fec_trace_DIS
Description: Binary data
Sash command shell (version 1.1.1)
/> [42949428.910000] In while
[42949428.910000] In while
[42949428.910000] Out break
[42949428.910000] Processing TXF interrupt
[42949428.920000] In while
[42949428.920000] In while
[42949428.920000] Out break
[42949428.920000] Processing TXF interrupt
[42949429.790000] In while
[42949429.790000] In while
[42949429.790000] Out break
[42949429.790000] Processing TXF interrupt
[42949430.730000] In while
[42949430.730000] In while
[42949430.730000] Out break
[42949430.730000] Processing TXF interrupt
[42949431.670000] In while
[42949431.670000] In while
[42949431.670000] Out break
[42949431.670000] Processing TXF interrupt
[42949432.610000] In while
[42949432.610000] In while
[42949432.610000] Out break
[42949432.610000] Processing TXF interrupt
[42949433.550000] In while
[42949433.550000] In while
[42949433.550000] Out break
[42949433.550000] Processing TXF interrupt
[42949434.490000] In while
[42949434.490000] In while
[42949434.490000] Out break
[42949434.490000] Processing TXF interrupt
[42949435.430000] In while
[42949435.430000] In while
[42949435.430000] Out break
[42949435.430000] Processing TXF interrupt
[42949436.370000] In while
[42949436.370000] In while
[42949436.370000] Out break
[42949436.370000] Processing TXF interrupt
[42949437.310000] In while
[42949437.310000] In while
[42949437.310000] Out break
[42949437.310000] Processing TXF interrupt
[42949438.250000] In while
[42949438.250000] In while
[42949438.250000] Out break
[42949438.250000] Processing TXF interrupt
[42949439.200000] In while
[42949439.200000] In while
[42949439.200000] Out break
[42949439.200000] Processing TXF interrupt
[42949440.150000] In while
[42949440.150000] In while
[42949440.150000] Out break
[42949440.150000] Processing TXF interrupt
[42949441.100000] In while
[42949441.100000] In while
[42949441.100000] Out break
[42949441.100000] Processing TXF interrupt
[42949442.050000] In while
[42949442.050000] In while
[42949442.050000] Out break
[42949442.050000] Processing TXF interrupt
ifconfig
eth0 Link encap:Ethernet HWaddr 00:CF:52:55:FC:71
inet addr:192.168.1.36 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
/> more /proc/interrupts
<< /proc/interrupts >>
CPU0
77: 0 M68K-INTC ColdFire UART
78: 0 M68K-INTC ColdFire UART
79: 3327 M68K-INTC ColdFire UART
87: 16 M68K-INTC fec(TXF)
88: 0 M68K-INTC fec(TXB)
89: 0 M68K-INTC fec(TXFIFO)
90: 0 M68K-INTC fec(TXCR)
91: 21 M68K-INTC fec(RXF)
92: 0 M68K-INTC fec(RXB)
93: 13 M68K-INTC fec(MII)
94: 0 M68K-INTC fec(LC)
95: 0 M68K-INTC fec(HBERR)
96: 0 M68K-INTC fec(GRA)
97: 0 M68K-INTC fec(EBERR)
98: 0 M68K-INTC fec(BABT)
99: 0 M68K-INTC fec(BABR)
119: 8446 M68K-INTC timer
/>
IsoLAN_original_fec_trace
Description: Binary data
/> ifconfig
eth0 Link encap:Ethernet HWaddr 00:CF:52:55:FC:71
inet addr:192.168.10.36 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:274 errors:0 dropped:0 overruns:0 frame:0
TX packets:85 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
/> more /proc/interrupts
<< /proc/interrupts >>
CPU0
69: 0 M68K-INTC Modulo Puertos Plataforma Desarrollo ColdFire
(MPPDCF)
77: 0 M68K-INTC ColdFire UART
78: 0 M68K-INTC ColdFire UART
79: 0 M68K-INTC ColdFire UART
87: 2085 M68K-INTC fec(TXF)
88: 0 M68K-INTC fec(TXB)
89: 0 M68K-INTC fec(TXFIFO)
90: 0 M68K-INTC fec(TXCR)
91: 9310 M68K-INTC fec(RXF)
92: 0 M68K-INTC fec(RXB)
93: 182 M68K-INTC fec(MII)
94: 0 M68K-INTC fec(LC)
95: 0 M68K-INTC fec(HBERR)
96: 0 M68K-INTC fec(GRA)
97: 0 M68K-INTC fec(EBERR)
98: 0 M68K-INTC fec(BABT)
99: 0 M68K-INTC fec(BABR)
119: 4383 M68K-INTC timer
/> ifconfig
eth0 Link encap:Ethernet HWaddr 00:CF:52:55:FC:71
inet addr:192.168.10.36 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:654 errors:0 dropped:0 overruns:0 frame:0
TX packets:169 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
/>
_______________________________________________ uClinux-dev mailing list [email protected] http://mailman.uclinux.org/mailman/listinfo/uclinux-dev This message was resent by [email protected] To unsubscribe see: http://mailman.uclinux.org/mailman/options/uclinux-dev
