Commit 2e27afb300b56d83bb03fbfa68852b9c1e2920c6

Authored by Linus Torvalds
1 parent c2dc1ad582

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>

Showing 2 changed files with 0 additions and 18 deletions Side-by-side Diff

include/linux/netdevice.h
... ... @@ -262,8 +262,6 @@
262 262 __LINK_STATE_LINKWATCH_PENDING,
263 263 __LINK_STATE_DORMANT,
264 264 __LINK_STATE_QDISC_RUNNING,
265   - /* Set by the netpoll NAPI code */
266   - __LINK_STATE_POLL_LIST_FROZEN,
267 265 };
268 266  
269 267  
... ... @@ -1021,14 +1019,6 @@
1021 1019 static inline void netif_rx_complete(struct net_device *dev)
1022 1020 {
1023 1021 unsigned long flags;
1024   -
1025   -#ifdef CONFIG_NETPOLL
1026   - /* Prevent race with netpoll - yes, this is a kludge.
1027   - * But at least it doesn't penalize the non-netpoll
1028   - * code path. */
1029   - if (test_bit(__LINK_STATE_POLL_LIST_FROZEN, &dev->state))
1030   - return;
1031   -#endif
1032 1022  
1033 1023 local_irq_save(flags);
1034 1024 __netif_rx_complete(dev);
... ... @@ -124,13 +124,6 @@
124 124 if (test_bit(__LINK_STATE_RX_SCHED, &np->dev->state) &&
125 125 npinfo->poll_owner != smp_processor_id() &&
126 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 127 npinfo->rx_flags |= NETPOLL_RX_DROP;
135 128 atomic_inc(&trapped);
136 129  
... ... @@ -138,7 +131,6 @@
138 131  
139 132 atomic_dec(&trapped);
140 133 npinfo->rx_flags &= ~NETPOLL_RX_DROP;
141   - clear_bit(__LINK_STATE_POLL_LIST_FROZEN, &np->dev->state);
142 134 spin_unlock(&npinfo->poll_lock);
143 135 }
144 136 }