kern/92675: [fxp] [patch] fxp(4) unable to recover from occasional receiver unit allocation failure

Dan Bilik dan at
Wed Feb 1 02:40:03 PST 2006

>Number:         92675
>Category:       kern
>Synopsis:       [fxp] [patch] fxp(4) unable to recover from occasional receiver unit allocation failure
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Feb 01 10:40:02 GMT 2006
>Originator:     Dan Bilik
>Release:        FreeBSD 6.0-STABLE
FreeBSD xxx.yyy.zz 6.0-STABLE FreeBSD 6.0-STABLE #0: Mon Jan  2 16:19:49 CET 2006

Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Pentium(R) III CPU family      1266MHz (1261.31-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x6b1  Stepping = 1
real memory  = 1073659904 (1023 MB)
avail memory = 1043476480 (995 MB)
MPTable: <IBM ENSW NF 4100R SMP>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  3
 cpu1 (AP): APIC ID:  0
ioapic0: Assuming intbase of 0
ioapic1: Assuming intbase of 16
ioapic1 <Version 1.1> irqs 16-31 on motherboard
ioapic0 <Version 1.1> irqs 0-15 on motherboard

fxp0: <Intel 82559 Pro/100 Ethernet> port 0x2200-0x223f mem 0xfeb7f000-0xfeb7ffff,0xfea00000-0xfeafffff irq 27 at device 2.0 on pci0
fxp0: Disabling dynamic standby mode in EEPROM
fxp0: New EEPROM ID: 0x48a0
fxp0: EEPROM checksum @ 0x3f: 0xaef7 -> 0xaef7
miibus0: <MII bus> on fxp0
inphy0: <i82555 10/100 media interface> on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp0: Ethernet address: 00:02:55:c6:e8:67

Sometimes, mostly under heavy network load, receiver unit on the fxp(4) interface suffers an allocation failure and wedges. Affected machine then cannot receive any new packets, thus seems unreachable on the network. Turning off ACPI and/or using polling(4) on the interface doesn't solve the problem.
Very hard to. From two identical boxes running the same tasks, one is wedging almost each day while the second one runs without a wedge for two weeks. I haven't figured out what exactly it depends on.

It can be unwedged by reinitializing the interface (for example by 'ifconfig promisc') or by generating software interrupt.
I have small patch that does this each tick and it completely resolved occasional wedges on our boxes that were previously hanging almost each day. It's available at

More information about the freebsd-bugs mailing list