[Avila] ixp400_eth.c has to be patched?

Gianluca Mando' mando at airspot.it
Wed May 10 14:05:27 EDT 2006


Hi all,

loading my GW2345 with BSP 0.6 I can find the following in /var/log/message:

<12>Feb  3 14:02:35 kernel: ixp400_eth: ixEthMiiLinkStatus failed on PHY0.
<12>Feb  3 14:02:35 kernel: ^ICan't determine
<12>Feb  3 14:02:35 kernel: the auto negotiated parameters. Using default
values.

Furthermore when I launch the following net-snmp command from a host:

snmpwalk -v1 -c wmrtetra 192.168.3.2 interface

or also simply starting snmpd on target, the target does not answer and I can
find in /var/log/messages:

<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 0 on phy 0
<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 1 on phy 0
<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 2 on phy 0
<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 3 on phy 0
<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 4 on phy 0
<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 5 on phy 0
<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 6 on phy 0
<11>Feb  3 15:35:34 kernel: ixp400_eth: Error reading MII reg 7 on phy 0

I think the problem could be in the following block of code in file
ixp400_eth.c:

        res = ixEthMiiLinkStatus(phyNum,
                                 &linkUp,
                                 &speed100,
                                 &newDuplex,
                                 &autonegotiate);
        /* release the MII register access mutex */
        up(&miiAccessMutex);

#if defined(CONFIG_LEDMAN)
	ledman_cmd((linkUp ? LEDMAN_CMD_ON : LEDMAN_CMD_OFF),
		(priv->port_id ? LEDMAN_LAN2_LINK : LEDMAN_LAN1_LINK));
#endif

        if (res != IX_ETH_ACC_SUCCESS)
        {
#if defined(CONFIG_LEDMAN)
	    goto out;
#else
            P_WARN("ixEthMiiLinkStatus failed on PHY%d.\n"
                   "\tCan't determine\nthe auto negotiated parameters. "
                   "Using default values.\n",
                   phyNum);

            /* this shouldn't happen. exit the thread if it does */
	    return -1;
#endif
        }

....

In particular, googling I found that the problem could be the comparison:

        if (res != IX_ETH_ACC_SUCCESS)

This patch from Intel "GPL_ixp400LinuxEthernetDriverPatch-1_5_1.zip" substitute
privious istruction with

  if (res != IX_SUCCESS)

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.





More information about the Avila mailing list