[U-Boot] [PATCH] x86: galileo: Define mac addresses for the on-chip ethernet ports

Joe Hershberger joe.hershberger at gmail.com
Wed Apr 22 02:26:45 CEST 2015


Hi Bin,

On Tue, Apr 21, 2015 at 7:20 PM, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Joe,
>
> On Wed, Apr 22, 2015 at 3:41 AM, Joe Hershberger
> <joe.hershberger at gmail.com> wrote:
>> Hi Bin Meng,
>>
>> On Tue, Apr 21, 2015 at 8:54 AM, Simon Glass <sjg at chromium.org> wrote:
>>> Hi Bin,
>>>
>>> On 20 April 2015 at 23:05, Bin Meng <bmeng.cn at gmail.com> wrote:
>>>> Not like other x86 chipset, there is no EEPROM for the ethernet
>>>> controller on the Intel Quark SoC to retreive the mac address
>>>> after power up. With pre-defined mac addresses, U-Boot boots up
>>>> and will not show "Error: dwmac.90006000 address not set" message.
>>>>
>>>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>>>> ---
>>>>
>>>>  include/configs/galileo.h | 2 ++
>>>>  1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/include/configs/galileo.h b/include/configs/galileo.h
>>>> index d4d0eb3..961d087 100644
>>>> --- a/include/configs/galileo.h
>>>> +++ b/include/configs/galileo.h
>>>> @@ -62,6 +62,8 @@
>>>>  #define CONFIG_DESIGNWARE_ETH
>>>>  #define CONFIG_DW_ALTDESCRIPTOR
>>>>  #define CONFIG_PHYLIB
>>>> +#define CONFIG_ETHADDR         00:02:b3:00:00:00
>>>> +#define CONFIG_ETH1ADDR                00:02:b3:00:00:01
>>>
>>> I recall this coming up before with another board - we are not
>>> supposed to set a default MAC address since it may create inexplicable
>>> conflicts on the network if an org two boards on the same network one
>>> day. Can you just set an environment variable?
>
> There are lots of boards which have CONFIG_ETHADDR defined in the
> board configuration files. Do you think we need cleam them up?

I think it would be great if the board maintainers cleaned these up.
This is a common way to get into trouble.

