crypto/dpaa_sec: fix IOVA table
[dpdk.git] / drivers / crypto / dpaa_sec / dpaa_sec.c
index 19132b4..39c9271 100644 (file)
@@ -38,6 +38,7 @@
 #include <rte_dpaa_bus.h>
 #include <dpaa_sec.h>
 #include <dpaa_sec_log.h>
+#include <dpaax_iova_table.h>
 
 enum rta_sec_era rta_sec_era;
 
@@ -100,8 +101,10 @@ dpaa_mem_vtop(void *vaddr)
        const struct rte_memseg *ms;
 
        ms = rte_mem_virt2memseg(vaddr, NULL);
-       if (ms)
+       if (ms) {
+               dpaax_iova_table_update(ms->iova, ms->addr, ms->len);
                return ms->iova + RTE_PTR_DIFF(vaddr, ms->addr);
+       }
        return (size_t)NULL;
 }
 
@@ -2261,6 +2264,9 @@ dpaa_sec_set_ipsec_session(__rte_unused struct rte_cryptodev *dev,
                        PDBOPTS_ESP_IVSRC |
                        PDBHMO_ESP_ENCAP_DTTL |
                        PDBHMO_ESP_SNR;
+               if (ipsec_xform->options.esn)
+                       session->encap_pdb.options |= PDBOPTS_ESP_ESN;
+
                session->encap_pdb.spi = ipsec_xform->spi;
                session->encap_pdb.ip_hdr_len = sizeof(struct ip);
 
@@ -2269,6 +2275,8 @@ dpaa_sec_set_ipsec_session(__rte_unused struct rte_cryptodev *dev,
                        RTE_SECURITY_IPSEC_SA_DIR_INGRESS) {
                memset(&session->decap_pdb, 0, sizeof(struct ipsec_decap_pdb));
                session->decap_pdb.options = sizeof(struct ip) << 16;
+               if (ipsec_xform->options.esn)
+                       session->decap_pdb.options |= PDBOPTS_ESP_ESN;
                session->dir = DIR_DEC;
        } else
                goto out;