NetBSD-5.0.2/sys/arch/arm/xscale/ixp425-fw.README

$NetBSD: ixp425-fw.README,v 1.1 2006/12/10 10:01:49 scw Exp $

IXP425 NPE Microcode
~~~~~~~~~~~~~~~~~~~~

The IXP425 contains up to three network co-processors called NPEs,
"Network Processing Engines". These control all the networking features
of the IXP425 and are usually supported by Access Library (AL) software
and NPE microcode obtained from Intel.

The AL source code and compiled object files are encumbered by a license
which precludes its distribution with NetBSD.

However, NetBSD includes source for a native driver for NPE Ethernet
written by Sam Leffler. The driver requires that Intel's microcode is
loaded onto the NPE, but since we cannot distribute the microcode, it
must be downloaded from Intel's website after agreeing to their click-
through license.

You must grab the NPE microcode from here:

 http://www.intel.com/design/network/products/npfamily/ixp400_current.htm

Select the "Download (without Crypto)" link in the "NPE Microcode"
section. Note that there is no benefit in selecting the "with Cypto"
microcode at this time since NetBSD does not support it.

Note: At the time of writing (December 2006), the NPE Microcode is at
version 2.3. Newer versions may not work with NetBSD's native Ethernet
driver. If this is the case, let us know via send-pr(1).

After clicking the link, you will be directed to a click-through license
page. Assuming you agree to the terms of the license (and you are
*strongly* advised to print it out and read it carefully) you will then
be able to download a ZIP file containing the microcode.

Extract the microcode under any decent Unix-like system using the "unzip"
command provided with the OS, or with the version included in the pkgsrc
collection under archivers/unzip:

	$ unzip IPL_ixp400NpeLibrary-2_3.zip

Next, you must generate a microcode image suitable for inclusion in the
NetBSD kernel.

	$ cd ixp400_xscale_sw/src/npeDl

In this directory, create a file called IxNpeMicrocode.h, and populate
it with the following two #defines:

#define IX_NPEDL_NPEIMAGE_NPEB_ETH
#define IX_NPEDL_NPEIMAGE_NPEC_ETH

Note: If you know that you will only ever use Ethernet on NPE-B, you can
omit the second line, and vice-versa.

Now compile and run ixNpeDlImageConverter.c:

	$ cc ixNpeDlImageConverter.c -o foo
	$ ./foo

Congratulations! You should now have a file called "IxNpeMicrocode.dat"
in the current directory. Please take heed of the license you agreed to
when you downloaded the Microcode. The license contains clauses which
control the redistribution of this microcode object file.

Now copy "IxNpeMicrocode.dat" to the sys/arch/arm/xscale directory in
your NetBSD source tree. All you have to do now is run config(1) and
build your kernel.

If all went as planned, the Ethernet controller(s) will show up as npe0
and npe1. That's all there is to it!

It is planned that pkgsrc will, eventually, automate most of the above
procedure.