ixp425-fw.README
1 $NetBSD: ixp425-fw.README,v 1.7 2023/06/18 19:08:18 gutteridge Exp $
2
3 IXP425 NPE Microcode
4 ~~~~~~~~~~~~~~~~~~~~
5
6 The IXP425 contains up to three network co-processors called NPEs,
7 "Network Processing Engines". These control all the networking features
8 of the IXP425 and are usually supported by Access Library (AL) software
9 and NPE microcode obtained from Intel.
10
11 The AL source code and compiled object files are encumbered by a license
12 which precludes its distribution with NetBSD.
13
14 However, NetBSD includes source for a native driver for NPE Ethernet
15 written by Sam Leffler. The driver requires that Intel's microcode is
16 loaded onto the NPE, but since we cannot distribute the microcode, it
17 must be downloaded from Intel's website after agreeing to their click-
18 through license.
19
20 You must grab the NPE microcode from here:
21
22 https://downloadcenter.intel.com/download/13757/IXP400-Software-NPE-Microcode-v3-0-without-crypto
23
24 SHA1 (IPL_ixp400NpeLibrary-3_0.zip) = dda6b27265e6db3dfec68361644197c0f311a07b
25
26 or the older version which is archived here:
27 https://mirror2.openwrt.org/sources/IPL_ixp400NpeLibrary-2_4.zip
28
29 SHA1 (IPL_ixp400NpeLibrary-2_4.zip) = abf1562e750e16e6f9baf9892a59640f863a693e
30
31 Select the "Download (without Crypto)" link in the "NPE Microcode"
32 section. Note that there is no benefit in selecting the "with Crypto"
33 microcode at this time since NetBSD does not support it.
34
35 For reference, the "with Crypto" version is available here:
36 https://downloads.openwrt.org/sources/IPL_ixp400NpeLibraryWithCrypto-2_4.zip
37
38 SHA1(IPL_ixp400NpeLibraryWithCrypto-2_4.zip)= 48beb80564fbbb7fb7861188cad26e896b5a5afc
39
40 Note: At the time of writing (February 2017), the NPE Microcode is at
41 version 3.0. However, the last known microcode version to work is 2.4.
42
43 After clicking the link, you will be directed to a click-through license
44 page. Assuming you agree to the terms of the license (and you are
45 *strongly* advised to print it out and read it carefully) you will then
46 be able to download a ZIP file containing the microcode.
47
48 Extract the microcode under any decent Unix-like system using the "unzip"
49 command provided with the OS, or with the version included in the pkgsrc
50 collection under archivers/unzip:
51
52 $ unzip IPL_ixp400NpeLibrary-2_4.zip
53
54 Next, you must generate a microcode image suitable for inclusion in the
55 NetBSD kernel.
56
57 $ cd ixp400_xscale_sw/src/npeDl
58
59 In this directory, create a file called IxNpeMicrocode.h, and populate
60 it with the following two #defines:
61
62 #define IX_NPEDL_NPEIMAGE_NPEB_ETH
63 #define IX_NPEDL_NPEIMAGE_NPEC_ETH
64
65 Note: If you know that you will only ever use Ethernet on NPE-B, you can
66 omit the second line, and vice-versa.
67
68 Now compile and run ixNpeDlImageConverter.c:
69
70 $ cc ixNpeDlImageConverter.c -o foo
71 $ ./foo
72
73 Congratulations! You should now have a file called "IxNpeMicrocode.dat"
74 in the current directory. Please take heed of the license you agreed to
75 when you downloaded the Microcode. The license contains clauses which
76 control the redistribution of this microcode object file.
77
78 Now copy "IxNpeMicrocode.dat" to the sys/arch/arm/xscale directory in
79 your NetBSD source tree. All you have to do now is run config(1) and
80 build your kernel.
81
82 If all went as planned, the Ethernet controller(s) will show up as npe0
83 and npe1. That's all there is to it!
84
85 It is planned that pkgsrc will, eventually, automate most of the above
86 procedure.
87