crypto: talitos - move dma unmapping code in flush_channel() into a standalone dma_unmap_request() function

Previously added code to flush_channel() in order to unmap an entire
descriptor.

Move that code into a standalone function to improve readability.

Cc: stable@vger.kernel.org
Signed-off-by: Paul Louvel <paul.louvel@bootlin.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Paul Louvel 2026-05-07 16:41:49 +02:00 committed by Herbert Xu
parent f126384ed5
commit 4d9b0b7415

View File

@ -372,6 +372,27 @@ static __be32 get_request_hdr(struct device *dev,
return edesc->desc.hdr1;
}
static void dma_unmap_request(struct device *dev,
struct talitos_request *request, bool is_sec1)
{
struct talitos_edesc *edesc;
if (is_sec1) {
dma_unmap_single(dev, request->dma_desc, TALITOS_DESC_SIZE,
DMA_BIDIRECTIONAL);
edesc = container_of(request->desc, struct talitos_edesc, desc);
while (edesc->next_desc) {
dma_unmap_single(dev,
be32_to_cpu(edesc->desc.next_desc),
TALITOS_DESC_SIZE, DMA_BIDIRECTIONAL);
edesc = edesc->next_desc;
}
} else {
dma_unmap_single(dev, request->dma_desc, TALITOS_DESC_SIZE,
DMA_BIDIRECTIONAL);
}
}
/*
* process what was done, notify callback of error if not
*/
@ -379,7 +400,6 @@ static void flush_channel(struct device *dev, int ch, int error, int reset_ch)
{
struct talitos_private *priv = dev_get_drvdata(dev);
struct talitos_request *request, saved_req;
struct talitos_edesc *edesc;
unsigned long flags;
int tail, status;
bool is_sec1 = has_ftr_sec1(priv);
@ -404,22 +424,7 @@ static void flush_channel(struct device *dev, int ch, int error, int reset_ch)
else
status = error;
if (is_sec1) {
dma_unmap_single(dev, request->dma_desc,
TALITOS_DESC_SIZE, DMA_BIDIRECTIONAL);
edesc = container_of(request->desc,
struct talitos_edesc, desc);
while (edesc->next_desc) {
dma_unmap_single(
dev, be32_to_cpu(edesc->desc.next_desc),
TALITOS_DESC_SIZE, DMA_BIDIRECTIONAL);
edesc = edesc->next_desc;
}
} else {
dma_unmap_single(dev, request->dma_desc,
TALITOS_DESC_SIZE,
DMA_BIDIRECTIONAL);
}
dma_unmap_request(dev, request, is_sec1);
/* copy entries so we can call callback outside lock */
saved_req.desc = request->desc;