Lines Matching +full:non +full:- +full:urgent
1 // SPDX-License-Identifier: GPL-2.0-or-later
51 if (dev->reg_state <= NETREG_REGISTERED)
54 iflink = dev->ifindex;
56 if (iflink == dev->ifindex)
78 if (operstate == READ_ONCE(dev->operstate))
81 switch(dev->link_mode) {
96 WRITE_ONCE(dev->operstate, operstate);
102 /* Handle pre-registration link state changes */
114 if (dev->ifindex != dev_get_iflink(dev))
129 if (list_empty(&dev->link_watch_list)) {
130 list_add_tail(&dev->link_watch_list, &lweventlist);
131 netdev_hold(dev, &dev->linkwatch_dev_tracker, GFP_ATOMIC);
137 static void linkwatch_schedule_work(int urgent)
139 unsigned long delay = linkwatch_nextevent - jiffies;
144 /* Minimise down-time: drop delay for up event. */
145 if (urgent) {
156 * If urgent, schedule immediate execution; otherwise, don't
177 clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state);
180 if (dev->flags & IFF_UP) {
199 /* Use a local list here since we add non-urgent
205 /* Give urgent case more budget */
218 /* Limit wrap-around effect on delay. */
231 list_del_init(&dev->link_watch_list);
235 list_add_tail(&dev->link_watch_list, &lweventlist);
241 netdev_tracker_free(dev, &dev->linkwatch_dev_tracker);
246 do_dev--;
264 if (!list_empty(&dev->link_watch_list)) {
265 list_del_init(&dev->link_watch_list);
270 netdev_tracker_free(dev, &dev->linkwatch_dev_tracker);
311 bool urgent = linkwatch_urgent_event(dev);
313 if (!test_and_set_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state)) {
315 } else if (!urgent)
318 linkwatch_schedule_work(urgent);