[Bug 193802] New: tso seems broken on RELENG10 for version 7.4.2 of em driver

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Sep 21 01:00:30 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=193802

            Bug ID: 193802
           Summary: tso seems broken on RELENG10 for version 7.4.2 of em
                    driver
           Product: Base System
           Version: 10.0-STABLE
          Hardware: amd64
                OS: Any
            Status: Needs Triage
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: mike at sentex.net

The latest version of the em driver seems to have broken tso support.  When
using default nfs mount options, the client's nic will wedge and throw watchdog
errors.  Reverting to the previous version of em, or disabling tso works around
the issue.

The bug seems to effect at least two variants of the NIC

     vendor     = 'Intel Corporation'
     device     = '82574L Gigabit Network Connection'
     class      = network

and

em0 at pci0:0:25:0:        class=0x020000 card=0x34ec8086 chip=0x10ef8086 
rev=0x05 hdr=0x00
     vendor     = 'Intel Corporation'
     device     = '82578DM Gigabit Network Connection'


More discussion can be found in 
http://lists.freebsd.org/pipermail/freebsd-stable/2014-September/080081.html

To recreate the issue, on the nfs client mount an nfs share with default
options. In my test case, it was a RELENG10 box with igb nics acting as the
server
generate a number of tcp streams over the share.  running these two scripts at
the same time will wedge the client nic in less then a few minutes


#!/bin/sh

while true
do
  dd if=/dev/urandom ibs=64k count=1000 | pbzip2 -c -p3 > /mnt/test.bz2
  dd if=/dev/urandom ibs=63k count=1000 | pbzip2 -c -p3 > /mnt/test.bz2
  dd if=/dev/urandom ibs=66k count=1000 | pbzip2 -c -p3 > /mnt/test.bz2
done
root at backup3:/usr/home/mdtancsa # cat i3
#!/bin/sh

while true
do
dd if=/dev/zero of=/mnt/test2 bs=128k count=2000
sleep 10
done


When wedged, the NIC shows

Interface is RUNNING and ACTIVE
em1: hw tdh = 343, hw tdt = 838
em1: hw rdh = 512, hw rdt = 511
em1: Tx Queue Status = 1
em1: TX descriptors avail = 516
em1: Tx Descriptors avail failure = 1
em1: RX discarded packets = 0
em1: RX Next to Check = 512
em1: RX Next to Refresh = 511

Occasionally, this error message will show up

em0: Watchdog timeout -- resetting
em0: Queue(0) tdh = 349, hw tdt = 176
em0: TX(0) desc avail = 173,Next TX to Clean = 349
em0: link state changed to DOWN
em0: link state changed to UP

At this point, ifconfig em0 down;ifconfig em0 up needs to be done.
work around is either to revert to the previous version of the driver, or
ifconfig em0 -tso

FreeBSD 10.1-BETA1 #10 r271466
on an Intel MB S3420GP
Latest BIOS 
Version: S3420GP.86B.01.00.0052.051620141338

Also tested on an AMD MB with a PCI-E NIC

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list