From: Thomas Bogendoerfer <firstname.lastname@example.org>
Date: Sat, 5 Jan 2008 23:48:42 +0100 (CET)
> meth didn't set a valid mac address during probing, but later during
> open. Newer kernel refuse to open device with 00:00:00:00:00:00 as
> mac address -> dead ethernet. This patch sets the mac address in
> the probe function and uses only the mac address from the netdevice
> struct when setting up the hardware.
> Signed-off-by: Thomas Bogendoerfer <email@example.com>
> + u64 macaddr;
> - for (i = 0; i < 6; i++)
> - dev->dev_addr[i] = o2meth_eaddr[i];
> DPRINTK("Loading MAC Address: %s\n", print_mac(mac, dev->dev_addr));
> - mace->eth.mac_addr = (*(unsigned long*)o2meth_eaddr) >> 16;
> + macaddr = 0;
> + for (i = 0; i < 6; i++)
> + macaddr |= dev->dev_addr[i] << ((5 - i) * 8);
> + mace->eth.mac_addr = macaddr;
Can you double-check that this conversion is equivalent.
I know that this whole driver is full of assumptions about
the endianness of the system this chip is found on, so
I'm only interested in if the transformation is equivalent
and the driver will keep working properly.