Registration of timestamp field should be done once and only when ptp kernel changes are successful.
Fixes: 67b8f3220393 ("net/octeontx2: switch Rx timestamp to dynamic mbuf field") Signed-off-by: Harman Kalra <hka...@marvell.com> --- drivers/net/octeontx2/otx2_ethdev.c | 10 ---------- drivers/net/octeontx2/otx2_ptp.c | 17 +++++++++-------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c index 6cebbe677..cfb733a4b 100644 --- a/drivers/net/octeontx2/otx2_ethdev.c +++ b/drivers/net/octeontx2/otx2_ethdev.c @@ -2225,16 +2225,6 @@ otx2_nix_dev_start(struct rte_eth_dev *eth_dev) if (otx2_ethdev_is_ptp_en(dev) && otx2_dev_is_vf(dev)) otx2_nix_ptp_enable_vf(eth_dev); - if (dev->rx_offload_flags & NIX_RX_OFFLOAD_TSTAMP_F) { - rc = rte_mbuf_dyn_rx_timestamp_register( - &dev->tstamp.tstamp_dynfield_offset, - &dev->tstamp.rx_tstamp_dynflag); - if (rc != 0) { - otx2_err("Failed to register Rx timestamp field/flag"); - return -rte_errno; - } - } - rc = npc_rx_enable(dev); if (rc) { otx2_err("Failed to enable NPC rx %d", rc); diff --git a/drivers/net/octeontx2/otx2_ptp.c b/drivers/net/octeontx2/otx2_ptp.c index b8ef4c181..4aa68f578 100644 --- a/drivers/net/octeontx2/otx2_ptp.c +++ b/drivers/net/octeontx2/otx2_ptp.c @@ -239,14 +239,6 @@ otx2_nix_timesync_enable(struct rte_eth_dev *eth_dev) dev->tstamp.tx_tstamp_iova = ts->iova; dev->tstamp.tx_tstamp = ts->addr; - rc = rte_mbuf_dyn_rx_timestamp_register( - &dev->tstamp.tstamp_dynfield_offset, - &dev->tstamp.rx_tstamp_dynflag); - if (rc != 0) { - otx2_err("Failed to register Rx timestamp field/flag"); - return -rte_errno; - } - /* System time should be already on by default */ nix_start_timecounters(eth_dev); @@ -264,6 +256,15 @@ otx2_nix_timesync_enable(struct rte_eth_dev *eth_dev) /* Setting up the function pointers as per new offload flags */ otx2_eth_set_rx_function(eth_dev); otx2_eth_set_tx_function(eth_dev); + + /* Registering dynamic mbuf timestamp field and flag */ + rc = rte_mbuf_dyn_rx_timestamp_register( + &dev->tstamp.tstamp_dynfield_offset, + &dev->tstamp.rx_tstamp_dynflag); + if (rc != 0) { + otx2_err("Failed to register Rx timestamp field/flag"); + return -rte_errno; + } } rc = otx2_nix_recalc_mtu(eth_dev); -- 2.18.0