From: Rakesh Kudurumalla <[email protected]>

Added support of CPT CQ configurations for inline inbound IPsec.

Signed-off-by: Rakesh Kudurumalla <[email protected]>
---
 drivers/common/cnxk/roc_nix_inl.c         |  8 ++-
 drivers/common/cnxk/roc_nix_inl.h         |  3 +-
 drivers/common/cnxk/roc_nix_inl_dev.c     | 86 ++++++++++++++++++++---
 drivers/common/cnxk/roc_nix_inl_dev_irq.c | 19 +++--
 drivers/net/cnxk/cn20k_ethdev_sec.c       | 54 ++++++++------
 5 files changed, 132 insertions(+), 38 deletions(-)

diff --git a/drivers/common/cnxk/roc_nix_inl.c 
b/drivers/common/cnxk/roc_nix_inl.c
index 911c349604..26be1adac9 100644
--- a/drivers/common/cnxk/roc_nix_inl.c
+++ b/drivers/common/cnxk/roc_nix_inl.c
@@ -486,6 +486,7 @@ nix_inl_inb_ipsec_sa_tbl_setup(struct roc_nix *roc_nix)
        } else {
                struct nix_rx_inl_lf_cfg_req *lf_cfg;
                uint64_t def_cptq = 0;
+               uint64_t cpt_cq_ena = 0;
 
                /* Setup device specific inb SA table */
                lf_cfg = mbox_alloc_msg_nix_rx_inl_lf_cfg(mbox);
@@ -508,9 +509,10 @@ nix_inl_inb_ipsec_sa_tbl_setup(struct roc_nix *roc_nix)
                if (res_addr_offset)
                        res_addr_offset |= (1UL << 56);
 
+               cpt_cq_ena = (uint64_t)inl_dev->cpt_cq_ena << 63;
                lf_cfg->enable = 1;
                lf_cfg->profile_id = profile_id; /* IPsec profile is 0th one */
-               lf_cfg->rx_inline_sa_base = 
(uintptr_t)nix->inb_sa_base[profile_id];
+               lf_cfg->rx_inline_sa_base = 
(uintptr_t)nix->inb_sa_base[profile_id] | cpt_cq_ena;
                lf_cfg->rx_inline_cfg0 =
                        ((def_cptq << 57) | res_addr_offset | 
((uint64_t)SSO_TT_ORDERED << 44) |
                         (sa_pow2_sz << 16) | lenm1_max);
@@ -588,6 +590,7 @@ nix_inl_reass_inb_sa_tbl_setup(struct roc_nix *roc_nix)
        uint64_t max_sa = 1, sa_pow2_sz;
        uint64_t sa_idx_w, lenm1_max;
        uint64_t res_addr_offset = 0;
+       uint64_t cpt_cq_ena = 0;
        uint64_t def_cptq = 0;
        size_t inb_sa_sz = 1;
        uint8_t profile_id;
@@ -637,9 +640,10 @@ nix_inl_reass_inb_sa_tbl_setup(struct roc_nix *roc_nix)
                        res_addr_offset |= (1UL << 56);
        }
 
+       cpt_cq_ena = (uint64_t)inl_dev->cpt_cq_ena << 63;
        lf_cfg->enable = 1;
        lf_cfg->profile_id = profile_id;
-       lf_cfg->rx_inline_sa_base = (uintptr_t)nix->inb_sa_base[profile_id];
+       lf_cfg->rx_inline_sa_base = (uintptr_t)nix->inb_sa_base[profile_id] | 
cpt_cq_ena;
        lf_cfg->rx_inline_cfg0 =
                ((def_cptq << 57) | res_addr_offset | ((uint64_t)SSO_TT_ORDERED 
<< 44) |
                 (sa_pow2_sz << 16) | lenm1_max);
diff --git a/drivers/common/cnxk/roc_nix_inl.h 
b/drivers/common/cnxk/roc_nix_inl.h
index 596f12d1c7..d1a08a4495 100644
--- a/drivers/common/cnxk/roc_nix_inl.h
+++ b/drivers/common/cnxk/roc_nix_inl.h
@@ -44,7 +44,8 @@
 #define ROC_NIX_INL_RXC_QUE_BLK_THR 0x40UL
 
 enum nix_inl_event_type {
-       NIX_INL_CPT_CQ = 1,
+       NIX_INL_INB_CPT_CQ = 1,
+       NIX_INL_OUTB_CPT_CQ,
        NIX_INL_SSO,
        NIX_INL_SOFT_EXPIRY_THRD,
 };
