From b139cef40ade2d9be8a8a883144b89ebef069666 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 23 Mar 2011 20:16:58 +0000 Subject: ath9k: add a few de-bloating and optimization patches git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26281 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/560-ath9k_move_regops_struct.patch | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 package/mac80211/patches/560-ath9k_move_regops_struct.patch (limited to 'package/mac80211/patches/560-ath9k_move_regops_struct.patch') diff --git a/package/mac80211/patches/560-ath9k_move_regops_struct.patch b/package/mac80211/patches/560-ath9k_move_regops_struct.patch new file mode 100644 index 000000000..8e52df451 --- /dev/null +++ b/package/mac80211/patches/560-ath9k_move_regops_struct.patch @@ -0,0 +1,109 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -65,24 +65,24 @@ + + /* Register read/write primitives */ + #define REG_WRITE(_ah, _reg, _val) \ +- ath9k_hw_common(_ah)->ops->write((_ah), (_val), (_reg)) ++ (_ah)->reg_ops.write((_ah), (_val), (_reg)) + + #define REG_READ(_ah, _reg) \ +- ath9k_hw_common(_ah)->ops->read((_ah), (_reg)) ++ (_ah)->reg_ops.read((_ah), (_reg)) + + #define REG_READ_MULTI(_ah, _addr, _val, _cnt) \ +- ath9k_hw_common(_ah)->ops->multi_read((_ah), (_addr), (_val), (_cnt)) ++ (_ah)->reg_ops.multi_read((_ah), (_addr), (_val), (_cnt)) + + #define ENABLE_REGWRITE_BUFFER(_ah) \ + do { \ +- if (ath9k_hw_common(_ah)->ops->enable_write_buffer) \ +- ath9k_hw_common(_ah)->ops->enable_write_buffer((_ah)); \ ++ if ((_ah)->reg_ops.enable_write_buffer) \ ++ (_ah)->reg_ops.enable_write_buffer((_ah)); \ + } while (0) + + #define REGWRITE_BUFFER_FLUSH(_ah) \ + do { \ +- if (ath9k_hw_common(_ah)->ops->write_flush) \ +- ath9k_hw_common(_ah)->ops->write_flush((_ah)); \ ++ if ((_ah)->reg_ops.write_flush) \ ++ (_ah)->reg_ops.write_flush((_ah)); \ + } while (0) + + #define SM(_v, _f) (((_v) << _f##_S) & _f) +@@ -659,6 +659,8 @@ struct ath_nf_limits { + #define AH_UNPLUGGED 0x2 /* The card has been physically removed. */ + + struct ath_hw { ++ struct ath_ops reg_ops; ++ + struct ieee80211_hw *hw; + struct ath_common common; + struct ath9k_hw_version hw_version; +--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c ++++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c +@@ -430,14 +430,6 @@ static void ath9k_regwrite_flush(void *h + mutex_unlock(&priv->wmi->multi_write_mutex); + } + +-static const struct ath_ops ath9k_common_ops = { +- .read = ath9k_regread, +- .multi_read = ath9k_multi_regread, +- .write = ath9k_regwrite, +- .enable_write_buffer = ath9k_enable_regwrite_buffer, +- .write_flush = ath9k_regwrite_flush, +-}; +- + static void ath_usb_read_cachesize(struct ath_common *common, int *csz) + { + *csz = L1_CACHE_BYTES >> 2; +@@ -658,10 +650,15 @@ static int ath9k_init_priv(struct ath9k_ + ah->hw_version.subsysid = 0; /* FIXME */ + ah->hw_version.usbdev = drv_info; + ah->ah_flags |= AH_USE_EEPROM; ++ ah->reg_ops.read = ath9k_regread; ++ ah->reg_ops.multi_read = ath9k_multi_regread; ++ ah->reg_ops.write = ath9k_regwrite; ++ ah->reg_ops.enable_write_buffer = ath9k_enable_regwrite_buffer; ++ ah->reg_ops.write_flush = ath9k_regwrite_flush; + priv->ah = ah; + + common = ath9k_hw_common(ah); +- common->ops = &ath9k_common_ops; ++ common->ops = &ah->reg_ops; + common->bus_ops = &ath9k_usb_bus_ops; + common->ah = ah; + common->hw = priv->hw; +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -196,11 +196,6 @@ static unsigned int ath9k_ioread32(void + return val; + } + +-static const struct ath_ops ath9k_common_ops = { +- .read = ath9k_ioread32, +- .write = ath9k_iowrite32, +-}; +- + /**************************/ + /* Initialization */ + /**************************/ +@@ -551,6 +546,8 @@ static int ath9k_init_softc(u16 devid, s + ah->hw = sc->hw; + ah->hw_version.devid = devid; + ah->hw_version.subsysid = subsysid; ++ ah->reg_ops.read = ath9k_ioread32; ++ ah->reg_ops.write = ath9k_iowrite32; + sc->sc_ah = ah; + + if (!pdata) { +@@ -563,7 +560,7 @@ static int ath9k_init_softc(u16 devid, s + } + + common = ath9k_hw_common(ah); +- common->ops = &ath9k_common_ops; ++ common->ops = &ah->reg_ops; + common->bus_ops = bus_ops; + common->ah = ah; + common->hw = sc->hw; -- cgit v1.2.3