Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2e27afb300b56d83bb03fbfa68852b9c1e2920c6
Commit:     2e27afb300b56d83bb03fbfa68852b9c1e2920c6
Parent:     c2dc1ad582196208a2f990eb0230eb922046c684
Author:     Linus Torvalds <[EMAIL PROTECTED]>
AuthorDate: Mon Jul 16 14:31:08 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Mon Jul 16 14:31:08 2007 -0700

    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 <[EMAIL PROTECTED]>
    Cc: Olaf Kirch <[EMAIL PROTECTED]>
    Cc: David Miller <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 include/linux/netdevice.h |   10 ----------
 net/core/netpoll.c        |    8 --------
 2 files changed, 0 insertions(+), 18 deletions(-)

diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 322b5ea..da7a13c 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -262,8 +262,6 @@ enum netdev_state_t
        __LINK_STATE_LINKWATCH_PENDING,
        __LINK_STATE_DORMANT,
        __LINK_STATE_QDISC_RUNNING,
-       /* Set by the netpoll NAPI code */
-       __LINK_STATE_POLL_LIST_FROZEN,
 };
 
 
@@ -1022,14 +1020,6 @@ static inline void netif_rx_complete(struct net_device 
*dev)
 {
        unsigned long flags;
 
-#ifdef CONFIG_NETPOLL
-       /* Prevent race with netpoll - yes, this is a kludge.
-        * But at least it doesn't penalize the non-netpoll
-        * code path. */
-       if (test_bit(__LINK_STATE_POLL_LIST_FROZEN, &dev->state))
-               return;
-#endif
-
        local_irq_save(flags);
        __netif_rx_complete(dev);
        local_irq_restore(flags);
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index d1264e9..de1b26a 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -124,13 +124,6 @@ static void poll_napi(struct netpoll *np)
        if (test_bit(__LINK_STATE_RX_SCHED, &np->dev->state) &&
            npinfo->poll_owner != smp_processor_id() &&
            spin_trylock(&npinfo->poll_lock)) {
-               /* When calling dev->poll from poll_napi, we may end up in
-                * netif_rx_complete. However, only the CPU to which the
-                * device was queued is allowed to remove it from poll_list.
-                * Setting POLL_LIST_FROZEN tells netif_rx_complete
-                * to leave the NAPI state alone.
-                */
-               set_bit(__LINK_STATE_POLL_LIST_FROZEN, &np->dev->state);
                npinfo->rx_flags |= NETPOLL_RX_DROP;
                atomic_inc(&trapped);
 
@@ -138,7 +131,6 @@ static void poll_napi(struct netpoll *np)
 
                atomic_dec(&trapped);
                npinfo->rx_flags &= ~NETPOLL_RX_DROP;
-               clear_bit(__LINK_STATE_POLL_LIST_FROZEN, &np->dev->state);
                spin_unlock(&npinfo->poll_lock);
        }
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to