Subject: Re: [PATCH] Check mac-address first in fsl_soc.c

From: Timur Tabi <[email-masked]>
Date: Tue, 13 Feb 2007 11:45:15 -0600

Kumar Gala wrote:

> How about something like comparing against a local null array instead.  
> Something like:
> 
>     u8 null_mac_addr[6] = { 0 };
>     if (!mac_addr || (memcmp(mac_addr, null_mac_addr, 6) == 0)) {

I believe this will cause the compiler to generate more code, not less.  When 
you declare an initialized array as a local variable, the compiler reserves 
space on the stack, and then it generates code to copy the data from some global 
storage to the stack.

If I inline a string instead, however, the compiler will just put the string in 
global storage and reference it directly.  The compiler should be able to detect 
multiple instances of the same string, and store them as a single string.

If you still want null_mac_addr[], you would need to do this:

	static const u8 null_mac_addr[6] = { 0 };

Although frankly it would be nice if the Ethernet module had static globals and 
functions for this sort of thing.

Do you still want me to create null_mac_addr[], as above?  I was going to put 
the code inside an inline function anyway, per Sergei's request.

-- 
Timur Tabi
Linux Kernel Developer @ Freescale