2009-01-12 09:37:35

by bigboy

[permalink] [raw]
Subject: How to active/validate the NPE-B NIC of intel_ixdp465?

Hi,

I have an Intel IXDP465 target with a NPE-B mezzanine card and that
was supported & validated with linux-2.6.21 + "Intel IXP400 Software
Access Library". And now the NPE ether net driver moved into the linux
baseline (drivers/net/arm/ixp4xx_eth.c) so I want to try it without
Intel's lib but failed. Here is my operations:

Build the zImage with linux-2.6.28, I configure the kernel with
ixp4xx_defconfig and just change the IXP4XX_ETH to Y.

Build the firmware for NPE-B:

-) download the "Intel(R) IXP400 software - Access Library
(non-crypto)" to get the head file IxNpeMicrocode.h;

-) download the "Intel IXP400 software - NPE microcode (non-crypto)",
both 2.4 and 3.0/3.0.1 version, unpack it and copy the head file
IxNpeMicrocode.h to its source code subdirectory;

-) Edit the head file and comment out those macros for NPE-A and NPE-C
and just leave the one for NPE-B;

-) Edit the IxNpeMicrocode.c and comment out line 25664, the 8 bytes
of "END OF IMAGE LIBRARY MARKER".

-) "gcc ixNpeDlImageConverter.c" and get a a.out; run it and get the
firmware called IxNpeMicrocode.dat.

-) Rename the IxNpeMicrocode.dat to NPE-B and copy it to the NFS
rootfs of the target in /lib/firmware.


There is a PCI E100 NIC and the linux kernel mount NFS rootfs through
it. The kernel can find two NICs related to NPE, eth1 for NPE-B and
eth2 for NPE-C. Then, I tried to active the NIC of NPE-B(eth1):

-) "ifconfig eth1 hw ether 1234567890ab 192.168.1.1 netmask
255.255.255.0 broadcast 192.168.1.255". With this I can see the driver
output "eht1: link up, speed 100 Mb/s, full duplex".

-) Then "ping -I eth1 192.168.1.2". Then all I can get is "Destination
Host Unreachable" :-(

With the firmware built with Microcode-V2.4, it can send up to 6
packages(get tx irq) and at last the "Link is down"; with the firmware
of V3.0, no package TX and at last the TX queue full and was
deactivated. With both of these firmware, no packages received.

I wonder if there are anything wrong with my operations or if I need
some other special configurations/operations? Or any advises on
debugging that.


Thanks
Xiao


2009-01-12 10:09:21

by Mikael Pettersson

[permalink] [raw]
Subject: Re: How to active/validate the NPE-B NIC of intel_ixdp465?

bigboy writes:
> Hi,
>
> I have an Intel IXDP465 target with a NPE-B mezzanine card and that
> was supported & validated with linux-2.6.21 + "Intel IXP400 Software
> Access Library". And now the NPE ether net driver moved into the linux
> baseline (drivers/net/arm/ixp4xx_eth.c) so I want to try it without
> Intel's lib but failed. Here is my operations:
>
> Build the zImage with linux-2.6.28, I configure the kernel with
> ixp4xx_defconfig and just change the IXP4XX_ETH to Y.
>
> Build the firmware for NPE-B:
>
> -) download the "Intel(R) IXP400 software - Access Library
> (non-crypto)" to get the head file IxNpeMicrocode.h;
>
> -) download the "Intel IXP400 software - NPE microcode (non-crypto)",
> both 2.4 and 3.0/3.0.1 version, unpack it and copy the head file
> IxNpeMicrocode.h to its source code subdirectory;
>
> -) Edit the head file and comment out those macros for NPE-A and NPE-C
> and just leave the one for NPE-B;
>
> -) Edit the IxNpeMicrocode.c and comment out line 25664, the 8 bytes
> of "END OF IMAGE LIBRARY MARKER".
>
> -) "gcc ixNpeDlImageConverter.c" and get a a.out; run it and get the
> firmware called IxNpeMicrocode.dat.
>
> -) Rename the IxNpeMicrocode.dat to NPE-B and copy it to the NFS
> rootfs of the target in /lib/firmware.
>
>
> There is a PCI E100 NIC and the linux kernel mount NFS rootfs through
> it. The kernel can find two NICs related to NPE, eth1 for NPE-B and
> eth2 for NPE-C. Then, I tried to active the NIC of NPE-B(eth1):
>
> -) "ifconfig eth1 hw ether 1234567890ab 192.168.1.1 netmask
> 255.255.255.0 broadcast 192.168.1.255". With this I can see the driver
> output "eht1: link up, speed 100 Mb/s, full duplex".
>
> -) Then "ping -I eth1 192.168.1.2". Then all I can get is "Destination
> Host Unreachable" :-(
>
> With the firmware built with Microcode-V2.4, it can send up to 6
> packages(get tx irq) and at last the "Link is down"; with the firmware
> of V3.0, no package TX and at last the TX queue full and was
> deactivated. With both of these firmware, no packages received.
>
> I wonder if there are anything wrong with my operations or if I need
> some other special configurations/operations? Or any advises on
> debugging that.

