[v2,16/17] net/cnxk: handle OOP for inbound packet
Checks
Commit Message
From: Rakesh Kudurumalla <rkudurumalla@marvell.com>
To handle OOP for inbound packet, processing
is done based on NIX_RX_REAS_F flag. but for
boards that does not support reassembly
Inbound Out-Of-Place processing test case fails
because reassembly flag is not updated in event mode.
This patch fixes the same.
Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>
---
drivers/net/cnxk/cn10k_ethdev_sec.c | 10 ++++++++++
drivers/net/cnxk/cnxk_ethdev.h | 4 ++++
drivers/net/cnxk/version.map | 1 +
3 files changed, 15 insertions(+)
@@ -28,6 +28,13 @@ PLT_STATIC_ASSERT(RTE_PMD_CNXK_AR_WIN_SIZE_MAX == ROC_AR_WIN_SIZE_MAX);
PLT_STATIC_ASSERT(RTE_PMD_CNXK_LOG_MIN_AR_WIN_SIZE_M1 == ROC_LOG_MIN_AR_WIN_SIZE_M1);
PLT_STATIC_ASSERT(RTE_PMD_CNXK_AR_WINBITS_SZ == ROC_AR_WINBITS_SZ);
+cnxk_ethdev_rx_offload_cb_t cnxk_ethdev_rx_offload_cb;
+void
+cnxk_ethdev_rx_offload_cb_register(cnxk_ethdev_rx_offload_cb_t cb)
+{
+ cnxk_ethdev_rx_offload_cb = cb;
+}
+
static struct rte_cryptodev_capabilities cn10k_eth_sec_crypto_caps[] = {
{ /* AES GCM */
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
@@ -908,6 +915,9 @@ cn10k_eth_sec_session_create(void *device,
!(dev->rx_offload_flags & NIX_RX_REAS_F)) {
dev->rx_offload_flags |= NIX_RX_REAS_F;
cn10k_eth_set_rx_function(eth_dev);
+ if (cnxk_ethdev_rx_offload_cb)
+ cnxk_ethdev_rx_offload_cb(eth_dev->data->port_id,
+ NIX_RX_REAS_F);
}
} else {
struct roc_ot_ipsec_outb_sa *outb_sa, *outb_sa_dptr;
@@ -725,6 +725,10 @@ int cnxk_nix_lookup_mem_metapool_set(struct cnxk_eth_dev *dev);
int cnxk_nix_lookup_mem_metapool_clear(struct cnxk_eth_dev *dev);
__rte_internal
int cnxk_nix_inb_mode_set(struct cnxk_eth_dev *dev, bool use_inl_dev);
+typedef void (*cnxk_ethdev_rx_offload_cb_t)(uint16_t port_id, uint64_t flags);
+__rte_internal
+void cnxk_ethdev_rx_offload_cb_register(cnxk_ethdev_rx_offload_cb_t cb);
+
struct cnxk_eth_sec_sess *cnxk_eth_sec_sess_get_by_spi(struct cnxk_eth_dev *dev,
uint32_t spi, bool inb);
struct cnxk_eth_sec_sess *
@@ -23,4 +23,5 @@ EXPERIMENTAL {
INTERNAL {
global:
cnxk_nix_inb_mode_set;
+ cnxk_ethdev_rx_offload_cb_register;
};