aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/atlx
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
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')
-rw-r--r--drivers/net/atlx/atl1.c25
-rw-r--r--drivers/net/atlx/atl1.h2
-rw-r--r--drivers/net/atlx/atl2.c8
3 files changed, 10 insertions, 25 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);
diff --git a/drivers/net/atlx/atl1.h b/drivers/net/atlx/atl1.h
index 324ef5e93412..146372fd6683 100644
--- a/drivers/net/atlx/atl1.h
+++ b/drivers/net/atlx/atl1.h
@@ -765,7 +765,7 @@ struct atl1_adapter {
765 struct work_struct tx_timeout_task; 765 struct work_struct tx_timeout_task;
766 struct work_struct link_chg_task; 766 struct work_struct link_chg_task;
767 struct work_struct pcie_dma_to_rst_task; 767 struct work_struct pcie_dma_to_rst_task;
768 struct timer_list watchdog_timer; 768
769 struct timer_list phy_config_timer; 769 struct timer_list phy_config_timer;
770 bool phy_timer_pending; 770 bool phy_timer_pending;
771 771
diff --git a/drivers/net/atlx/atl2.c b/drivers/net/atlx/atl2.c
index 8c5d009ca821..21ca6dd78b18 100644
--- a/drivers/net/atlx/atl2.c
+++ b/drivers/net/atlx/atl2.c
@@ -724,7 +724,7 @@ static int atl2_open(struct net_device *netdev)
724 724
725 clear_bit(__ATL2_DOWN, &adapter->flags); 725 clear_bit(__ATL2_DOWN, &adapter->flags);
726 726
727 mod_timer(&adapter->watchdog_timer, jiffies + 4*HZ); 727 mod_timer(&adapter->watchdog_timer, round_jiffies(jiffies + 4*HZ));
728 728
729 val = ATL2_READ_REG(&adapter->hw, REG_MASTER_CTRL); 729 val = ATL2_READ_REG(&adapter->hw, REG_MASTER_CTRL);
730 ATL2_WRITE_REG(&adapter->hw, REG_MASTER_CTRL, 730 ATL2_WRITE_REG(&adapter->hw, REG_MASTER_CTRL,
@@ -1051,7 +1051,8 @@ static void atl2_watchdog(unsigned long data)
1051 adapter->netdev->stats.rx_over_errors += drop_rxd + drop_rxs; 1051 adapter->netdev->stats.rx_over_errors += drop_rxd + drop_rxs;
1052 1052
1053 /* Reset the timer */ 1053 /* Reset the timer */
1054 mod_timer(&adapter->watchdog_timer, jiffies + 4 * HZ); 1054 mod_timer(&adapter->watchdog_timer,
1055 round_jiffies(jiffies + 4 * HZ));
1055 } 1056 }
1056} 1057}
1057 1058
@@ -1255,7 +1256,8 @@ static int atl2_check_link(struct atl2_adapter *adapter)
1255 * (if interval smaller than 5 seconds, something strange) */ 1256 * (if interval smaller than 5 seconds, something strange) */
1256 if (!test_bit(__ATL2_DOWN, &adapter->flags)) { 1257 if (!test_bit(__ATL2_DOWN, &adapter->flags)) {
1257 if (!test_and_set_bit(0, &adapter->cfg_phy)) 1258 if (!test_and_set_bit(0, &adapter->cfg_phy))
1258 mod_timer(&adapter->phy_config_timer, jiffies + 5 * HZ); 1259 mod_timer(&adapter->phy_config_timer,
1260 round_jiffies(jiffies + 5 * HZ));
1259 } 1261 }
1260 1262
1261 return 0; 1263 return 0;