Subject: kern/30505: fxp locks out audio for half a second
To: None <,,>
From: None <>
List: netbsd-bugs
Date: 06/12/2005 12:33:00
>Number:         30505
>Category:       kern
>Synopsis:       fxp locks out audio for half a second
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Jun 12 12:33:00 +0000 2005
>Originator:     Michael van Elst
>Release:        NetBSD 3.0_BETA
                                Michael van Elst
                                "A potential Snark may lurk in every tree."
System: NetBSD pepew 3.0_BETA NetBSD 3.0_BETA (PEPEW_ACPI) #11: Sun Jun 12 14:04:40 CEST 2005 src@pepew:/usr/obj/usr/src/sys/arch/i386/compile/PEPEW_ACPI i386
Architecture: i386
Machine: i386
The initialization of the fxp driver takes half a second at splnet().
This does disrupt other services like audio output.

The initialization is done when running 'ifconfig up', when
dhclient polls for a DHCP server and every 16 seconds if
no packet is received.

Nothing of this was observed with NetBSD-2.0.2.

The 16 second interval was introduced in NetBSD-3 as a workaround
for bugs in some fxp chipsets. However, polling a DHCP server

The system is a Dell Inspiron 8000 configured with ACPI and

Here is an excerpt from the autoconfiguration:

pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
ppb1 at pci0 dev 30 function 0: Intel 82801BAM Hub-PCI Bridge (rev. 0x02)
pci2 at ppb1 bus 2
pci2: i/o space, memory space enabled
ppb2 at pci2 dev 6 function 0: Action Tec Electronics product 0x0100 (rev. 0x11)
pci3 at ppb2 bus 8
pci3: i/o space, memory space enabled
fxp0 at pci3 dev 4 function 0: i82559 Ethernet, rev 8
fxp0: interrupting at irq 10
fxp0: Ethernet address 00:20:e0:68:5b:cd
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4


Configure and enable an fxp interface and watch output of
'vmstat 1'. Every 16 seconds you see about 40-50% of the CPU
spent for 'sy'. If you run dhclient there are additional peaks.

The output of 'top' shows that the time is really spent within
an interrupt.

none known. Disabling the FXP_RECV_WORKAROUND stops the interruption
every 16 second, but running dhclient still causes problems.