diff --git a/drivers/common/cnxk/roc_nix_inl_dev.c 
b/drivers/common/cnxk/roc_nix_inl_dev.c
index 35528efa46..0f97952af3 100644
--- a/drivers/common/cnxk/roc_nix_inl_dev.c
+++ b/drivers/common/cnxk/roc_nix_inl_dev.c
@@ -382,6 +382,7 @@ nix_inl_nix_ipsec_cfg(struct nix_inl_dev *inl_dev, bool ena)
                struct nix_rx_inl_lf_cfg_req *lf_cfg;
                uint64_t res_addr_offset;
                uint64_t def_cptq;
+               uint64_t cpt_cq_ena;
 
                lf_cfg = mbox_alloc_msg_nix_rx_inl_lf_cfg(mbox);
                if (lf_cfg == NULL) {
@@ -401,7 +402,9 @@ nix_inl_nix_ipsec_cfg(struct nix_inl_dev *inl_dev, bool ena)
                lf_cfg->profile_id = inl_dev->ipsec_prof_id;
                if (ena) {
                        lf_cfg->enable = 1;
-                       lf_cfg->rx_inline_sa_base = 
(uintptr_t)inl_dev->inb_sa_base[profile_id];
+                       cpt_cq_ena = (uint64_t)inl_dev->cpt_cq_ena << 63;
+                       lf_cfg->rx_inline_sa_base =
+                               (uintptr_t)inl_dev->inb_sa_base[profile_id] | 
(cpt_cq_ena);
                        lf_cfg->rx_inline_cfg0 =
                                ((def_cptq << 57) | res_addr_offset |
                                 ((uint64_t)SSO_TT_ORDERED << 44) | (sa_pow2_sz 
<< 16) | lenm1_max);
@@ -482,13 +485,33 @@ nix_inl_cpt_setup(struct nix_inl_dev *inl_dev, bool 
inl_dev_sso)
 lf_fini:
        for (i = 0; i < inl_dev->nb_cptlf; i++) {
                struct roc_cpt_lf *lf = &inl_dev->cpt_lf[i];
-               cpt_lf_fini(lf, lf->cpt_cq_ena);
+               cpt_lf_fini(lf, false);
        }
 lf_free:
        rc |= cpt_lfs_free(dev);
        return rc;
 }
 
+static int
+nix_inl_cpt_cq_inb_release(struct nix_inl_dev *inl_dev)
+{
+       int i;
+
+       if (!inl_dev || !inl_dev->cpt_cq_ena)
+               return 0;
+       for (i = 0; i < inl_dev->nb_inb_cptlfs; i++) {
+               uint8_t slot_id = inl_dev->inb_cpt_lf_id + i;
+               struct roc_cpt_lf *lf = &inl_dev->cpt_lf[slot_id];
+
+               if (lf->cpt_cq_ena) {
+                       cpt_lf_cq_fini(lf);
+                       cpt_lf_unregister_irqs(lf, cpt_lf_misc_irq, 
nix_inl_cpt_done_irq);
+               }
+       }
+
+       return 0;
+}
+
 static int
 nix_inl_cpt_release(struct nix_inl_dev *inl_dev)
 {
@@ -625,6 +648,7 @@ nix_inl_nix_profile_config(struct nix_inl_dev *inl_dev, 
uint8_t profile_id)
        uint64_t max_sa, sa_w, sa_pow2_sz, lenm1_max;
        struct nix_rx_inl_lf_cfg_req *lf_cfg;
        uint64_t res_addr_offset;
+       uint64_t cpt_cq_ena;
        uint64_t def_cptq;
        size_t inb_sa_sz;
        void *sa;
@@ -665,7 +689,8 @@ nix_inl_nix_profile_config(struct nix_inl_dev *inl_dev, 
uint8_t profile_id)
 
        lf_cfg->enable = 1;
        lf_cfg->profile_id = profile_id;
-       lf_cfg->rx_inline_sa_base = (uintptr_t)inl_dev->inb_sa_base[profile_id];
+       cpt_cq_ena = (uint64_t)inl_dev->cpt_cq_ena << 63;
+       lf_cfg->rx_inline_sa_base = (uintptr_t)inl_dev->inb_sa_base[profile_id] 
| cpt_cq_ena;
        lf_cfg->rx_inline_cfg0 =
                ((def_cptq << 57) | res_addr_offset | ((uint64_t)SSO_TT_ORDERED 
<< 44) |
                 (sa_pow2_sz << 16) | lenm1_max);
@@ -716,6 +741,38 @@ nix_inl_nix_profile_release(struct nix_inl_dev *inl_dev, 
uint8_t profile_id)
        return rc;
 }
 
+static int
+nix_inl_cpt_cq_inb_setup(struct nix_inl_dev *inl_dev)
+{
+       int i, rc;
+
+       if (!inl_dev->cpt_cq_ena)
+               return 0;
+       for (i = 0; i < inl_dev->nb_inb_cptlfs; i++) {
+               uint8_t slot_id = inl_dev->inb_cpt_lf_id + i;
+               struct roc_cpt_lf *lf = &inl_dev->cpt_lf[slot_id];
+
+               lf->dq_ack_ena = true;
+               lf->cpt_cq_ena = true;
+               lf->cq_entry_size = 0;
+               lf->cq_all = 0;
+               lf->cq_size = lf->nb_desc;
+               lf->dev = &inl_dev->dev;
+               lf->cq_head = 1;
+
+               rc = cpt_lf_cq_init(lf);
+               if (rc)
+                       return rc;
+
+               rc = cpt_lf_register_irqs(lf, cpt_lf_misc_irq, 
nix_inl_cpt_done_irq);
+               if (rc)
+                       return rc;
+               roc_cpt_cq_enable(lf);
+       }
+
+       return 0;
+}
+
 static int
 nix_inl_nix_reass_setup(struct nix_inl_dev *inl_dev)
 {
@@ -1451,11 +1508,17 @@ roc_nix_inl_dev_init(struct roc_nix_inl_dev 
*roc_inl_dev)
        if (rc)
                goto sso_release;
 
+       if (roc_feature_nix_has_cpt_cq_support()) {
+               rc = nix_inl_cpt_cq_inb_setup(inl_dev);
+               if (rc)
+                       goto cpt_release;
+       }
+
        /* Setup device specific inb SA table */
        rc = nix_inl_nix_ipsec_cfg(inl_dev, true);
        if (rc) {
                plt_err("Failed to setup NIX Inbound SA conf, rc=%d", rc);
-               goto cpt_release;
+               goto cpt_cq_inb_release;
        }
 
        /* Setup Reassembly */
@@ -1464,20 +1527,20 @@ roc_nix_inl_dev_init(struct roc_nix_inl_dev 
*roc_inl_dev)
 
                rc = nix_inl_nix_reass_setup(inl_dev);
                if (rc)
-                       goto cpt_release;
+                       goto cpt_cq_inb_release;
        }
 
        if (inl_dev->set_soft_exp_poll) {
                rc = nix_inl_outb_poll_thread_setup(inl_dev);
                if (rc)
-                       goto cpt_release;
+                       goto cpt_cq_inb_release;
        }
 
        /* Perform selftest if asked for */
        if (inl_dev->selftest) {
                rc = nix_inl_selftest();
                if (rc)
-                       goto cpt_release;
+                       goto cpt_cq_inb_release;
        }
        inl_dev->max_ipsec_rules = roc_inl_dev->max_ipsec_rules;
 
@@ -1486,14 +1549,14 @@ roc_nix_inl_dev_init(struct roc_nix_inl_dev 
*roc_inl_dev)
                        plt_zmalloc(sizeof(int) * inl_dev->max_ipsec_rules, 
PLT_CACHE_LINE_SIZE);
                if (inl_dev->ipsec_index == NULL) {
                        rc = NPC_ERR_NO_MEM;
-                       goto cpt_release;
+                       goto cpt_cq_inb_release;
                }
                rc = npc_mcam_alloc_entries(inl_dev->dev.mbox, 
inl_dev->max_ipsec_rules,
                                            inl_dev->ipsec_index, 
inl_dev->max_ipsec_rules,
                                            NPC_MCAM_HIGHER_PRIO, &resp_count, 
1);
                if (rc) {
                        plt_free(inl_dev->ipsec_index);
-                       goto cpt_release;
+                       goto cpt_cq_inb_release;
                }
 
                start_index = inl_dev->ipsec_index[0];
@@ -1507,6 +1570,8 @@ roc_nix_inl_dev_init(struct roc_nix_inl_dev *roc_inl_dev)
        idev->nix_inl_dev = inl_dev;
 
        return 0;
+cpt_cq_inb_release:
+       rc |= nix_inl_cpt_cq_inb_release(inl_dev);
 cpt_release:
        rc |= nix_inl_cpt_release(inl_dev);
 sso_release:
@@ -1558,8 +1623,9 @@ roc_nix_inl_dev_fini(struct roc_nix_inl_dev *roc_inl_dev)
        /* Flush Inbound CTX cache entries */
        nix_inl_cpt_ctx_cache_sync(inl_dev);
 
+       rc = nix_inl_cpt_cq_inb_release(inl_dev);
        /* Release CPT */
-       rc = nix_inl_cpt_release(inl_dev);
+       rc |= nix_inl_cpt_release(inl_dev);
 
        /* Release SSO */
        rc |= nix_inl_sso_release(inl_dev);
diff --git a/drivers/common/cnxk/roc_nix_inl_dev_irq.c 
b/drivers/common/cnxk/roc_nix_inl_dev_irq.c
index 89155a1f7d..30986e780a 100644
--- a/drivers/common/cnxk/roc_nix_inl_dev_irq.c
+++ b/drivers/common/cnxk/roc_nix_inl_dev_irq.c
@@ -49,10 +49,11 @@ static void
 nix_inl_cpt_cq_cb(struct roc_cpt_lf *lf)
 {
        struct roc_nix *roc_nix = (struct roc_nix *)lf->dev->roc_nix;
+       struct nix *nix = roc_nix_to_nix_priv(roc_nix);
        struct idev_cfg *idev = idev_get_cfg();
        uint32_t port_id = roc_nix->port_id;
        struct nix_inl_dev *inl_dev = NULL;
-       struct roc_ow_ipsec_outb_sa *sa;
+       enum nix_inl_event_type cq_type;
        union cpt_lf_cq_base cq_base;
        union cpt_lf_cq_ptr cq_ptr;
        struct cpt_cq_s *cq_s;
@@ -60,6 +61,7 @@ nix_inl_cpt_cq_cb(struct roc_cpt_lf *lf)
        uint32_t count, head;
        uint32_t nq_ptr;
        uint64_t i;
+       void *sa;
 
        if (idev)
                inl_dev = idev->nix_inl_dev;
@@ -75,23 +77,30 @@ nix_inl_cpt_cq_cb(struct roc_cpt_lf *lf)
        count = cq_ptr.s.count;
        nq_ptr = cq_ptr.s.nq_ptr;
 
+       if (lf->dev == &inl_dev->dev)
+               cq_type = NIX_INL_INB_CPT_CQ;
+       else if (lf->dev == &nix->dev)
+               cq_type = NIX_INL_OUTB_CPT_CQ;
+       else
+               return;
+
        for (i = 0; i < count; i++) {
                cq_s = (struct cpt_cq_s *)(uintptr_t)(((cq_base.s.addr << 7)) + 
(head << 5));
 
                if (cq_s->w0.s.uc_compcode && cq_s->w0.s.compcode) {
                        switch (cq_s->w2.s.fmt & fmt_msk) {
                        case WQE_PTR_CPTR:
-                               sa = (struct roc_ow_ipsec_outb_sa 
*)cq_s->w1.esn;
+                               sa = (void *)cq_s->w1.esn;
                                break;
                        case CPTR_WQE_PTR:
-                               sa = (struct roc_ow_ipsec_outb_sa 
*)cq_s->w3.comp_ptr;
+                               sa = (void *)cq_s->w3.comp_ptr;
                                break;
                        default:
                                plt_err("Invalid event Received ");
                                goto done;
                        }
                        uint64_t tmp = ~(uint32_t)0x0;
-                       inl_dev->work_cb(&tmp, sa, NIX_INL_CPT_CQ, (void 
*)cq_s, port_id);
+                       inl_dev->work_cb(&tmp, sa, cq_type, (void *)cq_s, 
port_id);
                }
 done:
                head = (head + 1) % lf->cq_size;
@@ -165,7 +174,7 @@ nix_inl_sso_hws_irq(void *param)
 void
 nix_inl_cpt_done_irq(void *param)
 {
-       struct roc_cpt_lf *lf = param;
+       struct roc_cpt_lf *lf = (struct roc_cpt_lf *)param;
        uint64_t done_wait;
        uint64_t intr;
 
diff --git a/drivers/net/cnxk/cn20k_ethdev_sec.c 
b/drivers/net/cnxk/cn20k_ethdev_sec.c
index 5553aed1b1..5e9212948b 100644
--- a/drivers/net/cnxk/cn20k_ethdev_sec.c
+++ b/drivers/net/cnxk/cn20k_ethdev_sec.c
@@ -439,18 +439,31 @@ cnxk_pktmbuf_free_no_cache(struct rte_mbuf *mbuf)
 }
 
 static void
-cn20k_eth_sec_post_event(struct rte_eth_dev *eth_dev, struct 
roc_ow_ipsec_outb_sa *sa,
+cn20k_eth_sec_post_event(struct rte_eth_dev *eth_dev, void *sa, enum 
nix_inl_event_type type,
                         uint16_t uc_compcode, uint16_t compcode, struct 
rte_mbuf *mbuf)
 {
        struct rte_eth_event_ipsec_desc desc;
        struct cn20k_sec_sess_priv sess_priv;
-       struct cn20k_outb_priv_data *priv;
+       struct cn20k_outb_priv_data *outb_priv;
+       struct cn20k_inb_priv_data *inb_priv;
        static uint64_t warn_cnt;
+       uint64_t life_unit;
 
        memset(&desc, 0, sizeof(desc));
-       priv = roc_nix_inl_ow_ipsec_outb_sa_sw_rsvd(sa);
        sess_priv.u64 = 0;
 
+       if (type == NIX_INL_INB_CPT_CQ) {
+               struct roc_ow_ipsec_inb_sa *inb_sa = (struct 
roc_ow_ipsec_inb_sa *)sa;
+               inb_priv = roc_nix_inl_ow_ipsec_inb_sa_sw_rsvd(sa);
+               desc.metadata = (uint64_t)inb_priv->userdata;
+               life_unit = inb_sa->w2.s.life_unit;
+       } else {
+               struct roc_ow_ipsec_outb_sa *outb_sa = (struct 
roc_ow_ipsec_outb_sa *)sa;
+               outb_priv = roc_nix_inl_ow_ipsec_outb_sa_sw_rsvd(sa);
+               desc.metadata = (uint64_t)outb_priv->userdata;
+               life_unit = outb_sa->w2.s.life_unit;
+       }
+
        if (mbuf)
                sess_priv.u64 = *rte_security_dynfield(mbuf);
 
@@ -459,14 +472,14 @@ cn20k_eth_sec_post_event(struct rte_eth_dev *eth_dev, 
struct roc_ow_ipsec_outb_s
                desc.subtype = RTE_ETH_EVENT_IPSEC_ESN_OVERFLOW;
                break;
        case ROC_IE_OW_UCC_ERR_SA_EXPIRED:
-               if (sa->w2.s.life_unit == ROC_IE_OW_SA_LIFE_UNIT_PKTS)
+               if (life_unit == ROC_IE_OW_SA_LIFE_UNIT_PKTS)
                        desc.subtype = RTE_ETH_EVENT_IPSEC_SA_PKT_HARD_EXPIRY;
                else
                        desc.subtype = RTE_ETH_EVENT_IPSEC_SA_BYTE_HARD_EXPIRY;
                break;
        case ROC_IE_OW_UCC_SUCCESS_SA_SOFTEXP_FIRST:
        case ROC_IE_OW_UCC_SUCCESS_SA_SOFTEXP_AGAIN:
-               if (sa->w2.s.life_unit == ROC_IE_OW_SA_LIFE_UNIT_PKTS)
+               if (life_unit == ROC_IE_OW_SA_LIFE_UNIT_PKTS)
                        desc.subtype = RTE_ETH_EVENT_IPSEC_SA_PKT_EXPIRY;
                else
                        desc.subtype = RTE_ETH_EVENT_IPSEC_SA_BYTE_EXPIRY;
@@ -490,7 +503,6 @@ cn20k_eth_sec_post_event(struct rte_eth_dev *eth_dev, 
struct roc_ow_ipsec_outb_s
                break;
        }
 
-       desc.metadata = (uint64_t)priv->userdata;
        rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_IPSEC, &desc);
 }
 
@@ -498,12 +510,15 @@ static const char *
 get_inl_event_type(enum nix_inl_event_type type)
 {
        switch (type) {
-       case NIX_INL_CPT_CQ:
-               return "NIX_INL_CPT_CQ";
+       case NIX_INL_OUTB_CPT_CQ:
+               return "NIX_INL_OUTB_CPT_CQ";
+       case NIX_INL_INB_CPT_CQ:
+               return "NIX_INL_INB_CPT_CQ";
        case NIX_INL_SSO:
                return "NIX_INL_SSO";
        case NIX_INL_SOFT_EXPIRY_THRD:
                return "NIX_INL_SOFT_EXPIRY_THRD";
+
        default:
                return "Unknown event";
        }
@@ -515,8 +530,8 @@ cn20k_eth_sec_sso_work_cb(uint64_t *gw, void *args, enum 
nix_inl_event_type type
 {
        struct rte_eth_event_ipsec_desc desc;
        struct cn20k_sec_sess_priv sess_priv;
-       struct cn20k_outb_priv_data *priv;
-       struct roc_ow_ipsec_outb_sa *sa;
+       struct cn20k_outb_priv_data *outb_priv;
+       struct roc_ow_ipsec_outb_sa *outb_sa;
        struct cpt_cn20k_res_s *res;
        struct rte_eth_dev *eth_dev;
        struct cnxk_eth_dev *dev;
@@ -546,20 +561,19 @@ cn20k_eth_sec_sso_work_cb(uint64_t *gw, void *args, enum 
nix_inl_event_type type
                /* Fall through */
        default:
                if (type) {
-                       sa = (struct roc_ow_ipsec_outb_sa *)args;
-                       priv = roc_nix_inl_ow_ipsec_outb_sa_sw_rsvd(sa);
-                       desc.metadata = (uint64_t)priv->userdata;
                        eth_dev = &rte_eth_devices[port_id];
-                       if (type == NIX_INL_CPT_CQ) {
-                               struct cpt_cq_s *cqs = (struct cpt_cq_s *)cq_s;
-
-                               cn20k_eth_sec_post_event(eth_dev, sa,
+                       struct cpt_cq_s *cqs = (struct cpt_cq_s *)cq_s;
+                       if (type < NIX_INL_SSO) {
+                               cn20k_eth_sec_post_event(eth_dev, args, type,
                                                         
(uint16_t)cqs->w0.s.uc_compcode,
                                                         
(uint16_t)cqs->w0.s.compcode, NULL);
                                return;
                        }
                        if (type == NIX_INL_SOFT_EXPIRY_THRD) {
-                               if (sa->w2.s.life_unit == 
ROC_IE_OW_SA_LIFE_UNIT_PKTS)
+                               outb_sa = (struct roc_ow_ipsec_outb_sa *)args;
+                               outb_priv = 
roc_nix_inl_ow_ipsec_outb_sa_sw_rsvd(outb_sa);
+                               desc.metadata = (uint64_t)outb_priv->userdata;
+                               if (outb_sa->w2.s.life_unit == 
ROC_IE_OW_SA_LIFE_UNIT_PKTS)
                                        desc.subtype = 
RTE_ETH_EVENT_IPSEC_SA_PKT_EXPIRY;
                                else
                                        desc.subtype = 
RTE_ETH_EVENT_IPSEC_SA_BYTE_EXPIRY;
@@ -596,9 +610,9 @@ cn20k_eth_sec_sso_work_cb(uint64_t *gw, void *args, enum 
nix_inl_event_type type
        sess_priv.u64 = *rte_security_dynfield(mbuf);
 
        sa_base = dev->outb.sa_base;
-       sa = roc_nix_inl_ow_ipsec_outb_sa(sa_base, sess_priv.sa_idx);
+       outb_sa = roc_nix_inl_ow_ipsec_outb_sa(sa_base, sess_priv.sa_idx);
 
-       cn20k_eth_sec_post_event(eth_dev, sa, res->uc_compcode, res->compcode, 
mbuf);
+       cn20k_eth_sec_post_event(eth_dev, outb_sa, type, res->uc_compcode, 
res->compcode, mbuf);
 
        cnxk_pktmbuf_free_no_cache(mbuf);
 }
-- 
2.34.1

Reply via email to