[U-Boot] [PATCH 1/2 v2] net, fec_mxc: only setup the device enetaddr with eeprom value, if ethaddr is not setup
Detlev Zundel
dzu at denx.de
Wed Mar 31 16:46:25 CEST 2010
Hi Ben,
> Hi Detlev,
>
> On Wed, Mar 31, 2010 at 6:44 AM, Detlev Zundel <dzu at denx.de> wrote:
>
> Hi Ben,
>
> > Hold on a second. This patch is wrong. As Mike has pointed out, the
> > net library already gets the MAC address from the environment. The
> > correct flow is:
> >
> > 1. Read from hardware in initialize() function
> > 2. Read from environment in net/eth.c after initialize()
> > 3. Give priority to the value in the environment if a conflict
> > 4. Program hardware in the device's init() function.
> >
> > If somebody wants to subvert the 'design philosophy', the right way is
> > to call eth_dev->init() in board code.
>
> This would mean that for the real problem of a missing mac address, the
> device then is initialized completely adding the autonegotation timeout
> to every bootup sequence, correct?
>
>
> My suggestion here is a crude hack, and definitely does more than needed. It
> has the advantage of having narrow scope (is limited to the board in
> question).
This specific problem in the meantime hit me on multiple arm boards with
different network interfaces so I think it has a broader audience than a
single board.
> If it is, then it doesn't solve my problem in an acceptable way. On the
> other hand a different route occured to Wolfgang and me in a lengthy
> discussion. This will need a little broader interpretation of the
> design guidelines, but as I still cannot see any downside to this and it
> will also fix some inconsistent behaviour _that we currently have_
> ("setenv ethaddr ...", do not do any network transfer and boot linux), I
> want to follow this route.
>
> I will try to implement this in form of a patch in order to keep the
> discussion close to the effects on the code base.
>
>
> I'm looking forward to seeing what you come up with. I personally don't have a
> problem with adding the few ns to boot-up time that programming an SOC's MAC
> would take, but dislike the piece-meal approach that's been done so far.
I fully agree. Previously I was under the impression that we already
have a "fast initialization" (probe) and a "full initialization" (init)
of the network interfaces, where programming the mac would (on a first
stab) fit into the probe part (and some drivers obviously do/did this).
In the meantime it seems like it is a broader problem of keeping
"ethaddr" and friends in sync with the real hardware. Although this is
something I personally always took for granted, it currently is most of
the time but not always correct.
If we solve the latter problem in a nice way, the initial problem will
simply disappear (or so I hope) ;)
Cheers
Detlev
--
You live and learn
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
More information about the U-Boot
mailing list