crypto: talitos - move code in current_desc_hdr() into a standalone function

Previously added code in current_desc_hdr() in order to add support for
searching an offending descriptor inside a descriptor chain.

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:51 +02:00 committed by Herbert Xu
parent 5c0aa8cad7
commit f8713d9e60

View File

@ -520,6 +520,24 @@ DEF_TALITOS2_DONE(ch0, TALITOS2_ISR_CH_0_DONE)
DEF_TALITOS2_DONE(ch0_2, TALITOS2_ISR_CH_0_2_DONE)
DEF_TALITOS2_DONE(ch1_3, TALITOS2_ISR_CH_1_3_DONE)
static __be32 search_desc_hdr_in_request(struct talitos_request *request,
dma_addr_t cur_desc, bool is_sec1)
{
struct talitos_edesc *edesc;
if (request->dma_desc == cur_desc) {
return request->desc->hdr;
} else if (is_sec1) {
edesc = container_of(request->desc, struct talitos_edesc, desc);
while (edesc->next_desc) {
if (edesc->desc.next_desc == cpu_to_be32(cur_desc))
return edesc->next_desc->desc.hdr1;
edesc = edesc->next_desc;
}
}
return 0;
}
/*
* locate current (offending) descriptor
*/
@ -528,7 +546,6 @@ static __be32 current_desc_hdr(struct device *dev, int ch)
struct talitos_private *priv = dev_get_drvdata(dev);
bool is_sec1 = has_ftr_sec1(priv);
struct talitos_request *request;
struct talitos_edesc *edesc;
int tail, iter;
dma_addr_t cur_desc;
__be32 hdr = 0;
@ -546,21 +563,7 @@ static __be32 current_desc_hdr(struct device *dev, int ch)
do {
request = &priv->chan[ch].fifo[iter];
if (request->dma_desc == cur_desc) {
hdr = request->desc->hdr;
} else if (is_sec1) {
edesc = container_of(request->desc,
struct talitos_edesc, desc);
while (edesc->next_desc) {
if (edesc->desc.next_desc ==
cpu_to_be32(cur_desc)) {
hdr = edesc->next_desc->desc.hdr1;
break;
}
edesc = edesc->next_desc;
}
}
hdr = search_desc_hdr_in_request(request, cur_desc, is_sec1);
if (hdr)
break;