aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-16 17:31:08 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-16 17:31:08 -0400
commit2e27afb300b56d83bb03fbfa68852b9c1e2920c6 (patch)
tree32e38acc1602042260f13cceaf3a29792affb05b /net
parentc2dc1ad582196208a2f990eb0230eb922046c684 (diff)
Revert "[NET]: Fix races in net_rx_action vs netpoll."
This reverts commit 29578624e354f56143d92510fff33a8b2aaa2c03. Ingo Molnar reports complete breakage with his e1000 card (no networking, card reports transmit timeouts), and bisected it down to this commit. Let's figure out what went wrong, but not keep breaking machines until we do. Cc: Ingo Molnar <mingo@elte.hu> Cc: Olaf Kirch <olaf.kirch@oracle.com> Cc: David Miller <davem@davemloft.net> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net')
-rw-r--r--net/core/netpoll.c8
1 files changed, 0 insertions, 8 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index d1264e9a50a8..de1b26aa5720 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -124,13 +124,6 @@ static void poll_napi(struct netpoll *np)
124 if (test_bit(__LINK_STATE_RX_SCHED, &np->dev->state) && 124 if (test_bit(__LINK_STATE_RX_SCHED, &np->dev->state) &&
125 npinfo->poll_owner != smp_processor_id() && 125 npinfo->poll_owner != smp_processor_id() &&
126 spin_trylock(&npinfo->poll_lock)) { 126 spin_trylock(&npinfo->poll_lock)) {
127 /* When calling dev->poll from poll_napi, we may end up in
128 * netif_rx_complete. However, only the CPU to which the
129 * device was queued is allowed to remove it from poll_list.
130 * Setting POLL_LIST_FROZEN tells netif_rx_complete
131 * to leave the NAPI state alone.
132 */
133 set_bit(__LINK_STATE_POLL_LIST_FROZEN, &np->dev->state);
134 npinfo->rx_flags |= NETPOLL_RX_DROP; 127 npinfo->rx_flags |= NETPOLL_RX_DROP;
135 atomic_inc(&trapped); 128 atomic_inc(&trapped);
136 129
@@ -138,7 +131,6 @@ static void poll_napi(struct netpoll *np)
138 131
139 atomic_dec(&trapped); 132 atomic_dec(&trapped);
140 npinfo->rx_flags &= ~NETPOLL_RX_DROP; 133 npinfo->rx_flags &= ~NETPOLL_RX_DROP;
141 clear_bit(__LINK_STATE_POLL_LIST_FROZEN, &np->dev->state);
142 spin_unlock(&npinfo->poll_lock); 134 spin_unlock(&npinfo->poll_lock);
143 } 135 }
144} 136}