Return-path: Received: from sabertooth01.qualcomm.com ([65.197.215.72]:29529 "EHLO sabertooth01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935370Ab3FTNzs (ORCPT ); Thu, 20 Jun 2013 09:55:48 -0400 From: Vladimir Kondratiev To: Kirshenbaum Erez CC: Subject: Re: [PATCH 1/2] wil6210: set vring index for all descriptors Date: Thu, 20 Jun 2013 16:55:44 +0300 Message-ID: <2097949.LkKlZN97tx@lx-vladimir> (sfid-20130620_155551_316788_6001BCCA) In-Reply-To: <1371732325-4112-1-git-send-email-erezk@wilocity.com> References: <1371732325-4112-1-git-send-email-erezk@wilocity.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Sender: linux-wireless-owner@vger.kernel.org List-ID: On Thursday, June 20, 2013 03:45:25 PM Kirshenbaum Erez wrote: > The vring index (MAC queue id) must be set in all TX descriptors > otherwise HW will fail to release descriptors for a specific vring > (disconnect or vring switch flows). > This is normally occurs when fragmentation required, if vring index > will not be the same for all SKB descriptors HW will fail to flush this > MAC queue. > > Signed-off-by: Kirshenbaum Erez > --- > drivers/net/wireless/ath/wil6210/txrx.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c > index e1c492b..b79ba10 100644 > --- a/drivers/net/wireless/ath/wil6210/txrx.c > +++ b/drivers/net/wireless/ath/wil6210/txrx.c > @@ -621,7 +621,8 @@ static struct vring *wil_find_tx_vring(struct wil6210_priv *wil, > return NULL; > } > > -static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len) > +static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len, > + int vring_index) > { > wil_desc_addr_set(&d->dma.addr, pa); > d->dma.ip_length = 0; > @@ -631,6 +632,7 @@ static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len) > d->dma.status = 0; /* BIT(0) should be 0 for HW_OWNED */ > d->dma.length = cpu_to_le16((u16)len); > d->dma.d0 = 0; Then, remove line above > + d->dma.d0 = (vring_index << DMA_CFG_DESC_TX_0_QID_POS); > d->mac.d[0] = 0; > d->mac.d[1] = 0; > d->mac.d[2] = 0; The rest looks fine Thanks, Vladimir