From f76f47c14f4b732599e470ad9892e65c12d972e1 Mon Sep 17 00:00:00 2001 From: Senthil Balasubramanian Date: Mon, 8 Dec 2008 19:43:50 +0530 Subject: [PATCH] --- yaml --- r: 122655 b: refs/heads/master c: 8aa15e1506bb0b6b643be12baf1f2d4d2f115931 h: refs/heads/master i: 122653: 31ab3c481b6f363801c1ad442fbe6dcd22990029 122651: 9a4882ee87c134be1250590f25dac999fe4b0556 122647: fb88473e22fa2fb836021b2c183b70a5e5afccec 122639: 73e6f894a3cc32f4ef73cfcff59be970d95c66f8 122623: 79e62ae95698e34f4644399f9231b62c2f6bc052 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ath9k/hw.c | 8 ++++++++ trunk/drivers/net/wireless/ath9k/mac.c | 3 +-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f63fcd69004c..0205ceacb8e8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2df1bff4c5cd0b28e06e4defc3f5d90618db8d53 +refs/heads/master: 8aa15e1506bb0b6b643be12baf1f2d4d2f115931 diff --git a/trunk/drivers/net/wireless/ath9k/hw.c b/trunk/drivers/net/wireless/ath9k/hw.c index 58f94c3f5e94..34474edefc97 100644 --- a/trunk/drivers/net/wireless/ath9k/hw.c +++ b/trunk/drivers/net/wireless/ath9k/hw.c @@ -1212,6 +1212,14 @@ struct ath_hal *ath9k_hw_attach(u16 devid, struct ath_softc *sc, static void ath9k_hw_override_ini(struct ath_hal *ah, struct ath9k_channel *chan) { + /* + * Set the RX_ABORT and RX_DIS and clear if off only after + * RXE is set for MAC. This prevents frames with corrupted + * descriptor status. + */ + REG_SET_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); + + if (!AR_SREV_5416_V20_OR_LATER(ah) || AR_SREV_9280_10_OR_LATER(ah)) return; diff --git a/trunk/drivers/net/wireless/ath9k/mac.c b/trunk/drivers/net/wireless/ath9k/mac.c index 5254ea49f8ac..af32d091dc38 100644 --- a/trunk/drivers/net/wireless/ath9k/mac.c +++ b/trunk/drivers/net/wireless/ath9k/mac.c @@ -916,12 +916,11 @@ void ath9k_hw_rxena(struct ath_hal *ah) void ath9k_hw_startpcureceive(struct ath_hal *ah) { - REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); - ath9k_enable_mib_counters(ah); ath9k_ani_reset(ah); + REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); } void ath9k_hw_stoppcurecv(struct ath_hal *ah)