| .. | .. |
|---|
| 1637 | 1637 | { |
|---|
| 1638 | 1638 | switch (sdma_mapping_type(descp)) { |
|---|
| 1639 | 1639 | case SDMA_MAP_SINGLE: |
|---|
| 1640 | | - dma_unmap_single( |
|---|
| 1641 | | - &dd->pcidev->dev, |
|---|
| 1642 | | - sdma_mapping_addr(descp), |
|---|
| 1643 | | - sdma_mapping_len(descp), |
|---|
| 1644 | | - DMA_TO_DEVICE); |
|---|
| 1640 | + dma_unmap_single(&dd->pcidev->dev, sdma_mapping_addr(descp), |
|---|
| 1641 | + sdma_mapping_len(descp), DMA_TO_DEVICE); |
|---|
| 1645 | 1642 | break; |
|---|
| 1646 | 1643 | case SDMA_MAP_PAGE: |
|---|
| 1647 | | - dma_unmap_page( |
|---|
| 1648 | | - &dd->pcidev->dev, |
|---|
| 1649 | | - sdma_mapping_addr(descp), |
|---|
| 1650 | | - sdma_mapping_len(descp), |
|---|
| 1651 | | - DMA_TO_DEVICE); |
|---|
| 1644 | + dma_unmap_page(&dd->pcidev->dev, sdma_mapping_addr(descp), |
|---|
| 1645 | + sdma_mapping_len(descp), DMA_TO_DEVICE); |
|---|
| 1652 | 1646 | break; |
|---|
| 1653 | 1647 | } |
|---|
| 1648 | + |
|---|
| 1649 | + if (descp->pinning_ctx && descp->ctx_put) |
|---|
| 1650 | + descp->ctx_put(descp->pinning_ctx); |
|---|
| 1651 | + descp->pinning_ctx = NULL; |
|---|
| 1654 | 1652 | } |
|---|
| 1655 | 1653 | |
|---|
| 1656 | 1654 | /* |
|---|
| .. | .. |
|---|
| 3171 | 3169 | /* Add descriptor for coalesce buffer */ |
|---|
| 3172 | 3170 | tx->desc_limit = MAX_DESC; |
|---|
| 3173 | 3171 | return _sdma_txadd_daddr(dd, SDMA_MAP_SINGLE, tx, |
|---|
| 3174 | | - addr, tx->tlen); |
|---|
| 3172 | + addr, tx->tlen, NULL, NULL, NULL); |
|---|
| 3175 | 3173 | } |
|---|
| 3176 | 3174 | |
|---|
| 3177 | 3175 | return 1; |
|---|
| .. | .. |
|---|
| 3202 | 3200 | { |
|---|
| 3203 | 3201 | int rval = 0; |
|---|
| 3204 | 3202 | |
|---|
| 3205 | | - tx->num_desc++; |
|---|
| 3206 | | - if ((unlikely(tx->num_desc == tx->desc_limit))) { |
|---|
| 3203 | + if ((unlikely(tx->num_desc + 1 == tx->desc_limit))) { |
|---|
| 3207 | 3204 | rval = _extend_sdma_tx_descs(dd, tx); |
|---|
| 3208 | 3205 | if (rval) { |
|---|
| 3209 | 3206 | __sdma_txclean(dd, tx); |
|---|
| 3210 | 3207 | return rval; |
|---|
| 3211 | 3208 | } |
|---|
| 3212 | 3209 | } |
|---|
| 3210 | + |
|---|
| 3213 | 3211 | /* finish the one just added */ |
|---|
| 3214 | 3212 | make_tx_sdma_desc( |
|---|
| 3215 | 3213 | tx, |
|---|
| 3216 | 3214 | SDMA_MAP_NONE, |
|---|
| 3217 | 3215 | dd->sdma_pad_phys, |
|---|
| 3218 | | - sizeof(u32) - (tx->packet_len & (sizeof(u32) - 1))); |
|---|
| 3216 | + sizeof(u32) - (tx->packet_len & (sizeof(u32) - 1)), |
|---|
| 3217 | + NULL, NULL, NULL); |
|---|
| 3218 | + tx->num_desc++; |
|---|
| 3219 | 3219 | _sdma_close_tx(dd, tx); |
|---|
| 3220 | 3220 | return rval; |
|---|
| 3221 | 3221 | } |
|---|