From: Rakesh Kudurumalla <[email protected]>

Update the inbound SA pkind using roc_npc_skip_size_pkind_get()
during session create and session update for both CN10K and CN20K.
This ensures the CPT second pass uses the correct pkind when
skip size is configured, retaining the default pkind otherwise.

Signed-off-by: Rakesh Kudurumalla <[email protected]>
---
 drivers/net/cnxk/cn10k_ethdev_sec.c | 9 +++++++++
 drivers/net/cnxk/cn20k_ethdev_sec.c | 8 ++++++++
 2 files changed, 17 insertions(+)

diff --git a/drivers/net/cnxk/cn10k_ethdev_sec.c 
b/drivers/net/cnxk/cn10k_ethdev_sec.c
index 855bea1796..2f1fdf34fc 100644
--- a/drivers/net/cnxk/cn10k_ethdev_sec.c
+++ b/drivers/net/cnxk/cn10k_ethdev_sec.c
@@ -853,6 +853,10 @@ cn10k_eth_sec_session_create(void *device,
                        goto err;
                }
 
+               rc = roc_npc_skip_size_pkind_get(&dev->npc);
+               if (rc >= 0)
+                       inb_sa_dptr->w0.s.pkind = rc;
+
                inb_priv = roc_nix_inl_ot_ipsec_inb_sa_sw_rsvd(inb_sa);
                /* Back pointer to get eth_sec */
                inb_priv->eth_sec = eth_sec;
@@ -1151,6 +1155,11 @@ cn10k_eth_sec_session_update(void *device, struct 
rte_security_session *sess,
                rc = cnxk_ot_ipsec_inb_sa_fill(inb_sa_dptr, ipsec, crypto, 0);
                if (rc)
                        goto err;
+
+               rc = roc_npc_skip_size_pkind_get(&dev->npc);
+               if (rc >= 0)
+                       inb_sa_dptr->w0.s.pkind = rc;
+
                /* Use cookie for original data */
                inb_sa_dptr->w1.s.cookie = inb_sa->w1.s.cookie;
 
diff --git a/drivers/net/cnxk/cn20k_ethdev_sec.c 
b/drivers/net/cnxk/cn20k_ethdev_sec.c
index 5d0debb81d..31f2518ea3 100644
--- a/drivers/net/cnxk/cn20k_ethdev_sec.c
+++ b/drivers/net/cnxk/cn20k_ethdev_sec.c
@@ -865,6 +865,10 @@ cn20k_eth_sec_session_create(void *device, struct 
rte_security_session_conf *con
                        goto err;
                }
 
+               rc = roc_npc_skip_size_pkind_get(&dev->npc);
+               if (rc >= 0)
+                       inb_sa_dptr->w0.s.pkind = rc;
+
                cn20k_eth_sec_inb_sa_misc_fill(inb_sa_dptr, ipsec);
 
                inb_priv = roc_nix_inl_ow_ipsec_inb_sa_sw_rsvd(inb_sa);
@@ -1137,6 +1141,10 @@ cn20k_eth_sec_session_update(void *device, struct 
rte_security_session *sess,
                if (rc)
                        return -EINVAL;
 
+               rc = roc_npc_skip_size_pkind_get(&dev->npc);
+               if (rc >= 0)
+                       inb_sa_dptr->w0.s.pkind = rc;
+
                cn20k_eth_sec_inb_sa_misc_fill(inb_sa_dptr, ipsec);
 
                /* Use cookie for original data */
-- 
2.34.1

Reply via email to