Subject: Re: [RFC PATCH v0.1] net driver: mpc52xx fec

From: Juergen Beisert <[email-masked]>
Date: Mon, 1 Oct 2007 10:35:23 +0200

On Friday 28 September 2007 17:38, Jon Smirl wrote:
> On 9/28/07, Juergen Beisert <[email-masked]> wrote:
> > But I can't run it a second time, as the network on target's side doesn't
> > respond. Any idea?
>
> Do the stress tests complete on a non-rt kernel?

I tried it again:

1) Target runs 2.6.23-rc8 without rt-preempt:

@host$ nmap 192.168.23.226

Starting Nmap 4.20 ( http://insecure.org ) at 2007-10-01 10:20 CEST
Interesting ports on 192.168.23.226:
Not shown: 1695 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
23/tcp open  telnet

Nmap finished: 1 IP address (1 host up) scanned in 0.581 seconds

Target continues to work. Does not make a difference if the root filesystem is 
jffs2 or nfs.

2) Same target runs 2.6.23-rc8-rt1

@host$ nmap 192.168.23.226

Starting Nmap 4.20 ( http://insecure.org ) at 2007-10-01 10:15 CEST
Interesting ports on 192.168.23.226:
Not shown: 871 filtered ports, 824 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
23/tcp open  telnet

Nmap finished: 1 IP address (1 host up) scanned in 14.116 seconds

Network on target dies. But can be reactivated by an "ifconfig eth0 down; 
ifconfig eth0 up". I included some printk statements into the fec.c source to 
see what interrupts are happen.

"r" means fec_rx_interrupt was entered, "t" means fec_tx_interrupt was entered 
and "p" means fec_interrupt was entered. This is the output of the 
nmap "attack" above:

rtrtrrr
 at this point: fec_hard_start_xmit, stop queue
rrt
 at this point: fec_tx_interrupt, wake queue
ttrr
 at this point: fec_hard_start_xmit, stop queue
rrt
 at this point: fec_tx_interrupt, wake queue
ttrr
 at this point: fec_hard_start_xmit, stop queue
rrt
 at this point: fec_tx_interrupt, wake queue
ttrr
 at this point: fec_hard_start_xmit, stop queue
rrt
 at this point: fec_tx_interrupt, wake queue
ttrr
 at this point: fec_hard_start_xmit, stop queue
rrt
 at this point: fec_tx_interrupt, wake queue
ttrr
 at this point: fec_hard_start_xmit, stop queue
rrt
 at this point: fec_tx_interrupt, wake queue
ttr
 at this point: fec_hard_start_xmit, stop queue
rrt
 at this point: fec_tx_interrupt, wake queue
 at this point: fec_hard_start_xmit, stop queue
t
 at this point: fec_tx_interrupt, wake queue
tp
<7>net eth0: ievent: 08020000

...at this point the network is dead.

BTW: Without rt-preempt none of the wake/stop queue events and no 
fec_interrupt occurs. I only see a long list of "r"s and "t"s...

Juergen

-- 
Dipl.-Ing. Juergen Beisert | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
    Handelsregister: Amtsgericht Hildesheim, HRA 2686
         Vertretung Sued/Muenchen, Germany
   Phone: +49-8766-939 228 |  Fax: +49-5121-206917-9