Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6ce5cca authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Linus Torvalds
Browse files

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: default avatarMikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 64d07931
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -663,7 +663,7 @@ plip_receive_packet(struct net_device *dev, struct net_local *nl,
	case PLIP_PK_DONE:
	case PLIP_PK_DONE:
		/* Inform the upper layer for the arrival of a packet. */
		/* Inform the upper layer for the arrival of a packet. */
		rcv->skb->protocol=plip_type_trans(rcv->skb, dev);
		rcv->skb->protocol=plip_type_trans(rcv->skb, dev);
		netif_rx(rcv->skb);
		netif_rx_ni(rcv->skb);
		dev->last_rx = jiffies;
		dev->last_rx = jiffies;
		dev->stats.rx_bytes += rcv->length.h;
		dev->stats.rx_bytes += rcv->length.h;
		dev->stats.rx_packets++;
		dev->stats.rx_packets++;