[PATCH] eventdev/eth_rx: fix timestamp field register in mbuf

Rahul Bhansali rbhansali at marvell.com
Mon Sep 18 10:25:53 CEST 2023


For eventdev internal port, timestamp dynamic field registration
in mbuf is not required as that will be done from net device.
For SW eventdev, Rx timestamp field registration will be
done during Rx queue add operation as per device capabilities and
offload configuration.

Fixes: 83ab470d1259 ("eventdev/eth_rx: use timestamp as dynamic mbuf field")
Cc: stable at dpdk.org

Signed-off-by: Rahul Bhansali <rbhansali at marvell.com>
---
 lib/eventdev/rte_event_eth_rx_adapter.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c
index 3ebfa5366d..5a5fade466 100644
--- a/lib/eventdev/rte_event_eth_rx_adapter.c
+++ b/lib/eventdev/rte_event_eth_rx_adapter.c
@@ -2472,13 +2472,6 @@ rxa_create(uint8_t id, uint8_t dev_id,
 	if (conf_cb == rxa_default_conf_cb)
 		rx_adapter->default_cb_arg = 1;
 
-	if (rte_mbuf_dyn_rx_timestamp_register(
-			&event_eth_rx_timestamp_dynfield_offset,
-			&event_eth_rx_timestamp_dynflag) != 0) {
-		RTE_EDEV_LOG_ERR("Error registering timestamp field in mbuf\n");
-		return -rte_errno;
-	}
-
 	rte_eventdev_trace_eth_rx_adapter_create(id, dev_id, conf_cb,
 		conf_arg);
 	return 0;
@@ -2738,6 +2731,7 @@ rte_event_eth_rx_adapter_queue_add(uint8_t id,
 					1);
 		}
 	} else {
+		uint64_t dev_offloads;
 		rte_spinlock_lock(&rx_adapter->rx_lock);
 		dev_info->internal_event_port = 0;
 		ret = rxa_init_service(rx_adapter, id);
@@ -2749,6 +2743,17 @@ rte_event_eth_rx_adapter_queue_add(uint8_t id,
 				rxa_sw_adapter_queue_count(rx_adapter));
 		}
 		rte_spinlock_unlock(&rx_adapter->rx_lock);
+
+		dev_offloads = dev_info->dev->data->dev_conf.rxmode.offloads;
+		if (dev_offloads & RTE_ETH_RX_OFFLOAD_TIMESTAMP) {
+			if (rte_mbuf_dyn_rx_timestamp_register(
+					&event_eth_rx_timestamp_dynfield_offset,
+					&event_eth_rx_timestamp_dynflag) != 0) {
+				RTE_EDEV_LOG_ERR("Error registering timestamp field in mbuf\n");
+				return -rte_errno;
+			}
+		}
+
 	}
 
 	rte_eventdev_trace_eth_rx_adapter_queue_add(id, eth_dev_id,
-- 
2.25.1



More information about the stable mailing list