diff options
author | Vratko Polak <vrpolak@cisco.com> | 2023-08-17 16:22:48 +0200 |
---|---|---|
committer | Fan Zhang <fanzhang.oss@gmail.com> | 2023-09-12 12:42:11 +0000 |
commit | 139aba204780f6cc2845b311820a0b4c47517d02 (patch) | |
tree | de58ace65178dd5ae772c70e0a73cfb3c5a2f4c9 /src/vnet/crypto/crypto_api.c | |
parent | ceb64add2afe62c25a05be8c26cce5ea8d243b22 (diff) |
crypto: allow changing dispatch mode
This change aims to affect crypto_sw_scheduler behavior,
but all the edits end up in vnet/crypto.
Previous release CSIT tests were testing async crypto in polling mode.
After 9a9604b09f15691d7c4ddf29afd99a31e7e31eed introduced adaptive mode
for crypto dispatch, the CSIT performance got way worse.
Possibly, there is another VPP bug related to adaptive mode
(it should not lose as many packets as seen in CSIT),
but the next release is too close for trying to fix that.
This change (instead of fixing adaptive mode)
allows CSIT to continue testing polling mode (after explicit API call),
while keeping the adaptive mode as default behavior.
The deprecated crypto_set_async_dispatch always disable adaptive mode,
crypto_set_async_dispatch_v2 has parameter to enable or disable it.
The mode parameter is still used for the inital state of adaptive mode.
Type: feature
Change-Id: Ib98080eefb4be291207af543884f2c3837f92f59
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
Diffstat (limited to 'src/vnet/crypto/crypto_api.c')
-rw-r--r-- | src/vnet/crypto/crypto_api.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/vnet/crypto/crypto_api.c b/src/vnet/crypto/crypto_api.c index 482a9b698cb..e701864a5ba 100644 --- a/src/vnet/crypto/crypto_api.c +++ b/src/vnet/crypto/crypto_api.c @@ -46,10 +46,24 @@ vl_api_crypto_set_async_dispatch_t_handler (vl_api_crypto_set_async_dispatch_t vl_api_crypto_set_async_dispatch_reply_t *rmp; int rv = 0; + vnet_crypto_set_async_dispatch ((u8) mp->mode, 0); + REPLY_MACRO (VL_API_CRYPTO_SET_ASYNC_DISPATCH_REPLY); } static void +vl_api_crypto_set_async_dispatch_v2_t_handler ( + vl_api_crypto_set_async_dispatch_v2_t *mp) +{ + vl_api_crypto_set_async_dispatch_v2_reply_t *rmp; + int rv = 0; + + vnet_crypto_set_async_dispatch ((u8) mp->mode, mp->adaptive ? 1 : 0); + + REPLY_MACRO (VL_API_CRYPTO_SET_ASYNC_DISPATCH_V2_REPLY); +} + +static void vl_api_crypto_set_handler_t_handler (vl_api_crypto_set_handler_t * mp) { vl_api_crypto_set_handler_reply_t *rmp; |