diff options
Diffstat (limited to 'net/atm/lec.c')
-rw-r--r-- | net/atm/lec.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/net/atm/lec.c b/net/atm/lec.c index eb94e94bffa9..29acfb0e6d04 100644 --- a/net/atm/lec.c +++ b/net/atm/lec.c | |||
@@ -1442,7 +1442,7 @@ static void lane2_associate_ind(struct net_device *dev, u8 *mac_addr, | |||
1442 | 1442 | ||
1443 | #define LEC_ARP_REFRESH_INTERVAL (3*HZ) | 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 | static void lec_arp_expire_arp(unsigned long data); | 1446 | static void lec_arp_expire_arp(unsigned long data); |
1447 | 1447 | ||
1448 | /* | 1448 | /* |
@@ -1465,11 +1465,8 @@ static void lec_arp_init(struct lec_priv *priv) | |||
1465 | INIT_HLIST_HEAD(&priv->lec_no_forward); | 1465 | INIT_HLIST_HEAD(&priv->lec_no_forward); |
1466 | INIT_HLIST_HEAD(&priv->mcast_fwds); | 1466 | INIT_HLIST_HEAD(&priv->mcast_fwds); |
1467 | spin_lock_init(&priv->lec_arp_lock); | 1467 | spin_lock_init(&priv->lec_arp_lock); |
1468 | init_timer(&priv->lec_arp_timer); | 1468 | INIT_WORK(&priv->lec_arp_work, lec_arp_check_expire, priv); |
1469 | priv->lec_arp_timer.expires = jiffies + LEC_ARP_REFRESH_INTERVAL; | 1469 | schedule_delayed_work(&priv->lec_arp_work, 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); | ||
1473 | } | 1470 | } |
1474 | 1471 | ||
1475 | static void lec_arp_clear_vccs(struct lec_arp_table *entry) | 1472 | static void lec_arp_clear_vccs(struct lec_arp_table *entry) |
@@ -1719,7 +1716,7 @@ static void lec_arp_destroy(struct lec_priv *priv) | |||
1719 | struct lec_arp_table *entry; | 1716 | struct lec_arp_table *entry; |
1720 | int i; | 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 | * Remove all entries | 1722 | * Remove all entries |
@@ -1865,10 +1862,10 @@ static void lec_arp_expire_vcc(unsigned long data) | |||
1865 | * to ESI_FORWARD_DIRECT. This causes the flush period to end | 1862 | * to ESI_FORWARD_DIRECT. This causes the flush period to end |
1866 | * regardless of the progress of the flush protocol. | 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 | unsigned long flags; | 1867 | unsigned long flags; |
1871 | struct lec_priv *priv = (struct lec_priv *)data; | 1868 | struct lec_priv *priv = data; |
1872 | struct hlist_node *node, *next; | 1869 | struct hlist_node *node, *next; |
1873 | struct lec_arp_table *entry; | 1870 | struct lec_arp_table *entry; |
1874 | unsigned long now; | 1871 | unsigned long now; |
@@ -1930,7 +1927,7 @@ static void lec_arp_check_expire(unsigned long data) | |||
1930 | } | 1927 | } |
1931 | spin_unlock_irqrestore(&priv->lec_arp_lock, flags); | 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 | /* |