[PATCH] b44: fix eeprom endianess issue
authorMichael Buesch <mb@bu3sch.de>
Tue, 10 Oct 2006 21:33:26 +0000 (14:33 -0700)
committerJeff Garzik <jeff@garzik.org>
Wed, 11 Oct 2006 07:56:33 +0000 (03:56 -0400)
commit6f62768344e46520ae585f3e201c9d3e497b028f
treea11d61c6c351b04d09c575a6a83db814af968930
parent12f417ee95bf98cd3e42d2a771f7c6d360159b9d
[PATCH] b44: fix eeprom endianess issue

This fixes eeprom read on big-endian architectures.

readw returns the data in CPU order.  With cpu_to_le16 we convert it to little
endian, because "ptr" is a pointer to a _byte_ arrray.  See the cast above.  A
byte array is little endian.

The bug is:

Reading u16 values with readw, casting them into an u8 array and accessing
this u8 array as an u8 (byte) array.  The correct fix is to swap the
CPU-ordering value returned by readw into little endian, as the u8 array is
little endian.

This compiles to nothing on little endian hardware (so it does not change b44
code on LE hardware), but _fixes_ code on BE hardware.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/b44.c