X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=net%2Fcore%2Flink_watch.c;h=f2ed09e25dfd63fdba8d1d9f8e9e16550dfab239;hb=52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c;hp=4b36114744c57f983c8af674ee45610f6e830ac1;hpb=a8c4c20dfa8b28a3c99e33c639d9c2ea5657741e;p=deliverable%2Flinux.git diff --git a/net/core/link_watch.c b/net/core/link_watch.c index 4b36114744c5..f2ed09e25dfd 100644 --- a/net/core/link_watch.c +++ b/net/core/link_watch.c @@ -35,7 +35,7 @@ static unsigned long linkwatch_flags; static unsigned long linkwatch_nextevent; static void linkwatch_event(void *dummy); -static DECLARE_WORK(linkwatch_work, linkwatch_event, NULL); +static DECLARE_DELAYED_WORK(linkwatch_work, linkwatch_event, NULL); static LIST_HEAD(lweventlist); static DEFINE_SPINLOCK(lweventlist_lock); @@ -171,10 +171,9 @@ void linkwatch_fire_event(struct net_device *dev) unsigned long delay = linkwatch_nextevent - jiffies; /* If we wrap around we'll delay it by at most HZ. */ - if (!delay || delay > HZ) - schedule_work(&linkwatch_work); - else - schedule_delayed_work(&linkwatch_work, delay); + if (delay > HZ) + delay = 0; + schedule_delayed_work(&linkwatch_work, delay); } } }