From: Rakesh Kudurumalla <rkuduruma...@marvell.com> update event device with NIX_RX_REAS_F to handle out of place processing for boards that does not support reassembly as cn10k driver process OOP with NIX_RX_REAS_F enabled.
Signed-off-by: Rakesh Kudurumalla <rkuduruma...@marvell.com> --- drivers/event/cnxk/cn10k_eventdev.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/event/cnxk/cn10k_eventdev.c b/drivers/event/cnxk/cn10k_eventdev.c index 229d7a03fe..4e2968f91e 100644 --- a/drivers/event/cnxk/cn10k_eventdev.c +++ b/drivers/event/cnxk/cn10k_eventdev.c @@ -826,7 +826,7 @@ cn10k_sso_set_priv_mem(const struct rte_eventdev *event_dev, void *lookup_mem) } static void -eventdev_fops_tstamp_update(struct rte_eventdev *event_dev) +eventdev_fops_update(struct rte_eventdev *event_dev) { struct rte_event_fp_ops *fp_op = rte_event_fp_ops + event_dev->data->dev_id; @@ -849,7 +849,20 @@ cn10k_sso_tstamp_hdl_update(uint16_t port_id, uint16_t flags, bool ptp_en) else evdev->tstamp[port_id] = NULL; cn10k_sso_fp_fns_set((struct rte_eventdev *)(uintptr_t)event_dev); - eventdev_fops_tstamp_update(event_dev); + eventdev_fops_update(event_dev); +} + +static void +cn10k_sso_rx_offload_cb(uint16_t port_id, uint64_t flags) +{ + struct rte_eth_dev *dev = &rte_eth_devices[port_id]; + struct cnxk_eth_dev *cnxk_eth_dev = dev->data->dev_private; + struct rte_eventdev *event_dev = cnxk_eth_dev->evdev_priv; + struct cnxk_sso_evdev *evdev = cnxk_sso_pmd_priv(event_dev); + + evdev->rx_offloads |= flags; + cn10k_sso_fp_fns_set((struct rte_eventdev *)(uintptr_t)event_dev); + eventdev_fops_update(event_dev); } static int @@ -1224,6 +1237,7 @@ cn10k_sso_init(struct rte_eventdev *event_dev) return rc; } + cnxk_ethdev_rx_offload_cb_register(cn10k_sso_rx_offload_cb); event_dev->dev_ops = &cn10k_sso_dev_ops; /* For secondary processes, the primary has done all the work */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) { -- 2.34.1