aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/atlx/atl1.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@vyatta.com>2008-10-31 19:52:04 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-11-02 08:00:15 -0500
commite053b628d367cd7b39ae2c4bb0124edc2e058a41 (patch)
treee5a5c6ae57e55185f92ea6f453a70a32663b6dbf /drivers/net/atlx/atl1.c
parent02e7173149c3ffcf963075ec2bdc5f7be8335a78 (diff)
atlx: timer cleanup
Do some cleanup on timer usage in this driver: * Use round_jiffies to align wakeups and reduce power. * Remove atl1_watchdog which does nothing but rearm itself * Use setup_timer() function Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/atlx/atl1.c')
-rw-r--r--drivers/net/atlx/atl1.c25
1 files changed, 4 insertions, 21 deletions
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index 6cc47616b6d4..3836e625ba58 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -1390,7 +1390,8 @@ static u32 atl1_check_link(struct atl1_adapter *adapter)
1390 /* auto-neg, insert timer to re-config phy */ 1390 /* auto-neg, insert timer to re-config phy */
1391 if (!adapter->phy_timer_pending) { 1391 if (!adapter->phy_timer_pending) {
1392 adapter->phy_timer_pending = true; 1392 adapter->phy_timer_pending = true;
1393 mod_timer(&adapter->phy_config_timer, jiffies + 3 * HZ); 1393 mod_timer(&adapter->phy_config_timer,
1394 round_jiffies(jiffies + 3 * HZ));
1394 } 1395 }
1395 1396
1396 return 0; 1397 return 0;
@@ -2525,17 +2526,6 @@ static irqreturn_t atl1_intr(int irq, void *data)
2525 return IRQ_HANDLED; 2526 return IRQ_HANDLED;
2526} 2527}
2527 2528
2528/*
2529 * atl1_watchdog - Timer Call-back
2530 * @data: pointer to netdev cast into an unsigned long
2531 */
2532static void atl1_watchdog(unsigned long data)
2533{
2534 struct atl1_adapter *adapter = (struct atl1_adapter *)data;
2535
2536 /* Reset the timer */
2537 mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ);
2538}
2539 2529
2540/* 2530/*
2541 * atl1_phy_config - Timer Call-back 2531 * atl1_phy_config - Timer Call-back
@@ -2608,7 +2598,6 @@ static s32 atl1_up(struct atl1_adapter *adapter)
2608 if (unlikely(err)) 2598 if (unlikely(err))
2609 goto err_up; 2599 goto err_up;
2610 2600
2611 mod_timer(&adapter->watchdog_timer, jiffies);
2612 atlx_irq_enable(adapter); 2601 atlx_irq_enable(adapter);
2613 atl1_check_link(adapter); 2602 atl1_check_link(adapter);
2614 netif_start_queue(netdev); 2603 netif_start_queue(netdev);
@@ -2626,7 +2615,6 @@ static void atl1_down(struct atl1_adapter *adapter)
2626 struct net_device *netdev = adapter->netdev; 2615 struct net_device *netdev = adapter->netdev;
2627 2616
2628 netif_stop_queue(netdev); 2617 netif_stop_queue(netdev);
2629 del_timer_sync(&adapter->watchdog_timer);
2630 del_timer_sync(&adapter->phy_config_timer); 2618 del_timer_sync(&adapter->phy_config_timer);
2631 adapter->phy_timer_pending = false; 2619 adapter->phy_timer_pending = false;
2632 2620
@@ -3050,13 +3038,8 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
3050 netif_carrier_off(netdev); 3038 netif_carrier_off(netdev);
3051 netif_stop_queue(netdev); 3039 netif_stop_queue(netdev);
3052 3040
3053 init_timer(&adapter->watchdog_timer); 3041 setup_timer(&adapter->phy_config_timer, &atl1_phy_config,
3054 adapter->watchdog_timer.function = &atl1_watchdog; 3042 (unsigned long)adapter);
3055 adapter->watchdog_timer.data = (unsigned long)adapter;
3056
3057 init_timer(&adapter->phy_config_timer);
3058 adapter->phy_config_timer.function = &atl1_phy_config;
3059 adapter->phy_config_timer.data = (unsigned long)adapter;
3060 adapter->phy_timer_pending = false; 3043 adapter->phy_timer_pending = false;
3061 3044
3062 INIT_WORK(&adapter->tx_timeout_task, atl1_tx_timeout_task); 3045 INIT_WORK(&adapter->tx_timeout_task, atl1_tx_timeout_task);