mac80211: assume 2-byte aligning for 802.11 packets, slightly improves code size...
[openwrt.git] / package / mac80211 / patches / 501-ath9k-eeprom_endianess.patch
index 25d5450..2028257 100644 (file)
@@ -1,15 +1,15 @@
 --- 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;
+@@ -262,7 +262,7 @@ static int ath9k_hw_def_check_eeprom(str
+ {
+       struct ar5416_eeprom_def *eep = &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
+@@ -272,27 +272,16 @@ static int ath9k_hw_def_check_eeprom(str
                return false;
        }
  
@@ -34,7 +34,8 @@
 -                                      "Invalid EEPROM Magic. Endianness mismatch.\n");
 -                              return -EINVAL;
 -                      }
-+      if (swab16(magic) == AR5416_EEPROM_MAGIC) {
++      if (swab16(magic) == AR5416_EEPROM_MAGIC &&
++          !(ah->ah_flags & AH_NO_EEP_SWAP)) {
 +              size = sizeof(struct ar5416_eeprom_def);
 +              need_swap = true;
 +              eepdata = (u16 *) (&ah->eeprom);
                }
        }
  
+--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
++++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
+@@ -57,7 +57,7 @@ static bool ath9k_hw_4k_fill_eeprom(stru
+ {
+       struct ath_common *common = ath9k_hw_common(ah);
+-      if (!ath9k_hw_use_flash(ah)) {
++      if (!(ah->ah_flags & AH_NO_EEP_SWAP)) {
+               ath_dbg(common, EEPROM, "Reading from EEPROM, not flash\n");
+       }
+--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
++++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
+@@ -60,7 +60,7 @@ static bool ath9k_hw_ar9287_fill_eeprom(
+ {
+       struct ath_common *common = ath9k_hw_common(ah);
+-      if (!ath9k_hw_use_flash(ah)) {
++      if (!(ah->ah_flags & AH_NO_EEP_SWAP)) {
+               ath_dbg(common, EEPROM, "Reading from EEPROM, not flash\n");
+       }
+--- a/drivers/net/wireless/ath/ath9k/hw.h
++++ b/drivers/net/wireless/ath/ath9k/hw.h
+@@ -705,6 +705,7 @@ enum ath_cal_list {
+ #define AH_USE_EEPROM   0x1
+ #define AH_UNPLUGGED    0x2 /* The card has been physically removed. */
+ #define AH_FASTCC       0x4
++#define AH_NO_EEP_SWAP  0x8 /* Do not swap EEPROM data */
+ struct ath_hw {
+       struct ath_ops reg_ops;
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -591,6 +591,8 @@ static int ath9k_init_softc(u16 devid, s
+               ah->is_clk_25mhz = pdata->is_clk_25mhz;
+               ah->get_mac_revision = pdata->get_mac_revision;
+               ah->external_reset = pdata->external_reset;
++              if (!pdata->endian_check)
++                      ah->ah_flags |= AH_NO_EEP_SWAP;
+       }
+       common = ath9k_hw_common(ah);
+--- a/include/linux/ath9k_platform.h
++++ b/include/linux/ath9k_platform.h
+@@ -31,6 +31,7 @@ struct ath9k_platform_data {
+       u32 gpio_mask;
+       u32 gpio_val;
++      bool endian_check;
+       bool is_clk_25mhz;
+       int (*get_mac_revision)(void);
+       int (*external_reset)(void);