[atl1e] Fix compilation on gcc-4.4.1-2.fc11.i586.
Error message was: [BUILD] bin/atl1e.oncc1: warnings being treated as errors drivers/net/atl1e.c: In function 'atl1e_get_permanent_address': drivers/net/atl1e.c:1326: error: dereferencing type-punned pointer will break strict-aliasing rules make: *** [bin/atl1e.o] Error 1 Reported-by: Giandomenico De Tullio <ghisha@email.it> Signed-off-by: Michael Brown <mcb30@etherboot.org> Modified-by: Michael Brown <mcb30@etherboot.org>
This commit is contained in:
parent
8912e24fdc
commit
858b5fd253
|
@ -1296,14 +1296,14 @@ void atl1e_hw_set_mac_addr(struct atl1e_hw *hw)
|
||||||
*/
|
*/
|
||||||
static int atl1e_get_permanent_address(struct atl1e_hw *hw)
|
static int atl1e_get_permanent_address(struct atl1e_hw *hw)
|
||||||
{
|
{
|
||||||
u32 addr[2];
|
union {
|
||||||
|
u32 dword[2];
|
||||||
|
u8 byte[8];
|
||||||
|
} hw_addr;
|
||||||
u32 i;
|
u32 i;
|
||||||
u32 twsi_ctrl_data;
|
u32 twsi_ctrl_data;
|
||||||
u8 eth_addr[ETH_ALEN];
|
u8 eth_addr[ETH_ALEN];
|
||||||
|
|
||||||
/* init */
|
|
||||||
addr[0] = addr[1] = 0;
|
|
||||||
|
|
||||||
if (!atl1e_check_eeprom_exist(hw)) {
|
if (!atl1e_check_eeprom_exist(hw)) {
|
||||||
/* eeprom exist */
|
/* eeprom exist */
|
||||||
twsi_ctrl_data = AT_READ_REG(hw, REG_TWSI_CTRL);
|
twsi_ctrl_data = AT_READ_REG(hw, REG_TWSI_CTRL);
|
||||||
|
@ -1320,10 +1320,11 @@ static int atl1e_get_permanent_address(struct atl1e_hw *hw)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* maybe MAC-address is from BIOS */
|
/* maybe MAC-address is from BIOS */
|
||||||
addr[0] = AT_READ_REG(hw, REG_MAC_STA_ADDR);
|
hw_addr.dword[0] = AT_READ_REG(hw, REG_MAC_STA_ADDR);
|
||||||
addr[1] = AT_READ_REG(hw, REG_MAC_STA_ADDR + 4);
|
hw_addr.dword[1] = AT_READ_REG(hw, REG_MAC_STA_ADDR + 4);
|
||||||
*(u32 *) ð_addr[2] = swap32(addr[0]);
|
for (i = 0; i < ETH_ALEN; i++) {
|
||||||
*(u16 *) ð_addr[0] = swap16(*(u16 *)&addr[1]);
|
eth_addr[ETH_ALEN - i - 1] = hw_addr.byte[i];
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(hw->perm_mac_addr, eth_addr, ETH_ALEN);
|
memcpy(hw->perm_mac_addr, eth_addr, ETH_ALEN);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Reference in New Issue