diff options
author | Anders Berggren <anders@halon.se> | 2011-02-04 02:32:32 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2011-03-15 01:25:50 -0400 |
commit | 673b8b70cfae2cd0428a8ab5647571521348549a (patch) | |
tree | 1436c815655482abd5be4a03b2b075dc8b989ac5 | |
parent | 0c0217b016ba8a970a6f6ab62ad0d858f39881ca (diff) |
igb: fix hw timestamping
Hardware timestamping for Intel 82580 didn't work in either 2.6.36 or
2.6.37. Comparing it to Intel's igb-2.4.12 I found that the
timecounter_init clock/counter initialization was done too early.
Signed-off-by: Anders Berggren <andfers@halon.se>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r-- | drivers/net/igb/igb_main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index b4f92b06f2ac..5366f2ab65f0 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -106,6 +106,7 @@ static void igb_free_all_rx_resources(struct igb_adapter *); | |||
106 | static void igb_setup_mrqc(struct igb_adapter *); | 106 | static void igb_setup_mrqc(struct igb_adapter *); |
107 | static int igb_probe(struct pci_dev *, const struct pci_device_id *); | 107 | static int igb_probe(struct pci_dev *, const struct pci_device_id *); |
108 | static void __devexit igb_remove(struct pci_dev *pdev); | 108 | static void __devexit igb_remove(struct pci_dev *pdev); |
109 | static void igb_init_hw_timer(struct igb_adapter *adapter); | ||
109 | static int igb_sw_init(struct igb_adapter *); | 110 | static int igb_sw_init(struct igb_adapter *); |
110 | static int igb_open(struct net_device *); | 111 | static int igb_open(struct net_device *); |
111 | static int igb_close(struct net_device *); | 112 | static int igb_close(struct net_device *); |
@@ -2048,6 +2049,9 @@ static int __devinit igb_probe(struct pci_dev *pdev, | |||
2048 | } | 2049 | } |
2049 | 2050 | ||
2050 | #endif | 2051 | #endif |
2052 | /* do hw tstamp init after resetting */ | ||
2053 | igb_init_hw_timer(adapter); | ||
2054 | |||
2051 | dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n"); | 2055 | dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n"); |
2052 | /* print bus type/speed/width info */ | 2056 | /* print bus type/speed/width info */ |
2053 | dev_info(&pdev->dev, "%s: (PCIe:%s:%s) %pM\n", | 2057 | dev_info(&pdev->dev, "%s: (PCIe:%s:%s) %pM\n", |
@@ -2384,7 +2388,6 @@ static int __devinit igb_sw_init(struct igb_adapter *adapter) | |||
2384 | return -ENOMEM; | 2388 | return -ENOMEM; |
2385 | } | 2389 | } |
2386 | 2390 | ||
2387 | igb_init_hw_timer(adapter); | ||
2388 | igb_probe_vfs(adapter); | 2391 | igb_probe_vfs(adapter); |
2389 | 2392 | ||
2390 | /* Explicitly disable IRQ since the NIC can be in any state. */ | 2393 | /* Explicitly disable IRQ since the NIC can be in any state. */ |