Commit 987e46bdf314c55e060570ff46723d770e461f0e
Committed by
David S. Miller
1 parent
edbc9b014f
Exists in
master
and in
7 other branches
[ATM]: [lec] use work queue instead of timer for lec arp expiry
Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 2 changed files with 8 additions and 11 deletions Side-by-side Diff
net/atm/lec.c
... | ... | @@ -1442,7 +1442,7 @@ |
1442 | 1442 | |
1443 | 1443 | #define LEC_ARP_REFRESH_INTERVAL (3*HZ) |
1444 | 1444 | |
1445 | -static void lec_arp_check_expire(unsigned long data); | |
1445 | +static void lec_arp_check_expire(void *data); | |
1446 | 1446 | static void lec_arp_expire_arp(unsigned long data); |
1447 | 1447 | |
1448 | 1448 | /* |
... | ... | @@ -1465,11 +1465,8 @@ |
1465 | 1465 | INIT_HLIST_HEAD(&priv->lec_no_forward); |
1466 | 1466 | INIT_HLIST_HEAD(&priv->mcast_fwds); |
1467 | 1467 | spin_lock_init(&priv->lec_arp_lock); |
1468 | - init_timer(&priv->lec_arp_timer); | |
1469 | - priv->lec_arp_timer.expires = jiffies + LEC_ARP_REFRESH_INTERVAL; | |
1470 | - priv->lec_arp_timer.data = (unsigned long)priv; | |
1471 | - priv->lec_arp_timer.function = lec_arp_check_expire; | |
1472 | - add_timer(&priv->lec_arp_timer); | |
1468 | + INIT_WORK(&priv->lec_arp_work, lec_arp_check_expire, priv); | |
1469 | + schedule_delayed_work(&priv->lec_arp_work, LEC_ARP_REFRESH_INTERVAL); | |
1473 | 1470 | } |
1474 | 1471 | |
1475 | 1472 | static void lec_arp_clear_vccs(struct lec_arp_table *entry) |
... | ... | @@ -1719,7 +1716,7 @@ |
1719 | 1716 | struct lec_arp_table *entry; |
1720 | 1717 | int i; |
1721 | 1718 | |
1722 | - del_timer_sync(&priv->lec_arp_timer); | |
1719 | + cancel_rearming_delayed_work(&priv->lec_arp_work); | |
1723 | 1720 | |
1724 | 1721 | /* |
1725 | 1722 | * Remove all entries |
1726 | 1723 | |
... | ... | @@ -1865,10 +1862,10 @@ |
1865 | 1862 | * to ESI_FORWARD_DIRECT. This causes the flush period to end |
1866 | 1863 | * regardless of the progress of the flush protocol. |
1867 | 1864 | */ |
1868 | -static void lec_arp_check_expire(unsigned long data) | |
1865 | +static void lec_arp_check_expire(void *data) | |
1869 | 1866 | { |
1870 | 1867 | unsigned long flags; |
1871 | - struct lec_priv *priv = (struct lec_priv *)data; | |
1868 | + struct lec_priv *priv = data; | |
1872 | 1869 | struct hlist_node *node, *next; |
1873 | 1870 | struct lec_arp_table *entry; |
1874 | 1871 | unsigned long now; |
... | ... | @@ -1930,7 +1927,7 @@ |
1930 | 1927 | } |
1931 | 1928 | spin_unlock_irqrestore(&priv->lec_arp_lock, flags); |
1932 | 1929 | |
1933 | - mod_timer(&priv->lec_arp_timer, jiffies + LEC_ARP_REFRESH_INTERVAL); | |
1930 | + schedule_delayed_work(&priv->lec_arp_work, LEC_ARP_REFRESH_INTERVAL); | |
1934 | 1931 | } |
1935 | 1932 | |
1936 | 1933 | /* |
net/atm/lec.h
... | ... | @@ -93,7 +93,7 @@ |
93 | 93 | spinlock_t lec_arp_lock; |
94 | 94 | struct atm_vcc *mcast_vcc; /* Default Multicast Send VCC */ |
95 | 95 | struct atm_vcc *lecd; |
96 | - struct timer_list lec_arp_timer; /* C10 */ | |
96 | + struct work_struct lec_arp_work; /* C10 */ | |
97 | 97 | unsigned int maximum_unknown_frame_count; |
98 | 98 | /* |
99 | 99 | * Within the period of time defined by this variable, the client will send |