crypto: fix chained buffer integrity support
Type: fix Change-Id: I984a3e577a4209e41d046eaf3a8eef8986dc6147 Signed-off-by: Benoît Ganne <bganne@cisco.com>
This commit is contained in:
@ -170,7 +170,21 @@ cryptodev_sw_scheduler_sgl (vlib_main_t * vm,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT (offset == 0 && len == 0);
|
ASSERT (offset == 0);
|
||||||
|
if (n_chunks && len)
|
||||||
|
{
|
||||||
|
/* Some async crypto users can use buffers in creative ways, let's allow
|
||||||
|
* some flexibility here...
|
||||||
|
* Current example is ESP decrypt with ESN in async mode: it will stash
|
||||||
|
* ESN at the end of the last buffer (if it can) because it must be part
|
||||||
|
* of the integrity check but it will not update the buffer length.
|
||||||
|
* Fixup the last operation chunk length if we have room.
|
||||||
|
*/
|
||||||
|
ASSERT (vlib_buffer_space_left_at_end (vm, nb) >= len);
|
||||||
|
if (vlib_buffer_space_left_at_end (vm, nb) >= len)
|
||||||
|
ch->len += len;
|
||||||
|
}
|
||||||
|
|
||||||
op->chunk_index = chunk_index;
|
op->chunk_index = chunk_index;
|
||||||
op->n_chunks = n_chunks;
|
op->n_chunks = n_chunks;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ from vpp_ip import DpoProto
|
|||||||
from vpp_papi import VppEnum
|
from vpp_papi import VppEnum
|
||||||
|
|
||||||
NUM_PKTS = 67
|
NUM_PKTS = 67
|
||||||
engines_supporting_chain_bufs = ["openssl"]
|
engines_supporting_chain_bufs = ["openssl", "async"]
|
||||||
engines = ["ia32", "ipsecmb", "openssl"]
|
engines = ["ia32", "ipsecmb", "openssl"]
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user