lkml.org 
[lkml]   [2009]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [Bug #13111] Linux 2.6.30-rc1 tg3 endian issues with MAC addresses on BCM5701
On Thu, Apr 16, 2009 at 05:43:10PM -0700, David Miller wrote:
> From: "Rafael J. Wysocki" <rjw@sisk.pl>
> Date: Thu, 16 Apr 2009 23:45:05 +0200 (CEST)
>
> > Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13111
> > Subject : Linux 2.6.30-rc1 tg3 endian issues with MAC addresses on BCM5701
> > Submitter : Robin Holt <holt@sgi.com>
> > Date : 2009-04-08 7:12 (9 days old)
> > First-Bad-Commit: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e4f341103e4a2b35f56a0f89802f1b1448e8d04b
> > References : http://marc.info/?l=linux-kernel&m=123917477312823&w=4
> > Handled-By : Matt Carlson <mcarlson@broadcom.com>
>
> We're half-way to a fix for this, see the commit below.
>
> But we're not completely finished, so keep this entry open.

Actually, I think we do have a fix for this. James and Robin both
reported that the test patch I sent out worked for them. I'm preparing
a patchset for submission now.

James, Robin, can you confirm that you performed your tests with David's
patch reverted?

> commit 0d489ffb76de0fe804cf06a9d4d11fa7342d74b9
> Author: James Bottomley <James.Bottomley@HansenPartnership.com>
> Date: Mon Apr 13 14:31:51 2009 -0700
>
> tg3: fix big endian MAC address collection failure
>
> 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 6d348f2c1e0bb1cf7a494b51fc921095ead3f6ae
> 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: James Bottomley <James.Bottomley@HansenPartnership.com>
> Signed-off-by: David S. Miller <davem@davemloft.net>
>



\
 
 \ /
  Last update: 2009-04-17 03:01    [W:0.309 / U:1.340 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site