> include/configs/blackstamp.h:81:/* #define CONFIG_ETHADDR
>  02:80:ad:20:31:b8 */
> include/configs/grsim.h:254:#define CONFIG_ETHADDR   00:00:7a:cc:00:12
> include/configs/bct-brettl2.h:77:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/bf533-stamp.h:72:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:b8 */
> include/configs/stxgp3.h:16: * search for
> CONFIG_ETHADDR,CONFIG_SERVERIP,etc in this file
> include/configs/stxgp3.h:348:#define CONFIG_ETHADDR
> 00:e0:0c:07:9b:8a
> include/configs/cobra5272.h:177:#define CONFIG_ETHADDR
> 00:00:00:00:00:09        /* default ethernet MAC addr. */
> include/configs/pb1x00.h:34:#define CONFIG_ETHADDR
> DE:AD:BE:EF:01:01    /* Ethernet address */
> include/configs/M54418TWR.h:116:#define CONFIG_ETHADDR
> 00:e0:0c:bc:e5:60
> include/configs/dbau1x00.h:40:#define CONFIG_ETHADDR
> DE:AD:BE:EF:01:01    /* Ethernet address */
> include/configs/bf561-acvilon.h:96:/* #define CONFIG_ETHADDR
>                  02:80:ad:20:31:e8 */
> include/configs/galileo.h:65:#define CONFIG_ETHADDR
> 00:02:b3:00:00:00
> include/configs/cm-bf527.h:87:/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
> include/configs/M5329EVB.h:91:# define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
> include/configs/sbc8641d.h:17: * search for CONFIG_ETHADDR,
> CONFIG_SERVERIP, etc in this file.
> include/configs/sbc8641d.h:533:#define CONFIG_ETHADDR   02:E0:0C:00:00:01
> include/configs/bf527-ezkit.h:87:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/MPC8541CDS.h:421:#define CONFIG_ETHADDR   00:E0:0C:00:00:FD
> include/configs/bf537-stamp.h:69:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/zeus.h:299:#define CONFIG_ETHADDR
> 50:00:00:00:06:00
> include/configs/br4.h:73:/* #define CONFIG_ETHADDR      5c:38:1a:80:a7:00 */
> include/configs/M5373EVB.h:91:# define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
> include/configs/MPC8641HPCN.h:13: * search for CONFIG_ETHADDR,
> CONFIG_SERVERIP, etc in this file.
> include/configs/MPC8641HPCN.h:683:#define CONFIG_ETHADDR
> 00:E0:0C:00:00:01
> include/configs/MPC8560ADS.h:15: * search for CONFIG_ETHADDR,
> CONFIG_SERVERIP, etc in this file.
> include/configs/MPC8560ADS.h:450:#define CONFIG_ETHADDR   00:E0:0C:00:00:FD
> include/configs/M5272C3.h:93:#  define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
> include/configs/gr_xc3s_1500.h:231:#define CONFIG_ETHADDR   00:00:7a:cc:00:12
> include/configs/MPC8568MDS.h:441:#define CONFIG_ETHADDR   00:E0:0C:00:00:FD
> include/configs/bf537-pnav.h:69:/* #define CONFIG_ETHADDR
> 02:80:ad:24:21:18 */
> include/configs/M54455EVB.h:86:#        define CONFIG_ETHADDR
>  00:e0:0c:bc:e5:60
> include/configs/blackvme.h:90:/* # define CONFIG_ETHADDR
> ff:ee:dd:cc:bb:aa */
> include/configs/MPC8548CDS.h:546:#define CONFIG_ETHADDR  00:E0:0C:00:00:FD
> include/configs/stxssa.h:16: * search for
> CONFIG_ETHADDR,CONFIG_SERVERIP,etc in this file
> include/configs/stxssa.h:383:#define CONFIG_ETHADDR      00:e0:0c:07:9b:8a
> include/configs/grsim_leon2.h:252:#define CONFIG_ETHADDR   00:00:7a:cc:00:12
> include/configs/M5235EVB.h:98:# define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
> include/configs/tcm-bf518.h:70:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/sbc405.h:105:#define CONFIG_ETHADDR
> DE:AD:BE:EF:01:01       /* Ethernet address     */
> include/configs/microblaze-generic.h:353:#define        CONFIG_ETHADDR
>          00:E0:0C:00:00:FD
> include/configs/uniphier.h:212:#define CONFIG_ETHADDR
>  00:21:83:24:00:00
> include/configs/bf538f-ezkit.h:67:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/M5208EVBE.h:77:#        define CONFIG_ETHADDR
> 00:e0:0c:bc:e5:60
> include/configs/cm-bf561.h:71:/* #define CONFIG_ETHADDR 02:80:ad:20:31:cf */
> include/configs/M54451EVB.h:80:#        define CONFIG_ETHADDR
>  00:e0:0c:bc:e5:60
> include/configs/MPC8544DS.h:452:#define CONFIG_ETHADDR  00:E0:0C:02:00:FD
> include/configs/motionpro.h:88:#define CONFIG_ETHADDR
> 00:50:C2:40:10:00
> include/configs/inka4x0.h:113:#define   CONFIG_ETHADDR
> 00:a0:a4:03:00:00
> include/configs/cm-bf537e.h:75:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/MPC8572DS.h:665:#define CONFIG_ETHADDR  00:E0:0C:02:00:FD
> include/configs/cm-bf548.h:80:/* #define CONFIG_ETHADDR 02:80:ad:24:31:91 */
> include/configs/MPC8610HPCD.h:303:#define CONFIG_ETHADDR   00:E0:0C:00:00:01
> include/configs/tcm-bf537.h:75:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/sbc8548.h:588:#define CONFIG_ETHADDR     02:E0:0C:00:00:FD
> include/configs/M5475EVB.h:78:# define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
> include/configs/M5475EVB.h:138:#        define CONFIG_ETHADDR
> 00:e0:0c:bc:e5:60
> include/configs/gr_ep2s60.h:272:#define CONFIG_ETHADDR   00:00:7a:cc:00:13
> include/configs/xaeniax.h:73:#define CONFIG_ETHADDR
> 08:00:3e:26:0a:5b
> include/configs/pr1.h:73:/* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
> include/configs/MPC8536DS.h:723:#define CONFIG_ETHADDR  00:E0:0C:02:00:FD
> include/configs/bf537-srv1.h:90:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:42 */
> include/configs/M5282EVB.h:79:# define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
> include/configs/bf526-ezbrd.h:89:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/ibf-dsp561.h:68:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/bf561-ezkit.h:68:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/bf548-ezkit.h:77:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/MPC8540ADS.h:15: * search for CONFIG_ETHADDR,
> CONFIG_SERVERIP, etc in this file.
> include/configs/MPC8540ADS.h:409:#define CONFIG_ETHADDR   00:E0:0C:00:00:FD
> include/configs/M5485EVB.h:78:# define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
> include/configs/work_92105.h:187:#define CONFIG_ETHADDR
>  00:12:B4:00:AF:FE
> include/configs/bf533-ezkit.h:79:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/cm-bf537u.h:73:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/MPC8555CDS.h:419:#define CONFIG_ETHADDR   00:E0:0C:00:00:FD
> include/configs/sequoia.h:110:#define   CONFIG_ETHADDR
> 4a:56:49:22:3e:43
> include/configs/scb9328.h:53:#define CONFIG_ETHADDR
> 80:81:82:83:84:85
> include/configs/cm-bf533.h:70:/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
> include/configs/gr_cpci_ax2000.h:283:#define CONFIG_ETHADDR   00:00:7a:cc:00:13
> include/configs/M53017EVB.h:97:#        define CONFIG_ETHADDR
> 00:e0:0c:bc:e5:60
> include/configs/bf518f-ezbrd.h:91:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:e8 */
> include/configs/bf537-minotaur.h:90:/* #define CONFIG_ETHADDR
> 02:80:ad:20:31:42 */
> include/env_default.h:52:#ifdef CONFIG_ETHADDR
> include/env_default.h:53:       "ethaddr="
> __stringify(CONFIG_ETHADDR)     "\0
>
>> Simon is correct here. You should simply set it in your environment on
>> your board. Another option that we tend to frown on, but is allowed,
>> is to call net_random_ethaddr() from your board init.
>>
>
> I see net_random_ethaddr() is not used consistently. Lots of boards
> call this API in their borad init but there are two drivers call this
> API in the driver. I think we need move them all to board init?

