em(4): 82579LM 82574L Freezes on link change and traffic stalls

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

em(4): 82579LM 82574L Freezes on link change and traffic stalls

P. Polyakov
Environment:
    OpenBSD 6.6 (GENERIC.MP) #4: Wed Jan 15 10:55:43 MST 2020
    [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
    bios0: "MKQ7710H.86A.0054.2012.1120.1444" date 11/20/2012
    bios0: Intel Corporation DQ77MK
    em0 at pci0 dev 25 function 0 "Intel 82579LM" rev 0x04: msi
    em1 at pci2 dev 0 function 0 "Intel 82574L" rev 0x00: msi

Description:
    The network hangs for several seconds when either em0 or em1 is
    taken up or down, it happens whether this is achieved with ifconfig
    or when a cable is removed or inserted into the port. Nothing shows
    up in dmesg when this happens. Note that it hangs both interfaces
    and not just the one that's being manipulated.

    Another problem happens when the driver prints the following:

      em1: watchdog: head 274 tail 339 TDH 339 TDT 274

    At this moment ingress traffic is interrupted and never resumes
    while the kernel continues to print watchdog messages every now and
    then. The other interface continues to work but hangs and
    resumes in the fashion described in the first problem. Switching the
    interface down and up doesn't resume the network, rebooting is the
    only solution found yet.


The DQ77MK has a NIC set to be used for Intel AMT by default, it is
disabled so that it can be used as a standard Ethernet NIC.

The two NICs are connected to a switch with isolated VLANs.

The machine is used as a router, it runs bgpd and sysctl is only tuned
with:
    net.inet.ip.forwarding=1
    net.inet6.ip6.forwarding=1

Disabling pf has no effect.

Debug on both interfaces doesn't produce further details.

# pcidump -v 2:0:0
 2:0:0: Intel 82574L
        0x0000: Vendor ID: 8086, Product ID: 10d3
        0x0004: Command: 0007, Status: 0010
        0x0008: Class: 02 Network, Subclass: 00 Ethernet,
                Interface: 00, Revision: 00
        0x000c: BIST: 00, Header Type: 00, Latency Timer: 00,
                Cache Line Size: 10
        0x0010: BAR mem 32bit addr: 0xf7c00000/0x00020000
        0x0014: BAR empty (00000000)
        0x0018: BAR io addr: 0x0000e000/0x0020
        0x001c: BAR mem 32bit addr: 0xf7c20000/0x00004000
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2035
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 03 Min Gnt: 00 Max Lat: 00
        0x00c8: Capability 0x01: Power Management
                State: D0
        0x00d0: Capability 0x05: Message Signalled Interrupts (MSI)
                Enabled: yes
        0x00e0: Capability 0x10: PCI Express
                Link Speed: 2.5 / 2.5 GT/s, Link Width: x1 / x1
        0x0100: Enhanced Capability 0x01: Advanced Error Reporting
        0x0140: Enhanced Capability 0x03: Device Serial Number
                Serial Number: 7054d2ffff44f836
        0x00a0: Capability 0x11: Extended Message Signalled Interrupts
(MSI-X) Enabled: no; table size 5 (BAR 3:0)

# pcidump -v 0:25:0
 0:25:0: Intel 82579LM
        0x0000: Vendor ID: 8086, Product ID: 1502
        0x0004: Command: 0007, Status: 0010
        0x0008: Class: 02 Network, Subclass: 00 Ethernet,
                Interface: 00, Revision: 04
        0x000c: BIST: 00, Header Type: 00, Latency Timer: 00,
                Cache Line Size: 00
        0x0010: BAR mem 32bit addr: 0xf7d00000/0x00020000
        0x0014: BAR mem 32bit addr: 0xf7d35000/0x00001000
        0x0018: BAR io addr: 0x0000f080/0x0020
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2035
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 05 Min Gnt: 00 Max Lat: 00
        0x00c8: Capability 0x01: Power Management
                State: D0
        0x00d0: Capability 0x05: Message Signalled Interrupts (MSI)
                Enabled: yes
        0x00e0: Capability 0x13: PCI Advanced Features