On Mon, 2013-12-23 at 06:52 -0800, Joe Perches wrote: > On Mon, 2013-12-23 at 17:38 +1100, Anton Blanchard wrote: > > The hypervisor expects MAC addresses passed in registers to be big > > endian u64. > > So maybe use __be64 declarations? > > > +static unsigned long ibmveth_encode_mac_addr(char *mac) > > static __be64 ibmveth_encode_mac_addr(const char *mac)
A register value has no endianness. Only memory content does. Especially talking of a MAC address which is really a byte stream.... (Yes, our __beXX types used without a * are borderline, but we've got used to it). In fact I find the use of memcpy(((char *)&encoded) + 2, mac, ETH_ALEN); Really gross :-) Yes it works with the added cpu_to_be64() but in that specific case, I think it would be nicer to simply load & shift into position the 6 bytes and avoid the endianness issue completely. Cheers, Ben. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev