}, }
}, }
},
+ { /* AES CBC */
+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
+ {.sym = {
+ .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
+ {.cipher = {
+ .algo = RTE_CRYPTO_CIPHER_AES_CBC,
+ .block_size = 16,
+ .key_size = {
+ .min = 16,
+ .max = 32,
+ .increment = 8
+ },
+ .iv_size = {
+ .min = 16,
+ .max = 16,
+ .increment = 0
+ }
+ }, }
+ }, }
+ },
+ { /* SHA1 HMAC */
+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
+ {.sym = {
+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
+ {.auth = {
+ .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
+ .block_size = 64,
+ .key_size = {
+ .min = 20,
+ .max = 64,
+ .increment = 1
+ },
+ .digest_size = {
+ .min = 12,
+ .max = 12,
+ .increment = 0
+ },
+ }, }
+ }, }
+ },
RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
};
}
};
+static inline int
+ar_window_init(struct cn9k_inb_priv_data *inb_priv)
+{
+ if (inb_priv->replay_win_sz > CNXK_ON_AR_WIN_SIZE_MAX) {
+ plt_err("Replay window size:%u is not supported",
+ inb_priv->replay_win_sz);
+ return -ENOTSUP;
+ }
+
+ rte_spinlock_init(&inb_priv->ar.lock);
+ /*
+ * Set window bottom to 1, base and top to size of
+ * window
+ */
+ inb_priv->ar.winb = 1;
+ inb_priv->ar.wint = inb_priv->replay_win_sz;
+ inb_priv->ar.base = inb_priv->replay_win_sz;
+
+ return 0;
+}
+
static int
cn9k_eth_sec_session_create(void *device,
struct rte_security_session_conf *conf,
/* Save userdata in inb private area */
inb_priv->userdata = conf->userdata;
+ inb_priv->replay_win_sz = ipsec->replay_win_sz;
+ if (inb_priv->replay_win_sz) {
+ rc = ar_window_init(inb_priv);
+ if (rc)
+ goto mempool_put;
+ }
+
+ /* Prepare session priv */
sess_priv.inb_sa = 1;
sess_priv.sa_idx = ipsec->spi;