11.7Sgutterid$NetBSD: ixp425-fw.README,v 1.7 2023/06/18 19:08:18 gutteridge Exp $
21.1Sscw
31.1SscwIXP425 NPE Microcode
41.1Sscw~~~~~~~~~~~~~~~~~~~~
51.1Sscw
61.1SscwThe IXP425 contains up to three network co-processors called NPEs,
71.1Sscw"Network Processing Engines". These control all the networking features
81.1Sscwof the IXP425 and are usually supported by Access Library (AL) software
91.1Sscwand NPE microcode obtained from Intel.
101.1Sscw
111.1SscwThe AL source code and compiled object files are encumbered by a license
121.1Sscwwhich precludes its distribution with NetBSD.
131.1Sscw
141.1SscwHowever, NetBSD includes source for a native driver for NPE Ethernet
151.1Sscwwritten by Sam Leffler. The driver requires that Intel's microcode is
161.1Sscwloaded onto the NPE, but since we cannot distribute the microcode, it
171.1Sscwmust be downloaded from Intel's website after agreeing to their click-
181.1Sscwthrough license.
191.1Sscw
201.1SscwYou must grab the NPE microcode from here:
211.1Sscw
221.3Stnn https://downloadcenter.intel.com/download/13757/IXP400-Software-NPE-Microcode-v3-0-without-crypto
231.1Sscw
241.4StnnSHA1 (IPL_ixp400NpeLibrary-3_0.zip) = dda6b27265e6db3dfec68361644197c0f311a07b
251.4Stnn
261.4Stnnor the older version which is archived here:
271.5Sthorpej https://mirror2.openwrt.org/sources/IPL_ixp400NpeLibrary-2_4.zip
281.4Stnn
291.4StnnSHA1 (IPL_ixp400NpeLibrary-2_4.zip) = abf1562e750e16e6f9baf9892a59640f863a693e
301.4Stnn
311.1SscwSelect the "Download (without Crypto)" link in the "NPE Microcode"
321.7Sgutteridsection. Note that there is no benefit in selecting the "with Crypto"
331.1Sscwmicrocode at this time since NetBSD does not support it.
341.1Sscw
351.6SandvarFor reference, the "with Crypto" version is available here:
361.5Sthorpej  https://downloads.openwrt.org/sources/IPL_ixp400NpeLibraryWithCrypto-2_4.zip
371.5Sthorpej
381.5SthorpejSHA1(IPL_ixp400NpeLibraryWithCrypto-2_4.zip)= 48beb80564fbbb7fb7861188cad26e896b5a5afc
391.5Sthorpej
401.4StnnNote: At the time of writing (February 2017), the NPE Microcode is at
411.4Stnnversion 3.0. However, the last known microcode version to work is 2.4.
421.2Sscw
431.1SscwAfter clicking the link, you will be directed to a click-through license
441.1Sscwpage. Assuming you agree to the terms of the license (and you are
451.1Sscw*strongly* advised to print it out and read it carefully) you will then
461.1Sscwbe able to download a ZIP file containing the microcode.
471.1Sscw
481.1SscwExtract the microcode under any decent Unix-like system using the "unzip"
491.1Sscwcommand provided with the OS, or with the version included in the pkgsrc
501.1Sscwcollection under archivers/unzip:
511.1Sscw
521.4Stnn	$ unzip IPL_ixp400NpeLibrary-2_4.zip
531.1Sscw
541.1SscwNext, you must generate a microcode image suitable for inclusion in the
551.1SscwNetBSD kernel.
561.1Sscw
571.1Sscw	$ cd ixp400_xscale_sw/src/npeDl
581.1Sscw
591.1SscwIn this directory, create a file called IxNpeMicrocode.h, and populate
601.1Sscwit with the following two #defines:
611.1Sscw
621.1Sscw#define IX_NPEDL_NPEIMAGE_NPEB_ETH
631.1Sscw#define IX_NPEDL_NPEIMAGE_NPEC_ETH
641.1Sscw
651.1SscwNote: If you know that you will only ever use Ethernet on NPE-B, you can
661.1Sscwomit the second line, and vice-versa.
671.1Sscw
681.1SscwNow compile and run ixNpeDlImageConverter.c:
691.1Sscw
701.1Sscw	$ cc ixNpeDlImageConverter.c -o foo
711.1Sscw	$ ./foo
721.1Sscw
731.1SscwCongratulations! You should now have a file called "IxNpeMicrocode.dat"
741.1Sscwin the current directory. Please take heed of the license you agreed to
751.1Sscwwhen you downloaded the Microcode. The license contains clauses which
761.1Sscwcontrol the redistribution of this microcode object file.
771.1Sscw
781.1SscwNow copy "IxNpeMicrocode.dat" to the sys/arch/arm/xscale directory in
791.1Sscwyour NetBSD source tree. All you have to do now is run config(1) and
801.1Sscwbuild your kernel.
811.1Sscw
821.1SscwIf all went as planned, the Ethernet controller(s) will show up as npe0
831.1Sscwand npe1. That's all there is to it!
841.1Sscw
851.1SscwIt is planned that pkgsrc will, eventually, automate most of the above
861.1Sscwprocedure.
87