diff options
author | blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-03-25 08:51:08 +0000 |
---|---|---|
committer | blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-03-25 08:51:08 +0000 |
commit | 88bfa13565bd8ecbbd2cddc0d317855d6b8d6c72 (patch) | |
tree | b9eb45f59e3464a6c0a19d3e64bff4e3f49b7589 /package/mac80211 | |
parent | a3f0c9fadfeb93126c402b57062f747e129d384c (diff) |
[mac80211] adds eeprom endianess check to ath9k
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31068 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211')
-rw-r--r-- | package/mac80211/patches/999-ath9k.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/package/mac80211/patches/999-ath9k.patch b/package/mac80211/patches/999-ath9k.patch new file mode 100644 index 000000000..25d5450a7 --- /dev/null +++ b/package/mac80211/patches/999-ath9k.patch @@ -0,0 +1,48 @@ +--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c +@@ -267,7 +267,7 @@ static int ath9k_hw_def_check_eeprom(str + struct ar5416_eeprom_def *eep = + (struct ar5416_eeprom_def *) &ah->eeprom.def; + struct ath_common *common = ath9k_hw_common(ah); +- u16 *eepdata, temp, magic, magic2; ++ u16 *eepdata, temp, magic; + u32 sum = 0, el; + bool need_swap = false; + int i, addr, size; +@@ -277,27 +277,15 @@ static int ath9k_hw_def_check_eeprom(str + return false; + } + +- if (!ath9k_hw_use_flash(ah)) { +- ath_dbg(common, EEPROM, "Read Magic = 0x%04X\n", magic); +- +- if (magic != AR5416_EEPROM_MAGIC) { +- magic2 = swab16(magic); +- +- if (magic2 == AR5416_EEPROM_MAGIC) { +- size = sizeof(struct ar5416_eeprom_def); +- need_swap = true; +- eepdata = (u16 *) (&ah->eeprom); +- +- for (addr = 0; addr < size / sizeof(u16); addr++) { +- temp = swab16(*eepdata); +- *eepdata = temp; +- eepdata++; +- } +- } else { +- ath_err(common, +- "Invalid EEPROM Magic. Endianness mismatch.\n"); +- return -EINVAL; +- } ++ if (swab16(magic) == AR5416_EEPROM_MAGIC) { ++ size = sizeof(struct ar5416_eeprom_def); ++ need_swap = true; ++ eepdata = (u16 *) (&ah->eeprom); ++ ++ for (addr = 0; addr < size / sizeof(u16); addr++) { ++ temp = swab16(*eepdata); ++ *eepdata = temp; ++ eepdata++; + } + } + |