2012-02-20 22:36:15

by Mark Einon

[permalink] [raw]
Subject: [PATCH] staging: et131x: 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 stops the 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: Mark Einon <[email protected]>
---
drivers/staging/et131x/et131x.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/et131x/et131x.c b/drivers/staging/et131x/et131x.c
index 2c4069f..b4167ad 100644
--- a/drivers/staging/et131x/et131x.c
+++ b/drivers/staging/et131x/et131x.c
@@ -3109,7 +3109,7 @@ static struct rfd *nic_rx_pkts(struct et131x_adapter *adapter)
skb->protocol = eth_type_trans(skb, adapter->netdev);
skb->ip_summed = CHECKSUM_NONE;

- netif_rx(skb);
+ netif_rx_ni(skb);
} else {
rfd->len = 0;
}
--
1.7.7.6