On Tue, May 25, 2010 at 11:04 PM, Bruno Randolf <b...@einfach.org> wrote:
> please try this patch and tell us if it helped...
>
> bruno
>
> commit 0379d1e5a850f8e63832516af4245b9824d8623d
> Author: Bruno Randolf <b...@einfach.org>
> Date:   Wed May 26 11:58:11 2010 +0900
>
>    ath5k: better checks for rx descriptor processing
>
>    - add check not to process self-linked rx descriptor at the end
>    - add DMA sync
>
> diff --git a/drivers/net/wireless/ath/ath5k/base.c
> b/drivers/net/wireless/ath/ath5k/base.c
> index 4ea31dc..db63789 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -1948,6 +1948,10 @@ ath5k_tasklet_rx(unsigned long data)
>                if (ath5k_hw_get_rxdp(sc->ah) == bf->daddr)
>                        break;
>
> +               /* never process the self-linked entry at the end */
> +               if (ds->ds_link == bf->daddr)
> +                       break;
> +

By this you're saying that the RXDP check just above
is insufficient?

Also, what happens if only one packet is received?

> +               pci_dma_sync_single_for_cpu(sc->pdev, bf->skbaddr,
> +                                           rs.rs_datalen, 
> PCI_DMA_FROMDEVICE);

My reading of DMA api howto claims this isn't necessary as
long as we only touch data after unmapping it.

-- 
Bob Copeland %% www.bobcopeland.com
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to