p54: fix EEPROM structure endianness
authorJohannes Berg <johannes@sipsolutions.net>
Fri, 29 Feb 2008 12:56:33 +0000 (13:56 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 4 Mar 2008 23:36:36 +0000 (18:36 -0500)
Since the EEPROM structure is read from hardware, it is
always little endian, annotate that in the struct and
make sure to convert where applicable.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Michael Wu <flamingice@sourmilk.net>
Tested-by: Florian Fainelli <florian.fainelli@telecomint.eu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/p54common.c
drivers/net/wireless/p54common.h

index 5cda49a..56aabec 100644 (file)
@@ -172,7 +172,7 @@ int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
        int err;
 
        wrap = (struct eeprom_pda_wrap *) eeprom;
-       entry = (void *)wrap->data + wrap->len;
+       entry = (void *)wrap->data + le16_to_cpu(wrap->len);
        i += 2;
        i += le16_to_cpu(entry->len)*2;
        while (i < len) {
index a721334..b67ff34 100644 (file)
@@ -53,10 +53,10 @@ struct pda_entry {
 } __attribute__ ((packed));
 
 struct eeprom_pda_wrap {
-       u32 magic;
-       u16 pad;
-       u16 len;
-       u32 arm_opcode;
+       __le32 magic;
+       __le16 pad;
+       __le16 len;
+       __le32 arm_opcode;
        u8 data[0];
 } __attribute__ ((packed));