diff options
-rw-r--r-- | drivers/net/wireless/ath/wil6210/txrx.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 44cdd2a3dff3..2a9d56a5fd0c 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c | |||
@@ -712,6 +712,12 @@ static int wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, | |||
712 | d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_DMA_IT_POS); | 712 | d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_DMA_IT_POS); |
713 | *_d = *d; | 713 | *_d = *d; |
714 | 714 | ||
715 | /* hold reference to skb | ||
716 | * to prevent skb release before accounting | ||
717 | * in case of immediate "tx done" | ||
718 | */ | ||
719 | vring->ctx[i].skb = skb_get(skb); | ||
720 | |||
715 | wil_hex_dump_txrx("Tx ", DUMP_PREFIX_NONE, 32, 4, | 721 | wil_hex_dump_txrx("Tx ", DUMP_PREFIX_NONE, 32, 4, |
716 | (const void *)d, sizeof(*d), false); | 722 | (const void *)d, sizeof(*d), false); |
717 | 723 | ||
@@ -720,11 +726,6 @@ static int wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, | |||
720 | wil_dbg_txrx(wil, "Tx swhead %d -> %d\n", swhead, vring->swhead); | 726 | wil_dbg_txrx(wil, "Tx swhead %d -> %d\n", swhead, vring->swhead); |
721 | trace_wil6210_tx(vring_index, swhead, skb->len, nr_frags); | 727 | trace_wil6210_tx(vring_index, swhead, skb->len, nr_frags); |
722 | iowrite32(vring->swhead, wil->csr + HOSTADDR(vring->hwtail)); | 728 | iowrite32(vring->swhead, wil->csr + HOSTADDR(vring->hwtail)); |
723 | /* hold reference to skb | ||
724 | * to prevent skb release before accounting | ||
725 | * in case of immediate "tx done" | ||
726 | */ | ||
727 | vring->ctx[i].skb = skb_get(skb); | ||
728 | 729 | ||
729 | return 0; | 730 | return 0; |
730 | dma_error: | 731 | dma_error: |