NPE(4) (ARM)
NPE(4) FreeBSD Kernel Interfaces Manual (ARM) NPE(4)


npeIntel XScale Network Processing Engine (NPE) Ethernet device driver


To compile this driver into the kernel, place the following lines in your kernel configuration file:

device npe
device npe_fw
device firmware
device qmgr
device miibus


The npe driver provides support for Ethernet adapters based on the Intel XScale Network Processing Engine (NPE). The NPE must be loaded with firmware that is typically distributed with boards that have this part. Otherwise the firmware may be obtained at no cost from the Intel web site.

The npe driver supports the following media types:

Enable autoselection of the media type and options.
Set 10Mbps operation.
Set 100Mbps (Fast Ethernet) operation.

The npe driver supports the following media options:

Set full duplex operation.

The npe driver supports polled operation when the system is configured with device polling support, polling(4). Note that for multi-port configurations polling and interrupt-style operation should not be combined as one of the hardware queues is shared by all ports.

For further information on configuring this device, see ifconfig(8).


The adapters supported by the npe driver exist only on boards that have an XScale processor.


npe%d: unit %d not supported
The unit is larger than the maximum number built into the driver. This should not happen as npe devices are not really probed for; they are statically enumerated.
npe%d: Cannot find my PHY.
The associated PHY did not appear while probing the MII bus. The relationship between PHYs and NPEs is statically defined in the driver and may require alterations to the driver for new boards.
npe%d: unable to allocate memory for %s ... buffers
There is not enough memory available for allocation. The driver pre-allocated memory during attach so this should not happen.
npe%d: remember to fix rx q setup
See BUGS below.
npe%d: free mbuf at entry %u
An mbuf was unexpectedly found on the device queue; the index of the queue entry is printed.
npe%d: too many fragments %u
A frame was dropped on transmit because it was too fragmented and the logic to de-fragment failed. This should not happen.
npe%d: device timeout
The device has stopped responding to the network, or there is a problem with the network connection (cable).

Other diagnostics exist and are not listed here; they should be self-explanatory.


The npe device driver first appeared in FreeBSD 6.3.


This driver has been tested only with dual-port boards using the IXP425 such as the Gateworks Avila 2348. Some changes to the driver may be required for other configurations.


The hardware queues are not properly flushed when the interface is marked down.

The assignment of receive traffic classes to hardware queues is presently incomplete. Only the first 4 classes are assigned while there are 8 total. The driver will print “ remember to fix rx q setup” on startup as a reminder. For the moment it is not a problem as all traffic arrives classified with class 0.

December 4, 2006 FreeBSD