Fix "NOHZ: local_softirq_pending 08" message.
authorBen Pfaff <blp@nicira.com>
Tue, 10 Jun 2008 21:41:04 +0000 (14:41 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 10 Jun 2008 21:41:04 +0000 (14:41 -0700)
Only call netif_rx within an interrupt.
Outside an interrupt, netif_rx_in has to be used.

datapath/dp_dev.c

index 5ac74d1..4898137 100644 (file)
@@ -29,7 +29,10 @@ int dp_dev_recv(struct net_device *netdev, struct sk_buff *skb)
        struct dp_dev *dp_dev = dp_dev_priv(netdev);
        skb->pkt_type = PACKET_HOST;
        skb->protocol = eth_type_trans(skb, netdev);
-       netif_rx(skb);
+       if (in_interrupt())
+               netif_rx(skb);
+       else
+               netif_rx_ni(skb);
        netdev->last_rx = jiffies;
        dp_dev->stats.rx_packets++;
        dp_dev->stats.rx_bytes += len;