From: Vladimir Ratnikov Date: Thu, 23 Jul 2020 09:11:09 +0000 (-0400) Subject: dpdk: device_id sorted order for cryptodev X-Git-Tag: v21.01-rc0~171 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=5a849e3b359dcf8f730429e1ccb7421f1c4217b6;p=vpp.git dpdk: device_id sorted order for cryptodev By default, VPP automatically assignes for each tunnel next available QAT device by order dev_id-que-pair. In most cases we have more than one device and it can greatly increase ipsec perfomance without any actions with configuration from user if we use all the devices first and first que-pairs Type: feature Signed-off-by: Vladimir Ratnikov Change-Id: Iac9fe74768775459e22f69bb3706b542090a9375 --- diff --git a/src/plugins/dpdk/cryptodev/cryptodev.c b/src/plugins/dpdk/cryptodev/cryptodev.c index 86cec8a5cbc..2ae09ce226e 100644 --- a/src/plugins/dpdk/cryptodev/cryptodev.c +++ b/src/plugins/dpdk/cryptodev/cryptodev.c @@ -1181,9 +1181,23 @@ cryptodev_create_device (vlib_main_t *vm, u32 n_queues) return 0; } +static int +cryptodev_cmp (void *v1, void *v2) +{ + cryptodev_inst_t *a1 = v1; + cryptodev_inst_t *a2 = v2; + + if (a1->q_id > a2->q_id) + return 1; + if (a1->q_id < a2->q_id) + return -1; + return 0; +} + static int cryptodev_probe (vlib_main_t *vm, u32 n_workers) { + cryptodev_main_t *cmt = &cryptodev_main; u32 n_queues = cryptodev_count_queue (vm->numa_node); u32 i; int ret; @@ -1204,6 +1218,8 @@ cryptodev_probe (vlib_main_t *vm, u32 n_workers) return ret; } + vec_sort_with_function(cmt->cryptodev_inst, cryptodev_cmp); + return 0; }