staging: et131x: Fix add_timer() from et131x_open
authorMark Einon <mark.einon@gmail.com>
Sat, 1 Oct 2011 10:14:14 +0000 (11:14 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 4 Oct 2011 17:43:14 +0000 (10:43 -0700)
The error_timer was only getting initialised and an initial jiffies value set following a probe.
This could result in the timer needlessly expiring immediately after et131x_open is called.
Now this is all done from the open call instead.

Signed-off-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/et131x/README
drivers/staging/et131x/et131x.h
drivers/staging/et131x/et131x_initpci.c
drivers/staging/et131x/et131x_netdev.c

index 42c388d..a0ebaa0 100644 (file)
@@ -9,7 +9,6 @@ Note, the powermanagement options were removed from the vendor provided
 driver as they did not build properly at the time.
 
 TODO:
-       - add_timer call in et131x_netdev.c is correct?
        - Implement a few more kernel Parameter (set mac )
 
 Please send patches to:
index 15486d1..c8f5ab1 100644 (file)
@@ -52,6 +52,7 @@
 int et131x_init_eeprom(struct et131x_adapter *adapter);
 
 /* et131x_initpci.c */
+void et131x_error_timer_handler(unsigned long data);
 void et131x_configure_global_regs(struct et131x_adapter *adapter);
 void et131x_enable_interrupts(struct et131x_adapter *adapter);
 void et131x_disable_interrupts(struct et131x_adapter *adapter);
index e166fde..8bff4a0 100644 (file)
@@ -750,10 +750,6 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,
        /* Copy address into the net_device struct */
        memcpy(netdev->dev_addr, adapter->addr, ETH_ALEN);
 
-       adapter->error_timer.expires = jiffies + TX_ERROR_PERIOD * HZ / 1000;
-       adapter->error_timer.function = et131x_error_timer_handler;
-       adapter->error_timer.data = (unsigned long)adapter;
-
        /* Init variable for counting how long we do not have link status */
        adapter->boot_coma = 0;
        et1310_disable_phy_coma(adapter);
@@ -795,9 +791,6 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,
        /* Setup et1310 as per the documentation */
        et131x_adapter_setup(adapter);
 
-       /* Create a timer to count errors received by the NIC */
-       init_timer(&adapter->error_timer);
-
        /* We can enable interrupts now
         *
         *  NOTE - Because registration of interrupt handler is done in the
index 6ec4a0f..2184682 100644 (file)
@@ -187,6 +187,10 @@ int et131x_open(struct net_device *netdev)
        struct et131x_adapter *adapter = netdev_priv(netdev);
 
        /* Start the timer to track NIC errors */
+       init_timer(&adapter->error_timer);
+       adapter->error_timer.expires = jiffies + TX_ERROR_PERIOD * HZ / 1000;
+       adapter->error_timer.function = et131x_error_timer_handler;
+       adapter->error_timer.data = (unsigned long)adapter;
        add_timer(&adapter->error_timer);
 
        /* Register our IRQ */