From: Mike Frysinger <vapier@gentoo.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 01/27 v2] Blackfin: bfin_mac: force board_get_enetaddr() usage
Date: Tue, 3 Feb 2009 14:40:00 -0500 [thread overview]
Message-ID: <200902031440.01665.vapier@gentoo.org> (raw)
In-Reply-To: <20090203081627.9DE518322908@gemini.denx.de>
On Tuesday 03 February 2009 03:16:27 Wolfgang Denk wrote:
> Dear Mike Frysinger,
>
> In message <200902021937.26246.vapier@gentoo.org> you wrote:
> > > Please change:
> > >
> > > If the hardware design mandates that the MAC address is stored
> > > in some special place, like EEPROM etc., then the board
> > > specific init code (like the board-specific misc_init_r()
> > > function) is responsible for locating the MAC address(es) and
> > > initialize the respective environment variable(s) from it.
> > >
> > > Note that this shall be done if, and only if, the environment
> > > does not already contain these environment variables, i. e.
> > > existing variable definitions must not be overwritten.
> > >
> > > The envrionment handling code (function setevn()) will update
> > > the global data accordingly.
> >
> > it will update the global data, but nowhere will it initially seed it.
> > i'm thinking env_init() should be a unified entry point that first calls
> > down to the specific env storage (eeprom/flash/nand/etc...) and then
> > initializes the relevant bi_enetaddr members of the global data
> > structure.
>
> No, that would mix functions in a bad way as it creates new
> dependencies on what can or must be done when. env_init() in sone
> thing (initializes the environment data), but global data init is
> another issue.
>
> Maybe we should try and collect the global data initialization into
> one place - but I have to admit that I don't know if or how easily
> this can be done.
trying to do it in one go will probably be ugly and break crap, so i think
starting with a few pieces and expanding from there is fine. in this case,
we'll start with updating all the lib_*/board.c files to call global_init()
and that will in turn start with setting up bi_enetaddr.
> > > Please change:
> > >
> > > During runtime, the ethernet layer will use the global data
> > > to sync ...
> >
> > documenting it this way wont change the code ;). the ethernet code does
> > not use the global data in any way. look at eth_initialize() in
> > net/eth.c. i imagine part of the reason for this is that working with
> > multiple ethernet devices is pretty ugly atm. the static list of
> > CONFIG_HAS_ETH{1,2,3,...} makes working with more than one device very
> > messy. the ethernet code today though builds the string dynamically
> > "eth%iaddr" and so can handle arbitrary number of devices without needing
> > any changes.
>
> Well, I think we agree that the current state is a mess. Documenting
> the mess makes it easier to add to it. But should we not try to clean
> up instead? I.e. document what we think should be done, and fix the
> implementation accordingly?
yes, but having the documentation say one thing and the actual implementation
do something completely different leads to confusion. people dont know
whether the documentation is out of date, plain wrong, or what. to both ends,
we can have the documentation read what *should* be happening and then add a
note about what *actually* is happening and how it needs to be changed.
> > this also applies to the cascading of setenv() into the global data.
> > that code only handles bi_enetaddr and none of the bi_enetNaddr ... doing
> > 'set eth1addr ..." will not update bi_enet1addr ...
>
> Agreed - that needs to be fixed, too.
so does it make sense for the env code to even be calling eth_set_enetaddr() ?
after all, any network operation will call the eth init code which will take
care of rereading the mac address from the env/global data.
also, are you saying that the current method of a static # of ethernet devices
is the way to go ? we'll have to maintain a hardcoded list of places like:
#ifdef CONFIG_HAS_ETH1
... work with bi_enet1addr ...
#endif
#ifdef CONFIG_HAS_ETH2
... do same thing but now with bi_enet2addr ...
#endif
#ifdef CONFIG_HAS_ETH3
... do same thing but now with bi_enet3addr ...
#endif
#ifdef CONFIG_HAS_ETH4
... do same thing but now with bi_enet4addr ...
#endif
i think we can agree that this does not scale at all. if, however, we change
the global data to something like:
typedef struct bd_info {
...
#ifdef CONFIG_NET_MULTI
uchar bi_enetXaddr[CONFIG_NET_MULTI_MAX][6];
# define bi_enetaddr bi_enetXaddr[0]
#else
uchar bi_enetaddr[6];
#endif
...
};
then we should be able to scale nicely ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090203/da737fe8/attachment-0001.pgp
next prev parent reply other threads:[~2009-02-03 19:40 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-29 0:03 [U-Boot] [PATCH 00/27] Blackfin updates for 2009.03 (part 2) Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 01/27] Blackfin: bfin_mac: force board_get_enetaddr() usage Mike Frysinger
2009-01-29 5:43 ` Ben Warren
2009-01-29 5:53 ` Mike Frysinger
2009-01-29 6:01 ` Ben Warren
2009-01-29 6:16 ` Mike Frysinger
2009-01-29 6:20 ` Ben Warren
2009-01-29 10:43 ` Wolfgang Denk
2009-01-29 6:59 ` [U-Boot] [PATCH 01/27 v2] " Mike Frysinger
2009-01-29 7:53 ` Ben Warren
2009-01-29 10:45 ` Wolfgang Denk
2009-01-29 16:35 ` Mike Frysinger
2009-01-29 19:03 ` Wolfgang Denk
2009-01-29 20:25 ` Mike Frysinger
2009-01-29 20:41 ` Wolfgang Denk
2009-01-29 21:05 ` Mike Frysinger
2009-01-29 21:17 ` Wolfgang Denk
2009-01-29 21:48 ` Mike Frysinger
2009-01-29 22:18 ` Wolfgang Denk
2009-01-30 1:23 ` Mike Frysinger
2009-02-02 20:05 ` Mike Frysinger
2009-02-02 21:04 ` Wolfgang Denk
2009-02-03 0:37 ` Mike Frysinger
2009-02-03 8:16 ` Wolfgang Denk
2009-02-03 19:40 ` Mike Frysinger [this message]
2009-02-10 20:36 ` Mike Frysinger
2009-02-11 5:45 ` Ben Warren
2009-02-11 5:57 ` Mike Frysinger
2009-02-11 12:17 ` Wolfgang Denk
2009-02-11 19:25 ` Mike Frysinger
2009-02-11 20:15 ` Ben Warren
2009-02-12 1:29 ` Mike Frysinger
2009-02-12 6:24 ` Ben Warren
2009-02-12 6:30 ` Mike Frysinger
2009-02-12 7:33 ` Wolfgang Denk
2009-02-12 7:57 ` Mike Frysinger
2009-01-30 0:59 ` [U-Boot] [PATCH] net: new utility functions eth_{parse, {get, set}env}_enetaddr() Mike Frysinger
2009-01-30 1:09 ` [U-Boot] [PATCH 01/27 v3] Blackfin: bfin_mac: force boards to setup the MAC themselves Mike Frysinger
2009-01-30 1:09 ` [U-Boot] [PATCH] Blackfin: bf537-stamp: rewrite MAC-in-flash handling Mike Frysinger
2009-01-29 17:49 ` [U-Boot] [PATCH 01/27] Blackfin: bfin_mac: force board_get_enetaddr() usage Scott Wood
2009-01-29 10:30 ` Wolfgang Denk
2009-01-29 0:03 ` [U-Boot] [PATCH 02/27] Blackfin: bfin_mac: set MDCDIV based on SCLK Mike Frysinger
2009-01-29 5:46 ` Ben Warren
2009-01-29 0:03 ` [U-Boot] [PATCH 03/27] Blackfin: bfin_mac: cleanup MII/PHY functions Mike Frysinger
2009-01-29 5:48 ` Ben Warren
2009-01-29 0:03 ` [U-Boot] [PATCH 04/27] Blackfin: bfin_mac: respect CONFIG_PHY_{ADDR, CLOCK_FREQ} Mike Frysinger
2009-01-29 5:50 ` Ben Warren
2009-01-29 0:03 ` [U-Boot] [PATCH 05/27] Blackfin: bfin_mac: use common debug() Mike Frysinger
2009-01-29 5:51 ` Ben Warren
2009-01-29 0:03 ` [U-Boot] [PATCH 06/27] Blackfin: bfin_mac: convert CONFIG_BFIN_MAC_RMII to CONFIG_RMII Mike Frysinger
2009-01-29 6:03 ` Ben Warren
2009-01-29 0:03 ` [U-Boot] [PATCH 07/27] Blackfin: bfin_mac: cleanup pointer/casts for aliasing issues Mike Frysinger
2009-01-29 6:05 ` Ben Warren
2009-01-29 0:03 ` [U-Boot] [PATCH 08/27] Blackfin: only build post code when CONFIG_POST Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 09/27] Blackfin: add driver for on-chip SPI controller Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 10/27] Blackfin: dont check baud if it wont actually get used Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 11/27] Blackfin: enable --gc-sections Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 12/27] Blackfin: cache core/system clock values Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 13/27] Blackfin: setup bi_enetaddr for single nets Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 14/27] Blackfin: rewrite cache handling functions Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 15/27] Blackfin: dma_memcpy(): fix random failures Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 16/27] Blackfin: only flag L1 instruction for DMA memcpy Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 17/27] Blackfin: use 8/16/32 bit transfer widths in dma_memcpy() Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 18/27] Blackfin: fix up EBIU defines Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 19/27] Blackfin: build with -mno-fdpic Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 20/27] Blackfin: add driver for on-chip NAND controller Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 21/27] Blackfin: add driver for on-chip ATAPI controller Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 22/27] Blackfin: add port I bits Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 23/27] Blackfin: update asm-blackfin/posix_types.h to latest Linux version Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 24/27] Blackfin: set default CONFIG_ENV_SPI_CS based on bootrom Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 25/27] Blackfin: output booting source when booting Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 26/27] Blackfin: add port muxing for BF51x SPI Mike Frysinger
2009-01-29 0:03 ` [U-Boot] [PATCH 27/27] Blackfin: add driver for on-chip MMC/SD controller Mike Frysinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200902031440.01665.vapier@gentoo.org \
--to=vapier@gentoo.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox