ixp425-fw.README revision 1.4
11.4Stnn$NetBSD: ixp425-fw.README,v 1.4 2017/02/10 23:11:30 tnn 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.4Stnn https://downloads.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.1Sscwsection. Note that there is no benefit in selecting the "with Cypto" 331.1Sscwmicrocode at this time since NetBSD does not support it. 341.1Sscw 351.4StnnNote: At the time of writing (February 2017), the NPE Microcode is at 361.4Stnnversion 3.0. However, the last known microcode version to work is 2.4. 371.2Sscw 381.1SscwAfter clicking the link, you will be directed to a click-through license 391.1Sscwpage. Assuming you agree to the terms of the license (and you are 401.1Sscw*strongly* advised to print it out and read it carefully) you will then 411.1Sscwbe able to download a ZIP file containing the microcode. 421.1Sscw 431.1SscwExtract the microcode under any decent Unix-like system using the "unzip" 441.1Sscwcommand provided with the OS, or with the version included in the pkgsrc 451.1Sscwcollection under archivers/unzip: 461.1Sscw 471.4Stnn $ unzip IPL_ixp400NpeLibrary-2_4.zip 481.1Sscw 491.1SscwNext, you must generate a microcode image suitable for inclusion in the 501.1SscwNetBSD kernel. 511.1Sscw 521.1Sscw $ cd ixp400_xscale_sw/src/npeDl 531.1Sscw 541.1SscwIn this directory, create a file called IxNpeMicrocode.h, and populate 551.1Sscwit with the following two #defines: 561.1Sscw 571.1Sscw#define IX_NPEDL_NPEIMAGE_NPEB_ETH 581.1Sscw#define IX_NPEDL_NPEIMAGE_NPEC_ETH 591.1Sscw 601.1SscwNote: If you know that you will only ever use Ethernet on NPE-B, you can 611.1Sscwomit the second line, and vice-versa. 621.1Sscw 631.1SscwNow compile and run ixNpeDlImageConverter.c: 641.1Sscw 651.1Sscw $ cc ixNpeDlImageConverter.c -o foo 661.1Sscw $ ./foo 671.1Sscw 681.1SscwCongratulations! You should now have a file called "IxNpeMicrocode.dat" 691.1Sscwin the current directory. Please take heed of the license you agreed to 701.1Sscwwhen you downloaded the Microcode. The license contains clauses which 711.1Sscwcontrol the redistribution of this microcode object file. 721.1Sscw 731.1SscwNow copy "IxNpeMicrocode.dat" to the sys/arch/arm/xscale directory in 741.1Sscwyour NetBSD source tree. All you have to do now is run config(1) and 751.1Sscwbuild your kernel. 761.1Sscw 771.1SscwIf all went as planned, the Ethernet controller(s) will show up as npe0 781.1Sscwand npe1. That's all there is to it! 791.1Sscw 801.1SscwIt is planned that pkgsrc will, eventually, automate most of the above 811.1Sscwprocedure. 82