[U-Boot] [RFC PATCH 1/7] net: Provide a function to get the current MAC address
Simon Glass
sjg at chromium.org
Wed Jan 28 03:33:48 CET 2015
Hi Joe,
On 27 January 2015 at 16:27, Joe Hershberger <joe.hershberger at ni.com> wrote:
> The current implementation exposes the eth_device struct to code that
> needs to access the MAC address. Add a wrapper function for this to
> abstract away the pointer for this operation.
>
> Signed-off-by: Joe Hershberger <joe.hershberger at ni.com>
> ---
>
> arch/mips/cpu/mips32/au1x00/au1x00_eth.c | 2 +-
> arch/powerpc/cpu/mpc8260/ether_fcc.c | 2 +-
> arch/powerpc/cpu/mpc85xx/ether_fcc.c | 2 +-
> arch/powerpc/cpu/mpc8xx/scc.c | 2 +-
> include/net.h | 8 ++++++++
> net/net.c | 2 +-
> 6 files changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/arch/mips/cpu/mips32/au1x00/au1x00_eth.c b/arch/mips/cpu/mips32/au1x00/au1x00_eth.c
> index 4770f56..535d713 100644
> --- a/arch/mips/cpu/mips32/au1x00/au1x00_eth.c
> +++ b/arch/mips/cpu/mips32/au1x00/au1x00_eth.c
> @@ -238,7 +238,7 @@ static int au1x00_init(struct eth_device* dev, bd_t * bd){
> }
>
> /* Put mac addr in little endian */
> -#define ea eth_get_dev()->enetaddr
> +#define ea eth_get_ethaddr()
> *mac_addr_high = (ea[5] << 8) | (ea[4] ) ;
> *mac_addr_low = (ea[3] << 24) | (ea[2] << 16) |
I know this is existing code, but (perhaps separately) it might be
nice to remove the #define and assign it it to a local variable, i.e.:
unsigned char *ea = eth_get_ethaddr();
> (ea[1] << 8) | (ea[0] ) ;
> diff --git a/arch/powerpc/cpu/mpc8260/ether_fcc.c b/arch/powerpc/cpu/mpc8260/ether_fcc.c
> index f9f15b5..f777ba1 100644
> --- a/arch/powerpc/cpu/mpc8260/ether_fcc.c
> +++ b/arch/powerpc/cpu/mpc8260/ether_fcc.c
> @@ -299,7 +299,7 @@ static int fec_init(struct eth_device* dev, bd_t *bis)
> * it unique by setting a few bits in the upper byte of the
> * non-static part of the address.
> */
> -#define ea eth_get_dev()->enetaddr
> +#define ea eth_get_ethaddr()
> pram_ptr->fen_paddrh = (ea[5] << 8) + ea[4];
> pram_ptr->fen_paddrm = (ea[3] << 8) + ea[2];
> pram_ptr->fen_paddrl = (ea[1] << 8) + ea[0];
> diff --git a/arch/powerpc/cpu/mpc85xx/ether_fcc.c b/arch/powerpc/cpu/mpc85xx/ether_fcc.c
> index 166dc9e..58d4bfb 100644
> --- a/arch/powerpc/cpu/mpc85xx/ether_fcc.c
> +++ b/arch/powerpc/cpu/mpc85xx/ether_fcc.c
> @@ -338,7 +338,7 @@ static int fec_init(struct eth_device* dev, bd_t *bis)
> * it unique by setting a few bits in the upper byte of the
> * non-static part of the address.
> */
> -#define ea eth_get_dev()->enetaddr
> +#define ea eth_get_ethaddr()
> pram_ptr->fen_paddrh = (ea[5] << 8) + ea[4];
> pram_ptr->fen_paddrm = (ea[3] << 8) + ea[2];
> pram_ptr->fen_paddrl = (ea[1] << 8) + ea[0];
> diff --git a/arch/powerpc/cpu/mpc8xx/scc.c b/arch/powerpc/cpu/mpc8xx/scc.c
> index 251966b..66e4014 100644
> --- a/arch/powerpc/cpu/mpc8xx/scc.c
> +++ b/arch/powerpc/cpu/mpc8xx/scc.c
> @@ -339,7 +339,7 @@ static int scc_init (struct eth_device *dev, bd_t * bis)
> pram_ptr->sen_gaddr3 = 0x0; /* Group Address Filter 3 (unused) */
> pram_ptr->sen_gaddr4 = 0x0; /* Group Address Filter 4 (unused) */
>
> -#define ea eth_get_dev()->enetaddr
> +#define ea eth_get_ethaddr()
> pram_ptr->sen_paddrh = (ea[5] << 8) + ea[4];
> pram_ptr->sen_paddrm = (ea[3] << 8) + ea[2];
> pram_ptr->sen_paddrl = (ea[1] << 8) + ea[0];
> diff --git a/include/net.h b/include/net.h
> index 73ea88b..a9579ee 100644
> --- a/include/net.h
> +++ b/include/net.h
> @@ -111,6 +111,14 @@ struct eth_device *eth_get_dev(void)
> {
> return eth_current;
> }
> +
> +static inline unsigned char *eth_get_ethaddr(void)
> +{
> + if (eth_current)
> + return eth_current->enetaddr;
> + return NULL;
> +}
> +
> extern struct eth_device *eth_get_dev_by_name(const char *devname);
> extern struct eth_device *eth_get_dev_by_index(int index); /* get dev @ index */
> extern int eth_get_dev_index(void); /* get the device index */
> diff --git a/net/net.c b/net/net.c
> index 2bea07b..ddd630c 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -275,7 +275,7 @@ static void NetInitLoop(void)
> env_changed_id = env_id;
> }
> if (eth_get_dev())
> - memcpy(NetOurEther, eth_get_dev()->enetaddr, 6);
> + memcpy(NetOurEther, eth_get_ethaddr(), 6);
>
> return;
> }
> --
> 1.7.11.5
>
Regards,
Simon
More information about the U-Boot
mailing list