]> git.droids-corp.org - dpdk.git/commitdiff
examples/ipsec-secgw: fix wrong session size
authorAnoob Joseph <anoob.joseph@caviumnetworks.com>
Fri, 7 Sep 2018 05:55:26 +0000 (11:25 +0530)
committerAkhil Goyal <akhil.goyal@nxp.com>
Tue, 25 Sep 2018 15:57:25 +0000 (17:57 +0200)
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 <anoob.joseph@caviumnetworks.com>
Signed-off-by: Archana Muniganti <muniganti.archana@caviumnetworks.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
examples/ipsec-secgw/ipsec-secgw.c

index f9a90c620ff25eacd204d9d458008db620988058..1bc0b5b50d3c9da19b2c6ae2b53e3e042decc375 100644 (file)
@@ -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;