Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 May 2004 14:28:09 -0700
From:      "Scott T. Smith" <scott@gelatinous.com>
To:        freebsd-net@freebsd.org
Subject:   em driver losing packets
Message-ID:  <1084397289.8017.30.camel@tinny.home.foo>

next in thread | raw e-mail | index | archive | help
I have a Sun 1U server with 2 built in Intel Pro/1000 "LOMs" (though I
had the exact same problem with a previous machine using a standalone
Intel NIC).  I notice that after the machine has been up for 12-20
hours, the network card starts dropping packets.

Here is the relevant dmesg info:

em0: <Intel(R) PRO/1000 Network Connection, Version - 1.7.25> port
0x2040-0x207f mem 0xfe680000-0xfe69ffff irq 30 at device 7.0 on pci3
em0:  Speed:N/A  Duplex:N/A
em1: <Intel(R) PRO/1000 Network Connection, Version - 1.7.25> port
0x2000-0x203f mem 0xfe6a0000-0xfe6bffff irq 31 at device 7.1 on pci3
em1:  Speed:N/A  Duplex:N/A

....

em0: Link is up 100 Mbps Full Duplex
em1: Link is up 1000 Mbps Full Duplex

....

Limiting icmp unreach response from 1770 to 200 packets/sec
^^^ Not sure what this is, but I received a bunch of them after
everything was working and before everything stopped working
....

em1: Excessive collisions = 0
em1: Symbol errors = 0
em1: Sequence errors = 0
em1: Defer count = 0
em1: Missed Packets = 1682
em1: Receive No Buffers = 75
em1: Receive length errors = 0
em1: Receive errors = 0
em1: Crc errors = 0
em1: Alignment errors = 0
em1: Carrier extension errors = 0
em1: XON Rcvd = 0
em1: XON Xmtd = 0
em1: XOFF Rcvd = 0
em1: XOFF Xmtd = 0
em1: Good Packets Rcvd = 119975570
em1: Good Packets Xmtd = 164
em1: Adapter hardware address = 0xc76262ec 
em1:tx_int_delay = 66, tx_abs_int_delay = 66
em1:rx_int_delay = 488, rx_abs_int_delay = 977
em1: fifo workaround = 0, fifo_reset = 0
em1: hw tdh = 170, hw tdt = 170
em1: Num Tx descriptors avail = 256
em1: Tx Descriptors not avail1 = 0
em1: Tx Descriptors not avail2 = 0
em1: Std mbuf failed = 0
em1: Std mbuf cluster failed = 0
em1: Driver dropped packets = 0


I was running 5.2.1-RELEASE with em driver version 1.7.19 or 1.7.17 (I
forget what it comes with).  I
had the problems so I backported 1.7.25 from 5.2.1-STABLE as of May 10. 
Same issue.

Notice the "missed packets" and "receive no buffers".  I assume that
means the network card ran out of memory?  How much memory does it
have?  If it uses the mainboard memory, can I make that amount any
bigger?

The odd thing (which is why I think this is a driver issue) is that it
works just fine when the machine is first booted.

I am driving approximately 680 mbits/sec of UDP traffic; 1316 byte
packets.  The only other traffic is arp traffic (em1 has a netmask of
255.255.255.255).

I have this problem whether I use kernel polling (HZ=1000) or with
rx_abs_int_delay=1000, or with rx_abs_int_delay=500.  If I shut off the
rx_*int_delay, then CPU load goes to 100% and I still have the same
problem.  With the abs delay at 1000, cpu load is 90% (about split
evenly between user and system).

If you have any ideas I'd really appreciate it.  Thanks!  I'm thinking
of trying to backport 1.7.31.

        Scott




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1084397289.8017.30.camel>