diff mbox

[U-Boot,RFC,1/7] net: Provide a function to get the current MAC address

Message ID 1422401245-8452-2-git-send-email-joe.hershberger@ni.com
State RFC
Delegated to: Joe Hershberger
Headers show

Commit Message

Joe Hershberger Jan. 27, 2015, 11:27 p.m. UTC
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@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(-)

Comments

Simon Glass Jan. 28, 2015, 2:33 a.m. UTC | #1
Hi Joe,

On 27 January 2015 at 16:27, Joe Hershberger <joe.hershberger@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@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
Joe Hershberger Jan. 28, 2015, 9:45 a.m. UTC | #2
On Tue, Jan 27, 2015 at 8:33 PM, Simon Glass <sjg@chromium.org> wrote:
>
> Hi Joe,
>
> On 27 January 2015 at 16:27, Joe Hershberger <joe.hershberger@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@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();

I'm sure that if this code is not deleted before it is reworked that this
sort of improvement will be made.  For this series I just wanted to change
as little as possible.  I agree that the #define is ugly.

> >                 (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
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Simon Glass Jan. 29, 2015, 1:46 a.m. UTC | #3
Hi Joe,

On 28 January 2015 at 02:45, Joe Hershberger <joe.hershberger@gmail.com> wrote:
> On Tue, Jan 27, 2015 at 8:33 PM, Simon Glass <sjg@chromium.org> wrote:
>>
>> Hi Joe,
>>
>> On 27 January 2015 at 16:27, Joe Hershberger <joe.hershberger@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@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();
>
> I'm sure that if this code is not deleted before it is reworked that this
> sort of improvement will be made.  For this series I just wanted to change
> as little as possible.  I agree that the #define is ugly.

OK sounds good.

Regards,
Simon
diff mbox

Patch

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) |
 		(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;
 }