Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bfaae0f04c68bafc12ec50c6922d71a90deea3e2
Commit:     bfaae0f04c68bafc12ec50c6922d71a90deea3e2
Parent:     45542479fb261342d5244869cf3ca4636b7ffd43
Author:     Jeff Garzik <[EMAIL PROTECTED]>
AuthorDate: Wed Oct 17 23:26:43 2007 -0700
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 17 23:26:43 2007 -0700

    [NET]: fix carrier-on bug?
    
    While looking at a net driver with the following construct,
    
        if (!netif_carrier_ok(dev))
                netif_carrier_on(dev);
    
    it stuck me that the netif_carrier_ok() check was redundant, since
    netif_carrier_on() checks bit __LINK_STATE_NOCARRIER anyway.  This is
    the same reason why netif_queue_stopped() need not be called prior to
    netif_wake_queue().
    
    This is true, but there is however an unwanted side effect from assuming
    that netif_carrier_on() can be called multiple times:  it touches the
    watchdog, regardless of pre-existing carrier state.
    
    The fix:  move watchdog-up inside the bit-cleared code path.
    
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/sched/sch_generic.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 95ae119..e01d576 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -249,10 +249,11 @@ static void dev_watchdog_down(struct net_device *dev)
  */
 void netif_carrier_on(struct net_device *dev)
 {
-       if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state))
+       if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) {
                linkwatch_fire_event(dev);
-       if (netif_running(dev))
-               __netdev_watchdog_up(dev);
+               if (netif_running(dev))
+                       __netdev_watchdog_up(dev);
+       }
 }
 
 /**
-
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