[PATCH RFC net-next v8 10/13] net: netdevsim: ptp_mock: Convert to netdev_ptp_clock_register

From: Kory Maincent
Date: Fri Feb 16 2024 - 10:56:00 EST


The hardware registration clock for net device is now using
netdev_ptp_clock_register to save the net_device pointer within the PTP
clock xarray. netdevsim is registering its ptp through the mock driver.
It is the only driver using the mock driver to register a ptp clock.
Convert the mock driver to the new API.

Signed-off-by: Kory Maincent <kory.maincent@xxxxxxxxxxx>
---
Shouldn't we move the mock driver in the netdevsim directory as it is only
used by netdevsim driver?

Changes in v8:
- New patch
---
drivers/net/netdevsim/netdev.c | 19 +++++++++++--------
drivers/ptp/ptp_mock.c | 4 ++--
include/linux/ptp_mock.h | 4 ++--
3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c
index 77e8250282a5..7f58645559b5 100644
--- a/drivers/net/netdevsim/netdev.c
+++ b/drivers/net/netdevsim/netdev.c
@@ -321,16 +321,11 @@ static int nsim_init_netdevsim(struct netdevsim *ns)
struct mock_phc *phc;
int err;

- phc = mock_phc_create(&ns->nsim_bus_dev->dev);
- if (IS_ERR(phc))
- return PTR_ERR(phc);
-
- ns->phc = phc;
ns->netdev->netdev_ops = &nsim_netdev_ops;

err = nsim_udp_tunnels_info_create(ns->nsim_dev, ns->netdev);
if (err)
- goto err_phc_destroy;
+ return err;

rtnl_lock();
err = nsim_bpf_init(ns);
@@ -344,8 +339,18 @@ static int nsim_init_netdevsim(struct netdevsim *ns)
if (err)
goto err_ipsec_teardown;
rtnl_unlock();
+
+ phc = mock_phc_create(ns->netdev);
+ if (IS_ERR(phc)) {
+ err = PTR_ERR(phc);
+ goto err_register_netdevice;
+ }
+
+ ns->phc = phc;
return 0;

+err_register_netdevice:
+ unregister_netdevice(ns->netdev);
err_ipsec_teardown:
nsim_ipsec_teardown(ns);
nsim_macsec_teardown(ns);
@@ -353,8 +358,6 @@ static int nsim_init_netdevsim(struct netdevsim *ns)
err_utn_destroy:
rtnl_unlock();
nsim_udp_tunnels_info_destroy(ns->netdev);
-err_phc_destroy:
- mock_phc_destroy(ns->phc);
return err;
}

diff --git a/drivers/ptp/ptp_mock.c b/drivers/ptp/ptp_mock.c
index e7b459c846a2..1dcbe7426746 100644
--- a/drivers/ptp/ptp_mock.c
+++ b/drivers/ptp/ptp_mock.c
@@ -115,7 +115,7 @@ int mock_phc_index(struct mock_phc *phc)
}
EXPORT_SYMBOL_GPL(mock_phc_index);

-struct mock_phc *mock_phc_create(struct device *dev)
+struct mock_phc *mock_phc_create(struct net_device *dev)
{
struct mock_phc *phc;
int err;
@@ -147,7 +147,7 @@ struct mock_phc *mock_phc_create(struct device *dev)
spin_lock_init(&phc->lock);
timecounter_init(&phc->tc, &phc->cc, 0);

- phc->clock = ptp_clock_register(&phc->info, dev);
+ phc->clock = netdev_ptp_clock_register(&phc->info, dev);
if (IS_ERR(phc->clock)) {
err = PTR_ERR(phc->clock);
goto out_free_phc;
diff --git a/include/linux/ptp_mock.h b/include/linux/ptp_mock.h
index 72eb401034d9..e226011071f8 100644
--- a/include/linux/ptp_mock.h
+++ b/include/linux/ptp_mock.h
@@ -13,13 +13,13 @@ struct mock_phc;

#if IS_ENABLED(CONFIG_PTP_1588_CLOCK_MOCK)

-struct mock_phc *mock_phc_create(struct device *dev);
+struct mock_phc *mock_phc_create(struct net_device *dev);
void mock_phc_destroy(struct mock_phc *phc);
int mock_phc_index(struct mock_phc *phc);

#else

-static inline struct mock_phc *mock_phc_create(struct device *dev)
+static inline struct mock_phc *mock_phc_create(struct net_device *dev)
{
return NULL;
}

--
2.25.1