Perhaps... or...

> board/bf527-ezkit/bf527-ezkit.c:49:             net_random_ethaddr(mac_addr);
> board/bf537-minotaur/bf537-minotaur.c:29:       net_random_ethaddr(mac_addr);
> board/tcm-bf537/tcm-bf537.c:34: net_random_ethaddr(enetaddr);
> board/bf526-ezbrd/bf526-ezbrd.c:47:             net_random_ethaddr(mac_addr);
> board/bct-brettl2/bct-brettl2.c:35:     net_random_ethaddr(mac_addr);
> board/buffalo/lsxl/lsxl.c:235:          net_random_ethaddr(enetaddr);
> board/bf537-stamp/bf537-stamp.c:50:             net_random_ethaddr(mac_addr);
> board/dnp5370/dnp5370.c:57:             net_random_ethaddr(mac_addr);
> board/cm-bf537u/cm-bf537u.c:34: net_random_ethaddr(enetaddr);
> board/bf518f-ezbrd/bf518f-ezbrd.c:50:           net_random_ethaddr(mac_addr);
> board/tcm-bf518/tcm-bf518.c:49:         net_random_ethaddr(mac_addr);
> board/bf537-pnav/bf537-pnav.c:29:       net_random_ethaddr(mac_addr);
> board/cm-bf527/cm-bf527.c:48:           net_random_ethaddr(mac_addr);
> board/cm-bf537e/cm-bf537e.c:34: net_random_ethaddr(enetaddr);
> board/bf537-srv1/bf537-srv1.c:29:       net_random_ethaddr(mac_addr);
> board/ip04/ip04.c:35:           net_random_ethaddr(enetaddr);
> drivers/net/ftmac110.c:428:             net_random_ethaddr(dev->enetaddr);
> drivers/net/dm9000x.c:348:              net_random_ethaddr(dev->enetaddr);
> include/net.h:767: * net_random_ethaddr - Generate software assigned
> random Ethernet address
> include/net.h:773:static inline void net_random_ethaddr(uchar *addr)
>
> And there is even one CONFIG_RANDOM_MACADDR used for this purpose.
>
> board/buffalo/lsxl/lsxl.c:233:#ifdef CONFIG_RANDOM_MACADDR
> drivers/net/dm9000x.c:346:#ifdef CONFIG_RANDOM_MACADDR
> include/configs/lsxl.h:40:#define CONFIG_RANDOM_MACADDR

Maybe we should move this into eth.c, behind that (or a similar)
config token, then it's not duplicated many places.

> I think we should clean these all?

That would be nice, I do think. I could take a pass at it, but I would
need lots of board maintainers or others to test it out on hardware.

Cheers,
-Joe


More information about the U-Boot mailing list