Thanks Stefan,

I will test as soon as 38.5 hits testing (or maybe I will game enough to do it 
from unstable!)

Cheers,

Marcos

On Martes 26 Abril 2011 06:01:27 usted escribió:
> Hi
> 
> Neither crda nor wpasupplicant are responsible for such a behaviour,
> but this bug is likely fixed by the attached patch, which will end up
> in the upcoming 2.6.38.5 kernel.
> 
> Regards
>       Stefan Lippers-Hollmann
> 
> ----------  Forwarded Message  ----------
> 
> Betreff: Patch "ath9k_hw: partially revert "fix dma descriptor rx error bit
> parsing"" has been added to the 2.6.38-stable tree Date: Monday 25 April
> 2011
> From: gre...@suse.de
> To: n...@openwrt.org, gre...@suse.de, linvi...@tuxdriver.com
> 
> 
> This is a note to let you know that I've just added the patch titled
> 
>     ath9k_hw: partially revert "fix dma descriptor rx error bit parsing"
> 
> to the 2.6.38-stable tree which can be found at:
>    
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=su
> mmary
> 
> The filename of the patch is:
>     
> ath9k_hw-partially-revert-fix-dma-descriptor-rx-error-bit-parsing.patch
> and it can be found in the queue-2.6.38 subdirectory.
> 
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <sta...@kernel.org> know about it.
> 
> 
> From 115dad7a7f42e68840392767323ceb9306dbdb36 Mon Sep 17 00:00:00 2001
> From: Felix Fietkau <n...@openwrt.org>
> Date: Fri, 14 Jan 2011 00:06:27 +0100
> Subject: ath9k_hw: partially revert "fix dma descriptor rx error bit
> parsing"
> 
> From: Felix Fietkau <n...@openwrt.org>
> 
> commit 115dad7a7f42e68840392767323ceb9306dbdb36 upstream.
> 
> The rx error bit parsing was changed to consider PHY errors and various
> decryption errors separately. While correct according to the documentation,
> this is causing spurious decryption error reports in some situations.
> 
> Fix this by restoring the original order of the checks in those places,
> where the errors are meant to be mutually exclusive.
> 
> If a CRC error is reported, then MIC failure and decryption errors
> are irrelevant, and a PHY error is unlikely.
> 
> Signed-off-by: Felix Fietkau <n...@openwrt.org>
> Signed-off-by: John W. Linville <linvi...@tuxdriver.com>
> Signed-off-by: Greg Kroah-Hartman <gre...@suse.de>
> 
> ---
>  drivers/net/wireless/ath/ath9k/ar9003_mac.c |    8 ++++----
>  drivers/net/wireless/ath/ath9k/mac.c        |   14 ++++++++++----
>  2 files changed, 14 insertions(+), 8 deletions(-)
> 
> --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
> +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
> @@ -615,7 +615,7 @@ int ath9k_hw_process_rxdesc_edma(struct
>                */
>               if (rxsp->status11 & AR_CRCErr)
>                       rxs->rs_status |= ATH9K_RXERR_CRC;
> -             if (rxsp->status11 & AR_PHYErr) {
> +             else if (rxsp->status11 & AR_PHYErr) {
>                       phyerr = MS(rxsp->status11, AR_PHYErrCode);
>                       /*
>                        * If we reach a point here where AR_PostDelimCRCErr is
> @@ -638,11 +638,11 @@ int ath9k_hw_process_rxdesc_edma(struct
>                               rxs->rs_phyerr = phyerr;
>                       }
> 
> -             }
> -             if (rxsp->status11 & AR_DecryptCRCErr)
> +             } else if (rxsp->status11 & AR_DecryptCRCErr)
>                       rxs->rs_status |= ATH9K_RXERR_DECRYPT;
> -             if (rxsp->status11 & AR_MichaelErr)
> +             else if (rxsp->status11 & AR_MichaelErr)
>                       rxs->rs_status |= ATH9K_RXERR_MIC;
> +
>               if (rxsp->status11 & AR_KeyMiss)
>                       rxs->rs_status |= ATH9K_RXERR_DECRYPT;
>       }
> --- a/drivers/net/wireless/ath/ath9k/mac.c
> +++ b/drivers/net/wireless/ath/ath9k/mac.c
> @@ -690,17 +690,23 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
>               rs->rs_flags |= ATH9K_RX_DECRYPT_BUSY;
> 
>       if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) {
> +             /*
> +              * Treat these errors as mutually exclusive to avoid spurious
> +              * extra error reports from the hardware. If a CRC error is
> +              * reported, then decryption and MIC errors are irrelevant,
> +              * the frame is going to be dropped either way
> +              */
>               if (ads.ds_rxstatus8 & AR_CRCErr)
>                       rs->rs_status |= ATH9K_RXERR_CRC;
> -             if (ads.ds_rxstatus8 & AR_PHYErr) {
> +             else if (ads.ds_rxstatus8 & AR_PHYErr) {
>                       rs->rs_status |= ATH9K_RXERR_PHY;
>                       phyerr = MS(ads.ds_rxstatus8, AR_PHYErrCode);
>                       rs->rs_phyerr = phyerr;
> -             }
> -             if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
> +             } else if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
>                       rs->rs_status |= ATH9K_RXERR_DECRYPT;
> -             if (ads.ds_rxstatus8 & AR_MichaelErr)
> +             else if (ads.ds_rxstatus8 & AR_MichaelErr)
>                       rs->rs_status |= ATH9K_RXERR_MIC;
> +
>               if (ads.ds_rxstatus8 & AR_KeyMiss)
>                       rs->rs_status |= ATH9K_RXERR_DECRYPT;
>       }



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to