|
1 | 1 | // SPDX-License-Identifier: BSD-3-Clause-Clear |
2 | 2 | /* |
3 | 3 | * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. |
4 | | - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. |
| 4 | + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. |
5 | 5 | */ |
6 | 6 |
|
7 | 7 | #include <crypto/hash.h> |
@@ -104,14 +104,12 @@ void ath11k_dp_srng_cleanup(struct ath11k_base *ab, struct dp_srng *ring) |
104 | 104 | if (!ring->vaddr_unaligned) |
105 | 105 | return; |
106 | 106 |
|
107 | | - if (ring->cached) { |
108 | | - dma_unmap_single(ab->dev, ring->paddr_unaligned, ring->size, |
109 | | - DMA_FROM_DEVICE); |
110 | | - kfree(ring->vaddr_unaligned); |
111 | | - } else { |
| 107 | + if (ring->cached) |
| 108 | + dma_free_noncoherent(ab->dev, ring->size, ring->vaddr_unaligned, |
| 109 | + ring->paddr_unaligned, DMA_FROM_DEVICE); |
| 110 | + else |
112 | 111 | dma_free_coherent(ab->dev, ring->size, ring->vaddr_unaligned, |
113 | 112 | ring->paddr_unaligned); |
114 | | - } |
115 | 113 |
|
116 | 114 | ring->vaddr_unaligned = NULL; |
117 | 115 | } |
@@ -249,25 +247,14 @@ int ath11k_dp_srng_setup(struct ath11k_base *ab, struct dp_srng *ring, |
249 | 247 | default: |
250 | 248 | cached = false; |
251 | 249 | } |
252 | | - |
253 | | - if (cached) { |
254 | | - ring->vaddr_unaligned = kzalloc(ring->size, GFP_KERNEL); |
255 | | - if (!ring->vaddr_unaligned) |
256 | | - return -ENOMEM; |
257 | | - |
258 | | - ring->paddr_unaligned = dma_map_single(ab->dev, |
259 | | - ring->vaddr_unaligned, |
260 | | - ring->size, |
261 | | - DMA_FROM_DEVICE); |
262 | | - if (dma_mapping_error(ab->dev, ring->paddr_unaligned)) { |
263 | | - kfree(ring->vaddr_unaligned); |
264 | | - ring->vaddr_unaligned = NULL; |
265 | | - return -ENOMEM; |
266 | | - } |
267 | | - } |
268 | 250 | } |
269 | 251 |
|
270 | | - if (!cached) |
| 252 | + if (cached) |
| 253 | + ring->vaddr_unaligned = dma_alloc_noncoherent(ab->dev, ring->size, |
| 254 | + &ring->paddr_unaligned, |
| 255 | + DMA_FROM_DEVICE, |
| 256 | + GFP_KERNEL); |
| 257 | + else |
271 | 258 | ring->vaddr_unaligned = dma_alloc_coherent(ab->dev, ring->size, |
272 | 259 | &ring->paddr_unaligned, |
273 | 260 | GFP_KERNEL); |
|
0 commit comments