From c5aa9617c02d95792d3a899d3fd8bfa3377dcf75 Mon Sep 17 00:00:00 2001 From: Akhil Goyal Date: Fri, 24 Mar 2017 14:59:21 +0530 Subject: [PATCH] examples/ipsec-secgw: attach session-qp adding support for attaching session to queue pairs. This is required as underlying crypto driver may only support limited number of sessions per queue pair if max_nb_sessions_per_qp > 0, session should be attached to a particular qp. Signed-off-by: Akhil Goyal Acked-by: Sergio Gonzalez Monroy --- examples/ipsec-secgw/ipsec.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/examples/ipsec-secgw/ipsec.c b/examples/ipsec-secgw/ipsec.c index 144f0aa891..edca5f02b5 100644 --- a/examples/ipsec-secgw/ipsec.c +++ b/examples/ipsec-secgw/ipsec.c @@ -47,6 +47,7 @@ static inline int create_session(struct ipsec_ctx *ipsec_ctx __rte_unused, struct ipsec_sa *sa) { + struct rte_cryptodev_info cdev_info; unsigned long cdev_id_qp = 0; int32_t ret; struct cdev_key key = { 0 }; @@ -73,6 +74,18 @@ create_session(struct ipsec_ctx *ipsec_ctx __rte_unused, struct ipsec_sa *sa) sa->crypto_session = rte_cryptodev_sym_session_create( ipsec_ctx->tbl[cdev_id_qp].id, sa->xforms); + rte_cryptodev_info_get(ipsec_ctx->tbl[cdev_id_qp].id, &cdev_info); + if (cdev_info.sym.max_nb_sessions_per_qp > 0) { + ret = rte_cryptodev_queue_pair_attach_sym_session( + ipsec_ctx->tbl[cdev_id_qp].qp, + sa->crypto_session); + if (ret < 0) { + RTE_LOG(ERR, IPSEC, + "Session cannot be attached to qp %u ", + ipsec_ctx->tbl[cdev_id_qp].qp); + return -1; + } + } sa->cdev_id_qp = cdev_id_qp; return 0; -- 2.20.1