From: Bob Copeland Date: Fri, 9 Jan 2015 19:15:48 +0000 (-0500) Subject: wcn36xx: don't process 'valid' descriptors X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=bfa6696b39ae4da554a8b8ec9d17bba1ed6ae889;p=deliverable%2Flinux.git wcn36xx: don't process 'valid' descriptors The DMA engine will reset the valid bit after a descriptor is complete; any with the valid bit still set may still be in use by the hardware, so check that before freeing the descriptor. Signed-off-by: Bob Copeland Signed-off-by: Kalle Valo --- diff --git a/drivers/net/wireless/ath/wcn36xx/dxe.c b/drivers/net/wireless/ath/wcn36xx/dxe.c index 73f12f196f14..3d6bc9b87176 100644 --- a/drivers/net/wireless/ath/wcn36xx/dxe.c +++ b/drivers/net/wireless/ath/wcn36xx/dxe.c @@ -354,6 +354,8 @@ static void reap_tx_dxes(struct wcn36xx *wcn, struct wcn36xx_dxe_ch *ch) * and while-do will not make any cycles. */ do { + if (ctl->desc->ctrl & WCN36XX_DXE_CTRL_VALID_MASK) + break; if (ctl->skb) { dma_unmap_single(NULL, ctl->desc->src_addr_l, ctl->skb->len, DMA_TO_DEVICE);