diff options
| author | Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> | 2015-03-15 10:00:16 -0400 |
|---|---|---|
| committer | Kalle Valo <kvalo@codeaurora.org> | 2015-03-20 02:33:16 -0400 |
| commit | 148416a973e0a07fa94a0de90dae92763b282311 (patch) | |
| tree | 2cf3902cd2213206e7c34f34a0ac7db5095136ca /drivers/net/wireless/ath | |
| parent | 8fbb2e98fef043019b9d546300406b2f6e9d38f5 (diff) | |
wil6210: optimize index manipulation in wil_vring_reap_rx
Use temporal variable for often used vring->swhead;
and use proper index in debug printing - vring->swhead
used before was modified in wil_vring_advance_head
and then increased value was used in debug print
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/ath')
| -rw-r--r-- | drivers/net/wireless/ath/wil6210/txrx.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 689081c2c37b..3feb86c47795 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c | |||
| @@ -369,6 +369,7 @@ static struct sk_buff *wil_vring_reap_rx(struct wil6210_priv *wil, | |||
| 369 | u16 dmalen; | 369 | u16 dmalen; |
| 370 | u8 ftype; | 370 | u8 ftype; |
| 371 | int cid; | 371 | int cid; |
| 372 | int i = (int)vring->swhead; | ||
| 372 | struct wil_net_stats *stats; | 373 | struct wil_net_stats *stats; |
| 373 | 374 | ||
| 374 | BUILD_BUG_ON(sizeof(struct vring_rx_desc) > sizeof(skb->cb)); | 375 | BUILD_BUG_ON(sizeof(struct vring_rx_desc) > sizeof(skb->cb)); |
| @@ -376,24 +377,28 @@ static struct sk_buff *wil_vring_reap_rx(struct wil6210_priv *wil, | |||
| 376 | if (unlikely(wil_vring_is_empty(vring))) | 377 | if (unlikely(wil_vring_is_empty(vring))) |
| 377 | return NULL; | 378 | return NULL; |
| 378 | 379 | ||
| 379 | _d = &vring->va[vring->swhead].rx; | 380 | _d = &vring->va[i].rx; |
| 380 | if (unlikely(!(_d->dma.status & RX_DMA_STATUS_DU))) { | 381 | if (unlikely(!(_d->dma.status & RX_DMA_STATUS_DU))) { |
| 381 | /* it is not error, we just reached end of Rx done area */ | 382 | /* it is not error, we just reached end of Rx done area */ |
| 382 | return NULL; | 383 | return NULL; |
| 383 | } | 384 | } |
| 384 | 385 | ||
| 385 | skb = vring->ctx[vring->swhead].skb; | 386 | skb = vring->ctx[i].skb; |
| 387 | vring->ctx[i].skb = NULL; | ||
| 388 | wil_vring_advance_head(vring, 1); | ||
| 389 | if (!skb) { | ||
| 390 | wil_err(wil, "No Rx skb at [%d]\n", i); | ||
| 391 | return NULL; | ||
| 392 | } | ||
| 386 | d = wil_skb_rxdesc(skb); | 393 | d = wil_skb_rxdesc(skb); |
| 387 | *d = *_d; | 394 | *d = *_d; |
| 388 | pa = wil_desc_addr(&d->dma.addr); | 395 | pa = wil_desc_addr(&d->dma.addr); |
| 389 | vring->ctx[vring->swhead].skb = NULL; | ||
| 390 | wil_vring_advance_head(vring, 1); | ||
| 391 | 396 | ||
| 392 | dma_unmap_single(dev, pa, sz, DMA_FROM_DEVICE); | 397 | dma_unmap_single(dev, pa, sz, DMA_FROM_DEVICE); |
| 393 | dmalen = le16_to_cpu(d->dma.length); | 398 | dmalen = le16_to_cpu(d->dma.length); |
| 394 | 399 | ||
| 395 | trace_wil6210_rx(vring->swhead, d); | 400 | trace_wil6210_rx(i, d); |
| 396 | wil_dbg_txrx(wil, "Rx[%3d] : %d bytes\n", vring->swhead, dmalen); | 401 | wil_dbg_txrx(wil, "Rx[%3d] : %d bytes\n", i, dmalen); |
| 397 | wil_hex_dump_txrx("Rx ", DUMP_PREFIX_NONE, 32, 4, | 402 | wil_hex_dump_txrx("Rx ", DUMP_PREFIX_NONE, 32, 4, |
| 398 | (const void *)d, sizeof(*d), false); | 403 | (const void *)d, sizeof(*d), false); |
| 399 | 404 | ||
