mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 05:00:53 +07:00
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>
This commit is contained in:
parent
64d0793109
commit
f6ce5cca74
@ -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++;
|
||||||
|
Loading…
Reference in New Issue
Block a user