New upstream version 17.08
[deb_dpdk.git] / examples / ipsec-secgw / ipsec.c
index edca5f0..0afb9d6 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2016 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2016-2017 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -45,7 +45,7 @@
 #include "esp.h"
 
 static inline int
-create_session(struct ipsec_ctx *ipsec_ctx __rte_unused, struct ipsec_sa *sa)
+create_session(struct ipsec_ctx *ipsec_ctx, struct ipsec_sa *sa)
 {
        struct rte_cryptodev_info cdev_info;
        unsigned long cdev_id_qp = 0;
@@ -72,11 +72,15 @@ create_session(struct ipsec_ctx *ipsec_ctx __rte_unused, struct ipsec_sa *sa)
                        ipsec_ctx->tbl[cdev_id_qp].qp);
 
        sa->crypto_session = rte_cryptodev_sym_session_create(
-                       ipsec_ctx->tbl[cdev_id_qp].id, sa->xforms);
+                       ipsec_ctx->session_pool);
+       rte_cryptodev_sym_session_init(ipsec_ctx->tbl[cdev_id_qp].id,
+                       sa->crypto_session, sa->xforms,
+                       ipsec_ctx->session_pool);
 
        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].id,
                                ipsec_ctx->tbl[cdev_id_qp].qp,
                                sa->crypto_session);
                if (ret < 0) {
@@ -140,7 +144,6 @@ ipsec_enqueue(ipsec_xform_fn xform_func, struct ipsec_ctx *ipsec_ctx,
                priv->cop.status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
 
                rte_prefetch0(&priv->sym_cop);
-               priv->cop.sym = &priv->sym_cop;
 
                if ((unlikely(sa->crypto_session == NULL)) &&
                                create_session(ipsec_ctx, sa)) {