From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anatolij Gustschin Date: Tue, 20 Dec 2011 18:26:28 +0100 Subject: [U-Boot] [PATCH] drivers/net/e1000.c: Fix GCC 4.6 build warnings In-Reply-To: <8469240E-6A43-417F-844C-670CE1D373B5@boeing.com> References: <1324396187-25157-1-git-send-email-agust@denx.de> <8469240E-6A43-417F-844C-670CE1D373B5@boeing.com> Message-ID: <20111220182628.2c418612@wker> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, 20 Dec 2011 10:07:30 -0600 "Moffett, Kyle D" wrote: > On Dec 20, 2011, at 10:49, Anatolij Gustschin wrote: > > Fix: > > e1000.c: In function 'e1000_read_mac_addr': > > e1000.c:1149:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] > > e1000.c:1149:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] > [...] > > #ifdef CONFIG_E1000_FALLBACK_MAC > > - if ( *(u32*)(nic->enetaddr) == 0 || *(u32*)(nic->enetaddr) == ~0 ) { > > + if (get_unaligned_be32(nic->enetaddr) == 0 || > > + get_unaligned_be32(nic->enetaddr) == ~0) { > > unsigned char fb_mac[NODE_ADDRESS_SIZE] = CONFIG_E1000_FALLBACK_MAC; > > > > memcpy (nic->enetaddr, fb_mac, NODE_ADDRESS_SIZE); > > No, if you are going to fix this code then make it use the right > function for the job: is_valid_ether_addr() You are right, I'll fix it using is_valid_ether_addr(). > Furthermore, while the E1000 chipset does not generally work very > well without a proper SPI EEPROM image (if at all), I think it > would be better for the driver to load successfully and use the > "macaddr" from the U-Boot environment instead of some hardcoded > compile-time constant. > > IE: That whole code block should be ripped out and instead just > tweak the "valid MAC address" check further down. The config option is documented in README: CONFIG_E1000_FALLBACK_MAC default MAC for empty EEPROM after production. I assume this block is only for a possibility to use the driver until the eeprom is programmed with a valid mac address. Thanks, Anatolij