Date: Tue, 28 Sep 2004 10:27:43 -0400 From: ming fu <fming@borderware.com> To: Pierre Beyssac <beyssac@enst.fr> Cc: freebsd-net@freebsd.org Subject: Re: reproductible hang with if_em Message-ID: <415974DF.8080009@borderware.com> In-Reply-To: <20040927182722.GA1664@bofh.enst.fr> References: <20040927182722.GA1664@bofh.enst.fr>
next in thread | previous in thread | raw e-mail | index | archive | help
I have experienced the same thing with 4.7 as well. The driver just refuse to send anymore and won't self recover. However, tcpdump on the interface will still see traffic on the network, so receive seem working. Upgrade the driver to the most up-to-date code from 4.10 tree or from Intel does not help. Looking at the em_watchdog, there is a test that could cause the watchdog to do nothing. Comparing to the similar fxp driver, fxp watchdog just go ahead to restart the driver. Ming Pierre Beyssac wrote: >Hello, > >I'm having a problem (under 5.3-BETA, but I don't think it matters >much) with the if_em driver on bursty outbound traffic: the card >is stuck in a state where it only returns ENOBUFS. No buffers ever >become available again, but ifconfig down+up fixes the problem. > >>From a quick analysis it looks like the TX descriptor cleanup routine >em_clean_transmit_interrupts() as called by em_encap() in such cases >doesn't manage to find anything free with E1000_TXD_STAT_DD set. >The card seems stuck in this state. A simple albeit dirty fix would >be to cancel some or all untransmitted packets in such cases. > >Perhaps this is related to my using the card on a 100Mbps switch. >I have a small program to exercise the hang in case someone would >like to have a look at it. > >See below for the result of "sysctl hw.em0.debug_info=1" (notice >the not avail1 = 12 and not avail2 = 0 hinting at >em_clean_transmit_interrupts). > >em0: [MPSAFE] >em0: bpf attached >em0: Ethernet address: 00:0d:56:d0:5c:15 >em0: Speed:N/A Duplex:N/A >em0: Link is up 100 Mbps Full Duplex >em0: Adapter hardware address = 0xc3570b34 >em0:tx_int_delay = 66, tx_abs_int_delay = 66 >em0:rx_int_delay = 0, rx_abs_int_delay = 66 >em0: fifo workaround = 0, fifo_reset = 0 >em0: hw tdh = 238, hw tdt = 238 >em0: Num Tx descriptors avail = 256 >em0: Tx Descriptors not avail1 = 12 >em0: Tx Descriptors not avail2 = 0 >em0: Std mbuf failed = 0 >em0: Std mbuf cluster failed = 0 >em0: Driver dropped packets = 0 > > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?415974DF.8080009>