Readme for the Intel® IXP400 Software v3.0 Linux* Ethernet Device Driver Patch


Copyright Notice


 Copyright © 2007, Intel Corporation

July 23, 2007





This readme file contains instructions for using the Intel® IXP400 Software Linux* Ethernet Device Driver v3.0.

The file contains updated source code for the stock Linux* that enables the NPE Ethernet ports on the Intel® IXP4XX Product Line of Network Processors to be used as network interfaces by the Linux kernel. The patch file provides the necessary changes to the Linux Makefile and Linux Support Package (LSP) kernel configuration scripts to allow the Ethernet device driver to be compiled.



Linux* Ethernet Driver Change History


- Support Intel IXP400 Software v3.0 event driven model
- Support kernel

- ethDB is decoupled from the driver;EthDB can be enabled through kernel configuration

- Support RX QoS - DSCP, VALN QoS, and Ethernet type

- Support fast path

- Support module upgrade

- Support customized Ethernet header offset

- No longer support NAPI

- Support for the Intel
® IXP43X product line of network processors
- Support NPE error handling soft recovery


-   Updated driver to support Intel IXP400 Software v2.3

-   Support NPE-A Ethernet-HSS coexistence NPE image with Live Lock Prevention

-   Enhanced performance when NAPI, fast skbuff recycling and QDisc are enabled

-   Resolved system page allocation failure warning when NAPI is enabled



- Changed from dynamic Ethernet port ID to static Ethernet port ID. (ixp0 = NPE B, ixp1 = NPE C, ixp2 = NPE A)

- Renamed dev_set_multicast_list to ixp400_dev_set_multicast_list as the naming conflicts with kernel 2.6 API.

- Renamed dev_set_mac_address to ixp400_dev_set_mac_address as the naming conflicts with kernel 2.6 API.

- Merged NF bridge patch into Ethernet Device Driver.

- Implemented module usage counter to enable proper module removal.

- Fixed NAPI defect in do_dev_stop whereby wrong argument is being passed into dev_get_drvdata.

- Changed the check of return value from function ixpEthMiiLinkStatus, instead of checking IX_ETH_ACC_SUCCESS, check for IX_SUCCESS.



- Provided NAPI support and this has enhanced the performance of Ethernet frame handling.



- Added IxFeatureCtrl function call to set the expansion bus fuse register to enable MUX for NPEA MII.



- Updated driver to support new Intel IXP400 Software v2.0 with additional support for the Intel® IXDP465 Development Platform.



- Updated driver to support Intel IXP400 Software v1.5.

- New kernel configuration and command line options supported. Refer to the most current Intel IXP400 Software Release Notes for software release 1.5.



- Linux Ethernet Driver and Kernel Integration patches have been modified to allow upgrades of the Ethernet Driver to occur independently from the MontaVista Linux kernel integration patches.

- Initiated new version 1.1 for the Ethernet driver. Previous version was released at the same time as the Intel IXP400 Software v1.4 release, and reflected internal versioning scheme (version 0_1_9).

- Fix for NETDEV WATCHDOG task reporting a Tx-Timeout error on one of the configured NPE ports, and subsequently no Ethernet frames were transmitted by the driver on that port. (Intel internal reference number: SCR #3320).

- Fix for network traffic passing through the driver not being processed correctly by the netfilter firewall feature in the kernel, if this feature is enabled (CONFIG_NETFILTER). This resulted in the possibility of the firewall incorrectly dropping or accepting received frames. (Intel internal reference num: SCR #3395).

- Fix for the NPE interface sometimes incorrectly dropping incoming frames destined for a certain station connected to a non-NPE interface in the system, if that station was previously connected to the NPE interface (e.g., station roaming). This was most likely to occur in a network in which wireless stations may roam between multiple access points and one of those access points is based upon the IXP400 software. (Intel internal reference num: SCR #3414)


Supported Versions


  Intel IXP400 Software Release v3.0

  Stock Linux


Files contained in









The following instructions are based upon unmodified installations of the Intel IXP400 Software v3.0 release and according to the instructions outlined in the most recently available Release Notes of Intel IXP400 Software v3.0.


Procedure for applying the ixp400LinuxEthernetDriver-3_0.patch and ixp400_eth.c


1.   Unzip the contents of the file to a working directory <workdir>.


2A. To apply the patch to a newly installed Linux kernel source:

      $  cd <linux>  (where <linux> is the path to the Linux kernel source tree)

      $  patch -p1 < <workdir>/ixp400LinuxEthernetDriver-<version>.patch


2B. To apply a patch to a previously installed Linux kernel source:

      $  cd <linux>  (where <linux> is the path to the Linux kernel source tree)

      $  patch -R –p1 < <workdir>/ixp400LinuxEthernetDriver-<previous_version>.patch

      $  patch -p1 < <workdir>/ixp400LinuxEthernetDriver-<version>.patch

      $  mv <linux>/drivers/net/ixp400_eth.c <linux>/drivers/net/ixp400_eth.c.bak


3.   Copy ixp400_eth.c from the <workdir> to <linux>/drivers/net/

      $  cp <workdir>/ixp400_eth.c <linux>/drivers/net/

      $  cp <workdir>/IxLinuxEDDIoctl.h <linux>/drivers/net/ 




- The ixp400LinuxEthernetDriver-3_0.patch is generated for the stock Linux It is recommended to apply this onto an unmodified Linux kernel source.