mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
5903f4a167
It has been confirmed by Atheros that this PCI bug affects the RX side only, so we can keep the 128B DMA size for TX. With this change we can double the thruput of ath5k from 15Mps to 30Mbps. We have been using this patch since more than 6 month in a production environment without problems and a significant performance improvement. It has also been said to fix HW encryption: http://www.mail-archive.com/ath5k-devel@lists.ath5k.org/msg04311.html Patch from: kentarou matsuyama <matsuyama@thinktube.com> SVN-Revision: 25104
39 lines
1.2 KiB
Diff
39 lines
1.2 KiB
Diff
--- a/drivers/net/wireless/ath/ath5k/initvals.c
|
|
+++ b/drivers/net/wireless/ath/ath5k/initvals.c
|
|
@@ -58,8 +58,14 @@ static const struct ath5k_ini ar5210_ini
|
|
{ AR5K_IMR, 0 },
|
|
{ AR5K_IER, AR5K_IER_DISABLE },
|
|
{ AR5K_BSR, 0, AR5K_INI_READ },
|
|
+#ifndef CONFIG_ATHEROS_AR71XX
|
|
{ AR5K_TXCFG, AR5K_DMASIZE_128B },
|
|
{ AR5K_RXCFG, AR5K_DMASIZE_128B },
|
|
+#else
|
|
+ /* WAR for AR71xx PCI bug */
|
|
+ { AR5K_TXCFG, AR5K_DMASIZE_128B },
|
|
+ { AR5K_RXCFG, AR5K_DMASIZE_4B },
|
|
+#endif
|
|
{ AR5K_CFG, AR5K_INIT_CFG },
|
|
{ AR5K_TOPS, 8 },
|
|
{ AR5K_RXNOFRM, 8 },
|
|
--- a/drivers/net/wireless/ath/ath5k/dma.c
|
|
+++ b/drivers/net/wireless/ath/ath5k/dma.c
|
|
@@ -787,10 +787,18 @@ void ath5k_hw_dma_init(struct ath5k_hw *
|
|
* guess we can tweak it and see how it goes ;-)
|
|
*/
|
|
if (ah->ah_version != AR5K_AR5210) {
|
|
+#ifndef CONFIG_ATHEROS_AR71XX
|
|
AR5K_REG_WRITE_BITS(ah, AR5K_TXCFG,
|
|
AR5K_TXCFG_SDMAMR, AR5K_DMASIZE_128B);
|
|
AR5K_REG_WRITE_BITS(ah, AR5K_RXCFG,
|
|
AR5K_RXCFG_SDMAMW, AR5K_DMASIZE_128B);
|
|
+#else
|
|
+ /* WAR for AR71xx PCI bug */
|
|
+ AR5K_REG_WRITE_BITS(ah, AR5K_TXCFG,
|
|
+ AR5K_TXCFG_SDMAMR, AR5K_DMASIZE_128B);
|
|
+ AR5K_REG_WRITE_BITS(ah, AR5K_RXCFG,
|
|
+ AR5K_RXCFG_SDMAMW, AR5K_DMASIZE_4B);
|
|
+#endif
|
|
}
|
|
|
|
/* Pre-enable interrupts on 5211/5212*/
|