[EMAIL PROTECTED] wrote:
From: Michael Buesch <[EMAIL PROTECTED]>

This fixes eeprom read on big-endian architectures.

Signed-off-by: Michael Buesch <[EMAIL PROTECTED]>
Cc: Jeff Garzik <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 drivers/net/b44.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff -puN drivers/net/b44.c~b44-fix-eeprom-endianess-issue drivers/net/b44.c
--- a/drivers/net/b44.c~b44-fix-eeprom-endianess-issue
+++ a/drivers/net/b44.c
@@ -2055,7 +2055,7 @@ static int b44_read_eeprom(struct b44 *b
        u16 *ptr = (u16 *) data;
for (i = 0; i < 128; i += 2)
-               ptr[i / 2] = readw(bp->regs + 4096 + i);
+               ptr[i / 2] = cpu_to_le16(readw(bp->regs + 4096 + i));

Seems highly silly to me: readw() already swaps on big endian, so you're just swapping again. And then... read the call of b44_read_eeprom(): bp->dev->dev_addr[] assignment is such that it swaps YET AGAIN.

Seems like a better solution would be to remove the manual swap from the caller of b44_read_eeprom().

        Jeff



-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to