From: Anoob Joseph Date: Fri, 7 Sep 2018 05:55:26 +0000 (+0530) Subject: examples/ipsec-secgw: fix wrong session size X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=2e960c97c6b9311bea90b775e21a4b99ac1d50dc;p=dpdk.git examples/ipsec-secgw: fix wrong session size Crypto devices, which support lookaside protocol, exposes security session size in addition to the crypto private symmetric session data size. For applications using the security capabilities, both these sizes need to be considered. Fixes: ec17993a145a ("examples/ipsec-secgw: support security offload") Cc: stable@dpdk.org Signed-off-by: Anoob Joseph Signed-off-by: Archana Muniganti Acked-by: Akhil Goyal --- diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c index f9a90c620f..1bc0b5b50d 100644 --- a/examples/ipsec-secgw/ipsec-secgw.c +++ b/examples/ipsec-secgw/ipsec-secgw.c @@ -1391,9 +1391,27 @@ cryptodevs_init(void) uint32_t max_sess_sz = 0, sess_sz; for (cdev_id = 0; cdev_id < rte_cryptodev_count(); cdev_id++) { + void *sec_ctx; + + /* Get crypto priv session size */ sess_sz = rte_cryptodev_sym_get_private_session_size(cdev_id); if (sess_sz > max_sess_sz) max_sess_sz = sess_sz; + + /* + * If crypto device is security capable, need to check the + * size of security session as well. + */ + + /* Get security context of the crypto device */ + sec_ctx = rte_cryptodev_get_sec_ctx(cdev_id); + if (sec_ctx == NULL) + continue; + + /* Get size of security session */ + sess_sz = rte_security_session_get_size(sec_ctx); + if (sess_sz > max_sess_sz) + max_sess_sz = sess_sz; } RTE_ETH_FOREACH_DEV(port_id) { void *sec_ctx;