yongari nfe problems
Pyun YongHyeon
pyunyh at gmail.com
Mon Apr 2 01:02:43 UTC 2007
On Sat, Mar 31, 2007 at 05:01:18PM +0200, Rainer Hurling wrote:
> Thank you Pyun YongHyeon for the newest patch. I am running it with
> if_nfe.c and if_nfereg.h from 03/21/2007 and if_nfevar.h from 03/19/2007
> on FreeBSD 7.0-CURRENT (i386) from today.
>
> boot -v gives me:
> nfe0: <NVIDIA nForce MCP55 Networking Adapter> port 0xb000-0xb007 mem
> xfbef3000-0xfbef3fff,0xfbefa800-0xfbefa8ff,0
> xfbefa400-0xfbefa40f irq 22 at device 8.0 on pci0
> nfe0: Reserved 0x1000 bytes for rid 0x10 type 3 at 0xfbef3000
> miibus0: <MII bus> on nfe0
> ciphy0: <VSC8601 10/100/1000TX PHY> PHY 1 on miibus0
> ciphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT,
> 1000baseT-FDX, auto
> nfe0: bpf attached
> nfe0: Ethernet address: 00:16:17:95:d9:7c
> nfe0: [MPSAFE]
> nfe0: [FILTER]
>
>
> Now there are no more warning from miibus0 :-)
>
Thanks for testing.
> Unfortunately at bigger network transfers I still observe the previously
> described watchdog timeouts:
>
> nfe0: watchdog timeout (missed Tx interrupts) -- recovering
> nfe0: watchdog timeout (missed Tx interrupts) -- recovering
> nfe0: watchdog timeout (missed Tx interrupts) -- recovering
> nfe0: watchdog timeout (missed Tx interrupts) -- recovering
> nfe0: watchdog timeout (missed Tx interrupts) -- recovering
> nfe0: watchdog timeout (missed Tx interrupts) -- recovering
> ...
>
> During these timeouts I am not able to use my network ;-(
>
> I would be happy if I could help solving this problem. Let me know if I
> can test anything.
>
Does nfe(4) use shared interrupt with other devices?
(Check 'vmstat -i' output.)
Since the watchdog timeout error indicates you've had missing Tx
completion interrupts I guess you've lost Tx completion interrupts
under high systems loads. One of major changes in new nfe(4) was
switching to so-called adaptive polling and it is known to give better
performance. However it can loose interrupts under high system loads
(e.g. buildworld) and I guess there are two ways to fix the issue.
1. Add MSI/MSI-X support.
I think this is the cleanest solution to the issue. But old
hardwares which has no MSI/MSI-X support and buggy PCI bridges may
have issues dealing with MSI/MSI-X. In addition, there is no public
documentation available for NVIDIA NICs and lack of MSI/MSI-X capable
hardwares make me hard to add MSI/MSI-X support. AFAIK, Shigeaki
Tagashira is working on supporting MSI/MSI-X.(CCed)
2. polling(4)
Because polling(4) does not rely on timed-delivery of Tx interrupts
it would help in your case.
--
Regards,
Pyun YongHyeon
More information about the freebsd-current
mailing list