Hi,

OK, I am still a network klutz.  The attached patch changes netif_rx to call 
netif_receive_skb directly instead of going through softnet.  It works with 
my e1000 here, but eventually oopses under moderate load.  I see that a few 
drivers use netif_receive_skb directly, sometimes together with NAPI.  But I 
must have missed some assumption, at least with the e1000 driver.  Any 
suggestion?  The oops happens almost immediately if I add a printk.

I need to put a serial cable on the box so I can see what the oops actually 
is.

Regards,

Daniel
diff -up --recursive 2.6.12.3.clean/net/core/dev.c 2.6.12.3/net/core/dev.c
--- 2.6.12.3.clean/net/core/dev.c	2005-07-15 17:18:57.000000000 -0400
+++ 2.6.12.3/net/core/dev.c	2005-08-05 11:47:23.000000000 -0400
@@ -1456,6 +1456,11 @@ int netif_rx(struct sk_buff *skb)
 	if (netpoll_rx(skb))
 		return NET_RX_DROP;
 
+	if (1) {
+                netif_receive_skb(skb);
+                return NET_RX_SUCCESS;
+        }
+
 	if (!skb->stamp.tv_sec)
 		net_timestamp(&skb->stamp);
 

Reply via email to