Thread (2 messages) 2 messages, 2 authors, 2004-04-21

Re: Problem with Netpoll based netdumping and NAPI

From: Hariprasad Nellitheertha <hidden>
Date: 2004-04-21 06:02:39
Also in: lkml

Hi Matt,

On Mon, Apr 19, 2004 at 12:42:54PM -0500, Matt Mackall wrote:
[changed cc: from linux-net to netdev]

On Mon, Apr 19, 2004 at 06:21:48PM +0530, Hariprasad Nellitheertha wrote:
quoted
Hi All,

I am facing a problem while trying to network dump using LKCD. My 
debugging so far indicates that this is due to both NAPI and NETPOLL 
being enabled.

I am using LKCD on the 2.6.5 kernel and both the client and server are 
i386 boxes. The dumping machine has an e100 card. I have built the kernel
with both CONFIG_E100_NAPI and CONFIG_NET_POLL_CONTROLLER (and the other
netpoll related options) selected.

LKCD uses netpoll for its network dump implementation. The problem we see
is that the network dump driver does not receive any packet from the 
card driver and hence dumping fails. In e100_intr(), we call 
netif_rx_schedule() if we are using the NAPI feature. netif_rx_schedule, 
in turn, ends up adding the processing of this packet to the NET_RX_SOFTIRQ 
softirq.
Netpoll should be manually calling the NAPI poll function like this 
after calling the interrupt handler (in netpoll_poll()):

      /* If scheduling is stopped, tickle NAPI bits */
         if(trapped && np->dev->poll &&
            test_bit(__LINK_STATE_RX_SCHED, &np->dev->state))
                 np->dev->poll(np->dev, &budget);

Please ensure that LKCD is calling netpoll_set_trap(1) which tells it
that packet scheduling is stopped.
This was indeed the problem. We were not calling netpoll_set_trap in LKCD.
Adding this fixed the problem. Thanks so much for your help with this.

Regards, Hari
I've tested this path primarily with tg3 and kgdb-over-ethernet, but
it should be functionally quite similar to e100 and lkcd.

-- 
Matt Mackall : http://www.selenic.com : Linux development and consulting
-- 
Hariprasad Nellitheertha
Linux Technology Center
India Software Labs
IBM India, Bangalore
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help