mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
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:
parent
f126384ed5
commit
4d9b0b7415
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user