Commit d21c2fe6e5a1 ("net/iavf: fix check for PF Rx timestamp support") added a 
check against whether the PF has actually enabled Rx timestamping in 
iavf_dev_info_get(). Unfortunately, this function may be called prior to the 
PTP capabilities being exchanged, which results in Rx timestamping not being 
supported.

Fix this by checking the PF PTP capabilities near the end of iavf_dev_init(). 
This ensures the VF knows the capabilities at the point where the 
iavf_dev_info_get() function can be called. Doing the check at init is better 
than inside the info callback, as the info callback is called many times.

The capability exchange in iavf_dev_start() is kept to ensure that capabilities 
are updated after resets.

Fixes: d21c2fe6e5a1 ("net/iavf: fix check for PF Rx timestamp support")
Signed-off-by: Jacob Keller <[email protected]>
---
My recent fix to prevent enabling Rx timestamping on PFs which do support PTP 
capability but do not report Rx timestamping accidentally broke PFs which *do* 
support Rx timestamping. This is because the driver did not exchange capability 
before reporting its device info. Fix this by checking PF capabilities during 
iavf_dev_init().
---
 drivers/net/intel/iavf/iavf_ethdev.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/intel/iavf/iavf_ethdev.c 
b/drivers/net/intel/iavf/iavf_ethdev.c
index 3ef766de4704..9b07b11a6b51 100644
--- a/drivers/net/intel/iavf/iavf_ethdev.c
+++ b/drivers/net/intel/iavf/iavf_ethdev.c
@@ -2887,6 +2887,14 @@ iavf_dev_init(struct rte_eth_dev *eth_dev)
                }
        }
 
+       /* Get PTP caps early to verify device capabilities */
+       if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_CAP_PTP) {
+               if (iavf_get_ptp_cap(adapter)) {
+                       PMD_INIT_LOG(ERR, "Failed to get ptp capability");
+                       goto security_init_err;
+               }
+       }
+
        iavf_default_rss_disable(adapter);
 
        iavf_dev_stats_reset(eth_dev);

---
base-commit: ef98b88455bf4a7c8b7aa3106a761c9e9270d6a3
change-id: 20251121-jk-dpdk-iavf-rx-timestamping-fix-abdcb42f0197

Best regards,
--
Jacob Keller <[email protected]>

Hi Jacob,

Currently PTP features are not enabled in DPDK. We only have the Rx timestamp 
API in place. Typically the change that you want needs to be implemented in 
ethdev_ops.timesync_enable(), which is not implemented.

Reply via email to