Loading ...
Sorry, an error occurred while loading the content.

[nslu2-linux] Linux 2.6.26.3 - Loading Ethernet microcode

Expand Messages
  • linuxrouter
    I have been working on trying to get Ethernet support to work via the 2.6.26.3 kernel and have been having trouble loading the microcode. I put together a
    Message 1 of 3 , Aug 30 11:08 PM
    • 0 Attachment
      I have been working on trying to get Ethernet support to work via the
      2.6.26.3 kernel and have been having trouble loading the microcode. I put
      together a custom file system (built as big endian) that is fairly simple
      with busybox, necessary glibc libraries, udev-127, and a few other things. I
      downloaded the IPL_ixp400NpeLibrary-2.4.zip file from the Intel site. Using
      the source files in this archive and the associated IxNpeMicrocode.h file I
      was able to build the following files:

      NPE-A.10820200 -> NPE-A
      NPE-B.01000201 -> NPE-B
      NPE-B.01020201
      NPE-C.02000201 -> NPE-C

      I put these files in /lib/firmware.

      When I load the ixp4xx_eth module, I get the following in the kernel log:

      eth0: MII PHY 0 on NPE-B
      eth0: MII read failed
      eth0: MII read failed
      eth1: MII PHY 1 on NPE-C

      ifconfig shows that there is no associated Hwaddress set on either eth0 or
      eth1. If I set the hw address manually and turn up eth0, I get this:

      firmware: requesting NPE-B
      <significant delay>
      ifconfig: SIOCSIFFLAGS: No such file or directory

      I am guessing that the driver cannot find the microcode. I have read through
      the Intel documentation, which states that you can make a device called
      ixNpe (c 241 0) and cat the microcode to this device. However, if I do that
      I get a return message of “No such device or address”. I do not know if the
      open source driver uses a different major for the device node. I do have the
      /lib/udev/firmware.sh file installed along with the rest of the udev
      package.

      I was wondering if anyone knew how I could get the microcode loaded with the
      2.6.26.3 kernel and its built in Ethernet driver? Is there a patch I need
      for the kernel? Right now I am loading the kernel and file system to RAM via
      Redboot for testing. Thanks in advance.

      --
      View this message in context: http://www.nabble.com/Linux-2.6.26.3---Loading-Ethernet-microcode-tp19239665p19239665.html
      Sent from the Nslu2 - Linux mailing list archive at Nabble.com.
    • linuxrouter
      I managed to find a solution to my problem. The microcode loading issue was related to udev, which is fixed now. Both NPE-B and NPE-C load correctly. The MII
      Message 2 of 3 , Sep 2, 2008
      • 0 Attachment
        I managed to find a solution to my problem. The microcode loading issue was
        related to udev, which is fixed now. Both NPE-B and NPE-C load correctly.

        The MII read failed messages was from a different issue. Even after loading
        the microcode, I got these read failed messages repeatedly after turning up
        eth0. I also got a notice that the link state was down on eth0. I was able
        to turn up eth1 and assign an address to it without any issue even though I
        could not access the network. Eth1 would show a status link down after
        disconnecting the Ethernet cable and link up after reconnecting. After
        searching around the Internet for quite a while I noticed that others were
        having some issues with the PHY value being incorrect. I made a couple small
        modifications to this file:

        --- linux-2.6.26.3/arch/arm/mach-ixp4xx/ixdp425-setup.c.orig 2008-08-20
        11:11:37.000000000 -0700
        +++ linux-2.6.26.3/arch/arm/mach-ixp4xx/ixdp425-setup.c 2008-09-01
        17:11:25.718895843 -0700
        @@ -180,11 +180,11 @@
        /* Built-in 10/100 Ethernet MAC interfaces */
        static struct eth_plat_info ixdp425_plat_eth[] = {
        {
        - .phy = 0,
        + .phy = -1,
        .rxq = 3,
        .txreadyq = 20,
        }, {
        - .phy = 1,
        + .phy = 0,
        .rxq = 4,
        .txreadyq = 21,
        }

        After this, I was able to turn up eth0 without issue and have network
        connectivity although I still had to set the hardware address manually
        (defaults to zeroes).

        There might be a better way to fix this problem, but I wanted to post this
        in case any one else has a problem getting network support to work via the
        2.6.26 kernel on a NSLU2.

        Jeroen
        --
        View this message in context: http://www.nabble.com/Linux-2.6.26.3---Loading-Ethernet-microcode-tp19239665p19265962.html
        Sent from the Nslu2 - Linux mailing list archive at Nabble.com.
      • Rod Whitby
        ... The NSLU2 kernel does not use the ixdp425-setup.c file. MII port allocation is done in the nslu2-setup.c file in the mainline kernel. -- Rod
        Message 3 of 3 , Sep 2, 2008
        • 0 Attachment
          linuxrouter wrote:
          > The MII read failed messages was from a different issue. Even after loading
          > the microcode, I got these read failed messages repeatedly after turning up
          > eth0. I also got a notice that the link state was down on eth0. I was able
          > to turn up eth1 and assign an address to it without any issue even though I
          > could not access the network. Eth1 would show a status link down after
          > disconnecting the Ethernet cable and link up after reconnecting. After
          > searching around the Internet for quite a while I noticed that others were
          > having some issues with the PHY value being incorrect. I made a couple small
          > modifications to this file:
          >
          > --- linux-2.6.26.3/arch/arm/mach-ixp4xx/ixdp425-setup.c.orig 2008-08-20
          > 11:11:37.000000000 -0700
          > +++ linux-2.6.26.3/arch/arm/mach-ixp4xx/ixdp425-setup.c 2008-09-01
          > 17:11:25.718895843 -0700
          ...
          > There might be a better way to fix this problem, but I wanted to post this
          > in case any one else has a problem getting network support to work via the
          > 2.6.26 kernel on a NSLU2.

          The NSLU2 kernel does not use the ixdp425-setup.c file. MII port
          allocation is done in the nslu2-setup.c file in the mainline kernel.

          -- Rod
        Your message has been successfully submitted and would be delivered to recipients shortly.