[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: boot loader not working after reboot host - more info



Yes, this is the same theory as I have. The easiest way to avoid
this problem is to add a hub.

-----Original Message-----
From: owner-dev-etrax@xxxxxxx.com]On">mailto:owner-dev-etrax@xxxxxxx.com]On
Behalf Of Jarkko Tuomi
Sent: Monday, November 25, 2002 12:53 PM
To: Dave Rovner; dev-etrax
Subject: Re: boot loader not working after reboot host - more info



This might have something to do with network full/half duplex setting.

The settings of the MAC (inside Etrax) and PHY (chip next to it) must match.
Usually this works so that the PHY does autonegotiation with the link
partner. The kernel driver reads the PHY full/half flag every five seconds,
and updates the setting of the MAC.

Now the boot code doesn't know how to read the required information from the
PHY, so it sets half duplex just to be sure. When the board is connected to
a hub, PHY negotiates half duplex and everything is fine. When connected to
a switch or straight to a PC network card, most PHYs negotiate full duplex,
presumable also the one on the devboard LX.

Mismatch in the settings leads to all kinds of strange network problems. For
example our board refused to work in the boot mode when connected to a
switch. We then changed the microcontroller code that turns the PHY on in
the first place to force half duplex, and now everything works fine.
Unfortunately the devboard doens't have this possibility.

Some network drivers (at least old 3com cards) do autonegotiation only when
the driver is loaded. It's possible that the settings of the PC network card
depend on what is connected at the boot time. My guess is that if the
connector is empty, it chooses half duplex, if the devboard is connected, it
chooses full duplex.

I suggest one of the following:

-try to boot the PC with the network cable disconnected
-restrict the PC network card advertised capabilities to half duplex (at
least the Debian package mii-diag can do this)
-get a hub
-force the devboard PHY to half duplex


Hopefully this helps,

Jarkko