aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/plip.c
diff options
context:
space:
mode:
authorMikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>2007-11-22 15:19:39 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-26 22:37:31 -0500
commitf6ce5cca74b8681fdf1d7307edc66a7213b43f6f (patch)
tree0ac74f5244ab0ea0ad07823dc1af848c4571accc /drivers/net/plip.c
parent64d0793109a98abcc2f4bf0c7d8b000fd220cdcd (diff)
plip: use netif_rx_ni() for packet receive
netif_rx is meant to be called from interrupts because it doesn't wake up ksoftirqd. For calling from outside interrupts, netif_rx_ni exists. This fixes plip to use netif_rx_ni. It fixes the infamous error "NOHZ: local_softirq_panding 08" that happens on some machines with NOHZ and plip --- it is caused by the fact that softirq is pending and ksoftirqd is sleeping. Signed-off-by: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/net/plip.c')
-rw-r--r--drivers/net/plip.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/plip.c b/drivers/net/plip.c
index 5071fcd8a0bd..baf2cbfc8863 100644
--- a/drivers/net/plip.c
+++ b/drivers/net/plip.c
@@ -663,7 +663,7 @@ plip_receive_packet(struct net_device *dev, struct net_local *nl,
663 case PLIP_PK_DONE: 663 case PLIP_PK_DONE:
664 /* Inform the upper layer for the arrival of a packet. */ 664 /* Inform the upper layer for the arrival of a packet. */
665 rcv->skb->protocol=plip_type_trans(rcv->skb, dev); 665 rcv->skb->protocol=plip_type_trans(rcv->skb, dev);
666 netif_rx(rcv->skb); 666 netif_rx_ni(rcv->skb);
667 dev->last_rx = jiffies; 667 dev->last_rx = jiffies;
668 dev->stats.rx_bytes += rcv->length.h; 668 dev->stats.rx_bytes += rcv->length.h;
669 dev->stats.rx_packets++; 669 dev->stats.rx_packets++;