[etherlab-users] e1000e driver still not working with 3.2 kernel with latest stable-1.5 branch?
Jürgen Kunz
kunz at sim.tu-darmstadt.de
Tue Feb 5 07:54:23 CET 2013
Hello Gavin,
thanks for the hint, I'll have a look for Florians patch and your post.
I applied Florians "Link detection" patch for e1000e driver 3.4 to the
3.2er driver (see attatchment), it solves the link detection issue here.
Regards,
Jürgen Kunz
Am 05.02.2013 06:26, schrieb Gavin Lambert:
>
> Hi Jürgen & Daniel,
>
>
>
> I have a fix for the first issue in my local copy of the driver (see
> my post to the dev list on 25 October for specific details). I have
> seen the second issue but not chased down a fix for it yet.
>
>
>
> Also I just noticed that Florian updated the drivers on 4 January
> (posted in response to my message; I haven't checked whether it
> includes the same fix or not). I haven't had a chance to test the new
> version myself yet but maybe it will help in your case too?
>
>
>
> Regards,
>
> Gavin Lambert
>
>
>
> *From:*etherlab-users-bounces at etherlab.org
> [mailto:etherlab-users-bounces at etherlab.org] *On Behalf Of *Jürgen Kunz
> *Sent:* Tuesday, 5 February 2013 18:16
> *To:* Daniel Helmick
> *Cc:* etherlab-users at etherlab.org
> *Subject:* Re: [etherlab-users] e1000e driver still not working with
> 3.2 kernel with latest stable-1.5 branch?
>
>
>
> Hello Daniel,
>
> I am using this combination for a while now, with 32- and 64-bit
> versions of the 3.2er Debian RT-Kernel. If there is a EtherCAT device
> connected to the computer, the driver works fine.
> There are two issues in this driver version, if there are no EtherCAT
> devices connected. The first, the one you mentioned here, is when the
> EtherCAT Master starts up with no device connected, then the
> network-adapter is continously reseted until a device is connected. It
> may hang the computer if no device is connected for a while.
> The second issue is that when the link is plugged off, the link state
> is not updated. Unfortunately, I did not have time yet to correct
> these issues.
>
> Greetings,
> Jürgen Kunz
>
> Am 05.02.2013 01:59, schrieb Daniel Helmick:
>
> Has anyone else gotten this combination of driver and kernel to work?
>
> Here's the /var/log/messages output when I start the ethercat master:
>
> [ 869.854110] EtherCAT: Master driver 1.5.1 9cdd7669dc0b
> [ 869.854252] EtherCAT: 1 master waiting for devices.
> [ 869.944866] e1000e 0000:04:00.0: PCI INT A disabled
> [ 869.948134] ec_e1000e: EtherCAT-capable Intel(R) PRO/1000
> Network Driver - 1.5.1-k-EtherCAT
> [ 869.948138] ec_e1000e: Copyright(c) 1999 - 2011 Intel Corporation.
> [ 869.948202] ec_e1000e 0000:04:00.0: Disabling ASPM L0s
> [ 869.948261] ec_e1000e 0000:04:00.0: PCI INT A -> GSI 17 (level,
> low) -> IRQ 17
> [ 869.948530] ec_e1000e 0000:04:00.0: setting latency timer to 64
> [ 869.951386] ec_e1000e 0000:04:00.0: irq 65 for MSI/MSI-X
> [ 869.951393] ec_e1000e 0000:04:00.0: irq 66 for MSI/MSI-X
> [ 869.951397] ec_e1000e 0000:04:00.0: irq 67 for MSI/MSI-X
> [ 870.120739] EtherCAT: Accepting 68:05:CA:10:C0:82 as main
> device for master 0.
> [ 870.197588] EtherCAT 0: Starting EtherCAT-IDLE thread.
> [ 870.197651] ec_e1000e 0000:04:00.0: (unregistered net_device):
> (PCI Express:2.5GT/s:Width x1) 68:05:ca:10:c0:82
> [ 870.197656] ec_e1000e 0000:04:00.0: (unregistered net_device):
> Intel(R) PRO/1000 Network Connection
> [ 870.197687] ec_e1000e 0000:04:00.0: (unregistered net_device):
> MAC: 3, PHY: 8, PBA No: E46981-008
> [ 870.197825] ec_e1000e 0000:04:00.0: (unregistered net_device):
> Reset adapter
> [ 872.196168] ec_e1000e 0000:04:00.0: (unregistered net_device):
> Reset adapter
> [ 874.196169] ec_e1000e 0000:04:00.0: (unregistered net_device):
> Reset adapter
> [ 876.196159] ec_e1000e 0000:04:00.0: (unregistered net_device):
> Reset adapter
> [ 878.196162] ec_e1000e 0000:04:00.0: (unregistered net_device):
> Reset adapter
>
>
> And the reset adapter message occurs every 2 seconds until I stop
> the ethercat master.
>
> Thanks,
> Dan
>
>
>
> _______________________________________________
>
> etherlab-users mailing list
>
> etherlab-users at etherlab.org <mailto:etherlab-users at etherlab.org>
>
> http://lists.etherlab.org/mailman/listinfo/etherlab-users
>
>
>
> --
> Dipl.-Inform. Jürgen Kunz
>
> Technische Universität Darmstadt <http://www.tu-darmstadt.de>
> FG Simulation, Systemoptimierung und Robotik
> <http://www.sim.tu-darmstadt.de>
> Hochschulstr. 10
> 64289 Darmstadt
>
> Tel.: ++49 (0) 6151-16-70383
> Fax: ++49 (0) 6151-16-6648
> E-Mail: kunz(at)sim.tu-darmstadt.de
> Homepage: http://www.sim.tu-darmstadt.de
>
--
Dipl.-Inform. Jürgen Kunz
Technische Universität Darmstadt <http://www.tu-darmstadt.de>
FG Simulation, Systemoptimierung und Robotik
<http://www.sim.tu-darmstadt.de>
Hochschulstr. 10
64289 Darmstadt
Tel.: ++49 (0) 6151-16-70383
Fax: ++49 (0) 6151-16-6648
E-Mail: kunz(at)sim.tu-darmstadt.de
Homepage: http://www.sim.tu-darmstadt.de
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20130205/ea7dd97e/attachment-0004.htm>
-------------- next part --------------
diff -r 9cdd7669dc0b devices/e1000e/netdev-3.2-ethercat.c
--- a/devices/e1000e/netdev-3.2-ethercat.c Thu Jan 10 17:36:41 2013 +0100
+++ b/devices/e1000e/netdev-3.2-ethercat.c Tue Feb 05 07:22:53 2013 +0100
@@ -2129,14 +2129,14 @@
{
struct e1000_hw *hw = &adapter->hw;
- if (adapter->ecdev)
- return;
-
ew32(IMC, ~0);
if (adapter->msix_entries)
ew32(EIAC_82574, 0);
e1e_flush();
+ if (adapter->ecdev)
+ return;
+
if (adapter->msix_entries) {
int i;
for (i = 0; i < adapter->num_vectors; i++)
@@ -3526,12 +3526,10 @@
if (!adapter->ecdev) {
napi_enable(&adapter->napi);
- }
-
- if (adapter->msix_entries)
- e1000_configure_msix(adapter);
-
- if (!adapter->ecdev) {
+
+ if (adapter->msix_entries)
+ e1000_configure_msix(adapter);
+
e1000_irq_enable(adapter);
netif_start_queue(adapter->netdev);
@@ -3862,7 +3860,7 @@
* ignore e1000e MSI messages, which means we need to test our MSI
* interrupt now
*/
- if (adapter->int_mode != E1000E_INT_MODE_LEGACY) {
+ if (!adapter->ecdev && adapter->int_mode != E1000E_INT_MODE_LEGACY) {
err = e1000_test_msi(adapter);
if (err) {
e_err("Interrupt allocation failed\n");
@@ -4513,14 +4511,14 @@
/* Link status message must follow this format */
printk(KERN_INFO "e1000e: %s NIC Link is Down\n",
adapter->netdev->name);
- if (adapter->ecdev)
+ if (adapter->ecdev) {
ecdev_set_link(adapter->ecdev, 0);
- else
+ } else {
netif_carrier_off(netdev);
- if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state))
- mod_timer(&adapter->phy_info_timer,
- round_jiffies(jiffies + 2 * HZ));
-
+ if (!test_bit(__E1000_DOWN, &adapter->state))
+ mod_timer(&adapter->phy_info_timer,
+ round_jiffies(jiffies + 2 * HZ));
+ }
if (adapter->flags & FLAG_RX_NEEDS_RESTART)
schedule_work(&adapter->reset_task);
else
@@ -6050,7 +6048,9 @@
struct e1000_adapter *adapter = netdev_priv(netdev);
if (jiffies - adapter->ec_watchdog_jiffies >= 2 * HZ) {
- e1000_watchdog((unsigned long) adapter);
+ struct e1000_hw *hw = &adapter->hw;
+ hw->mac.get_link_status = true;
+ e1000_watchdog_task(&adapter->watchdog_task);
adapter->ec_watchdog_jiffies = jiffies;
}
@@ -6359,6 +6359,7 @@
adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
if (adapter->ecdev) {
+ adapter->ec_watchdog_jiffies = jiffies;
if (ecdev_open(adapter->ecdev)) {
ecdev_withdraw(adapter->ecdev);
goto err_register;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kunz.vcf
Type: text/x-vcard
Size: 464 bytes
Desc: not available
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20130205/ea7dd97e/attachment-0004.vcf>
More information about the Etherlab-users
mailing list