You'd have better luck reaching the people in charge of this
on the arm kernel mailing list, or possibly the netdev list.

As I recall, the procedure for converting Intel's microcode .h
file to something ixp4xx_eth wanted to load involved using a
.h or .c file off the ixp4xx_eth driver's old web site.
(I don't have the details handy.)

2009-01-13 01:15:27

by bigboy

[permalink] [raw]
Subject: Re: How to active/validate the NPE-B NIC of intel_ixdp465?

Thanks for your kindly remind. :-)

Thanks
Xiao

On Mon, Jan 12, 2009 at 6:09 PM, Mikael Pettersson <[email protected]> wrote:
>
> bigboy writes:
> > Hi,
> >
> > I have an Intel IXDP465 target with a NPE-B mezzanine card and that
> > was supported & validated with linux-2.6.21 + "Intel IXP400 Software
> > Access Library". And now the NPE ether net driver moved into the linux
> > baseline (drivers/net/arm/ixp4xx_eth.c) so I want to try it without
> > Intel's lib but failed. Here is my operations:
> >
> > Build the zImage with linux-2.6.28, I configure the kernel with
> > ixp4xx_defconfig and just change the IXP4XX_ETH to Y.
> >
> > Build the firmware for NPE-B:
> >
> > -) download the "Intel(R) IXP400 software - Access Library
> > (non-crypto)" to get the head file IxNpeMicrocode.h;
> >
> > -) download the "Intel IXP400 software - NPE microcode (non-crypto)",
> > both 2.4 and 3.0/3.0.1 version, unpack it and copy the head file
> > IxNpeMicrocode.h to its source code subdirectory;
> >
> > -) Edit the head file and comment out those macros for NPE-A and NPE-C
> > and just leave the one for NPE-B;
> >
> > -) Edit the IxNpeMicrocode.c and comment out line 25664, the 8 bytes
> > of "END OF IMAGE LIBRARY MARKER".
> >
> > -) "gcc ixNpeDlImageConverter.c" and get a a.out; run it and get the
> > firmware called IxNpeMicrocode.dat.
> >
> > -) Rename the IxNpeMicrocode.dat to NPE-B and copy it to the NFS
> > rootfs of the target in /lib/firmware.
> >
> >
> > There is a PCI E100 NIC and the linux kernel mount NFS rootfs through
> > it. The kernel can find two NICs related to NPE, eth1 for NPE-B and
> > eth2 for NPE-C. Then, I tried to active the NIC of NPE-B(eth1):
> >
> > -) "ifconfig eth1 hw ether 1234567890ab 192.168.1.1 netmask
> > 255.255.255.0 broadcast 192.168.1.255". With this I can see the driver
> > output "eht1: link up, speed 100 Mb/s, full duplex".
> >
> > -) Then "ping -I eth1 192.168.1.2". Then all I can get is "Destination
> > Host Unreachable" :-(
> >
> > With the firmware built with Microcode-V2.4, it can send up to 6
> > packages(get tx irq) and at last the "Link is down"; with the firmware
> > of V3.0, no package TX and at last the TX queue full and was
> > deactivated. With both of these firmware, no packages received.
> >
> > I wonder if there are anything wrong with my operations or if I need
> > some other special configurations/operations? Or any advises on
> > debugging that.
>
> You'd have better luck reaching the people in charge of this
> on the arm kernel mailing list, or possibly the netdev list.
>
> As I recall, the procedure for converting Intel's microcode .h
> file to something ixp4xx_eth wanted to load involved using a
> .h or .c file off the ixp4xx_eth driver's old web site.
> (I don't have the details handy.)