Thread (4 messages) 4 messages, 3 authors, 2004-09-20

Re: [PATCH 2.6] natsemi.c NAPI

From: "David S. Miller" <davem@davemloft.net>
Date: 2004-09-20 18:57:46

On Mon, 20 Sep 2004 16:10:30 +0200
Harald Welte [off-list ref] wrote:
+static inline void natsemi_irq_enable(struct netdev_private *np)
+{
+	/* Enable interrupts by setting the interrupt mask. */
+	writel(DEFAULT_INTR, np->base_addr + IntrMask);
+	writel(1, np->base_addr + IntrEnable);
+	mb();
+}
+
+static inline void natsemi_irq_disable(struct netdev_private *np)
+{
+	writel(0, np->base_addr + IntrEnable);
+	mb();
+}
Kill the mb(), try using:

	readl(np->base_addr + IntrEnable);

in it's place.

This driver (before the NAPI patch) is a bit buggy, it does
no RX processing SMP locking.  So if one one cpu you're doing
RX interrupt processing, and on another cpu tx_timeout() runs
we're totally screwed.

This is not caused by Harald's patch, but there are implications
for his NAPI patch once it is fixed.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help