• James Bottomley's avatar
    tg3: fix big endian MAC address collection failure · 0d489ffb
    James Bottomley authored
    We noticed on parisc that our broadcoms all swapped MAC addresses going
    from 2.6.29 to 2.6.30-rc1:
    
    Apr 11 07:48:24 ion kernel: eth0: Tigon3 [partno(BCM95700A6) rev 0105] (PCI:66MHz:64-bit) MAC address 00:30:6e:4b:15:59
    Apr 13 07:34:34 ion kernel: eth0: Tigon3 [partno(BCM95700A6) rev 0105] (PCI:66MHz:64-bit) MAC address 00:00:59:15:4b:6e
    
    The problem patch is:
    
    commit 6d348f2c
    Author: Matt Carlson <mcarlson@broadcom.com>
    Date:   Wed Feb 25 14:25:52 2009 +0000
    
        tg3: Eliminate tg3_nvram_read_swab()
    
    With the root cause being the use of memcpy to set the mac address:
    
       memcpy(&dev->dev_addr[0], ((char *)&hi) + 2, 2);
       memcpy(&dev->dev_addr[2], (char *)&lo, sizeof(lo));
    
    This might work on little endian machines, but it can't on big endian
    ones.  You have to use the original setting mechanism to be correct on
    all architectures.
    
    The attached patch fixes parisc.
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0d489ffb
tg3.c 360 KB