Message ID | 20241015105414.2825635-3-svens@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | PtP driver for s390 clocks | expand |
On Tue, Oct 15, 2024 at 12:54:13PM +0200, Sven Schnelle wrote: > To allow users to have stable device names with the help of udev, > add the name to the udev event that is sent when a new PtP clock > is available. The key is called 'PTP_CLOCK_NAME'. Where are you documenting this new user/kernel api you are adding? > > Signed-off-by: Sven Schnelle <svens@linux.ibm.com> > --- > drivers/ptp/ptp_clock.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c > index c56cd0f63909..15937acb79c6 100644 > --- a/drivers/ptp/ptp_clock.c > +++ b/drivers/ptp/ptp_clock.c > @@ -25,9 +25,11 @@ > #define PTP_PPS_EVENT PPS_CAPTUREASSERT > #define PTP_PPS_MODE (PTP_PPS_DEFAULTS | PPS_CANWAIT | PPS_TSFMT_TSPEC) > > +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env); > const struct class ptp_class = { > .name = "ptp", > - .dev_groups = ptp_groups > + .dev_groups = ptp_groups, > + .dev_uevent = ptp_udev_uevent > }; > > /* private globals */ > @@ -514,6 +516,13 @@ EXPORT_SYMBOL(ptp_cancel_worker_sync); > > /* module operations */ > > +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env) > +{ > + struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev); > + > + return add_uevent_var(env, "PTP_CLOCK_NAME=%s", ptp->info->name); Why is this needed? Can't you get the name from the sysfs paths, the symlink should be there already. thanks, greg k-h
Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes: > On Tue, Oct 15, 2024 at 12:54:13PM +0200, Sven Schnelle wrote: >> To allow users to have stable device names with the help of udev, >> add the name to the udev event that is sent when a new PtP clock >> is available. The key is called 'PTP_CLOCK_NAME'. > > Where are you documenting this new user/kernel api you are adding? > >> >> Signed-off-by: Sven Schnelle <svens@linux.ibm.com> >> --- >> drivers/ptp/ptp_clock.c | 11 ++++++++++- >> 1 file changed, 10 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c >> index c56cd0f63909..15937acb79c6 100644 >> --- a/drivers/ptp/ptp_clock.c >> +++ b/drivers/ptp/ptp_clock.c >> @@ -25,9 +25,11 @@ >> #define PTP_PPS_EVENT PPS_CAPTUREASSERT >> #define PTP_PPS_MODE (PTP_PPS_DEFAULTS | PPS_CANWAIT | PPS_TSFMT_TSPEC) >> >> +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env); >> const struct class ptp_class = { >> .name = "ptp", >> - .dev_groups = ptp_groups >> + .dev_groups = ptp_groups, >> + .dev_uevent = ptp_udev_uevent >> }; >> >> /* private globals */ >> @@ -514,6 +516,13 @@ EXPORT_SYMBOL(ptp_cancel_worker_sync); >> >> /* module operations */ >> >> +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env) >> +{ >> + struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev); >> + >> + return add_uevent_var(env, "PTP_CLOCK_NAME=%s", ptp->info->name); > > Why is this needed? Can't you get the name from the sysfs paths, the > symlink should be there already. You mean the 'clock_name' attribute in sysfs? That would require to write some script to iterate over all ptp devices and check the name, or is there a way to match that in udev?
On Tue, Oct 15, 2024 at 02:02:17PM +0200, Sven Schnelle wrote: > Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes: > > > On Tue, Oct 15, 2024 at 12:54:13PM +0200, Sven Schnelle wrote: > >> To allow users to have stable device names with the help of udev, > >> add the name to the udev event that is sent when a new PtP clock > >> is available. The key is called 'PTP_CLOCK_NAME'. > > > > Where are you documenting this new user/kernel api you are adding? > > > >> > >> Signed-off-by: Sven Schnelle <svens@linux.ibm.com> > >> --- > >> drivers/ptp/ptp_clock.c | 11 ++++++++++- > >> 1 file changed, 10 insertions(+), 1 deletion(-) > >> > >> diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c > >> index c56cd0f63909..15937acb79c6 100644 > >> --- a/drivers/ptp/ptp_clock.c > >> +++ b/drivers/ptp/ptp_clock.c > >> @@ -25,9 +25,11 @@ > >> #define PTP_PPS_EVENT PPS_CAPTUREASSERT > >> #define PTP_PPS_MODE (PTP_PPS_DEFAULTS | PPS_CANWAIT | PPS_TSFMT_TSPEC) > >> > >> +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env); > >> const struct class ptp_class = { > >> .name = "ptp", > >> - .dev_groups = ptp_groups > >> + .dev_groups = ptp_groups, > >> + .dev_uevent = ptp_udev_uevent > >> }; > >> > >> /* private globals */ > >> @@ -514,6 +516,13 @@ EXPORT_SYMBOL(ptp_cancel_worker_sync); > >> > >> /* module operations */ > >> > >> +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env) > >> +{ > >> + struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev); > >> + > >> + return add_uevent_var(env, "PTP_CLOCK_NAME=%s", ptp->info->name); > > > > Why is this needed? Can't you get the name from the sysfs paths, the > > symlink should be there already. > > You mean the 'clock_name' attribute in sysfs? Great, yes, it's right there. > That would require to > write some script to iterate over all ptp devices and check the name, > or is there a way to match that in udev? Yes there is. Please use that :) thanks, greg k-h
Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes: > On Tue, Oct 15, 2024 at 02:02:17PM +0200, Sven Schnelle wrote: >> Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes: >> >> > On Tue, Oct 15, 2024 at 12:54:13PM +0200, Sven Schnelle wrote: >> >> To allow users to have stable device names with the help of udev, >> >> add the name to the udev event that is sent when a new PtP clock >> >> is available. The key is called 'PTP_CLOCK_NAME'. >> > >> > Where are you documenting this new user/kernel api you are adding? >> > >> >> >> >> Signed-off-by: Sven Schnelle <svens@linux.ibm.com> >> >> --- >> >> drivers/ptp/ptp_clock.c | 11 ++++++++++- >> >> 1 file changed, 10 insertions(+), 1 deletion(-) >> >> >> >> diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c >> >> index c56cd0f63909..15937acb79c6 100644 >> >> --- a/drivers/ptp/ptp_clock.c >> >> +++ b/drivers/ptp/ptp_clock.c >> >> @@ -25,9 +25,11 @@ >> >> #define PTP_PPS_EVENT PPS_CAPTUREASSERT >> >> #define PTP_PPS_MODE (PTP_PPS_DEFAULTS | PPS_CANWAIT | PPS_TSFMT_TSPEC) >> >> >> >> +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env); >> >> const struct class ptp_class = { >> >> .name = "ptp", >> >> - .dev_groups = ptp_groups >> >> + .dev_groups = ptp_groups, >> >> + .dev_uevent = ptp_udev_uevent >> >> }; >> >> >> >> /* private globals */ >> >> @@ -514,6 +516,13 @@ EXPORT_SYMBOL(ptp_cancel_worker_sync); >> >> >> >> /* module operations */ >> >> >> >> +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env) >> >> +{ >> >> + struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev); >> >> + >> >> + return add_uevent_var(env, "PTP_CLOCK_NAME=%s", ptp->info->name); >> > >> > Why is this needed? Can't you get the name from the sysfs paths, the >> > symlink should be there already. >> >> You mean the 'clock_name' attribute in sysfs? > > Great, yes, it's right there. > >> That would require to >> write some script to iterate over all ptp devices and check the name, >> or is there a way to match that in udev? > > Yes there is. Please use that :) Indeed. Sorry, will drop the patch.
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index c56cd0f63909..15937acb79c6 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -25,9 +25,11 @@ #define PTP_PPS_EVENT PPS_CAPTUREASSERT #define PTP_PPS_MODE (PTP_PPS_DEFAULTS | PPS_CANWAIT | PPS_TSFMT_TSPEC) +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env); const struct class ptp_class = { .name = "ptp", - .dev_groups = ptp_groups + .dev_groups = ptp_groups, + .dev_uevent = ptp_udev_uevent }; /* private globals */ @@ -514,6 +516,13 @@ EXPORT_SYMBOL(ptp_cancel_worker_sync); /* module operations */ +static int ptp_udev_uevent(const struct device *dev, struct kobj_uevent_env *env) +{ + struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev); + + return add_uevent_var(env, "PTP_CLOCK_NAME=%s", ptp->info->name); +} + static void __exit ptp_exit(void) { class_unregister(&ptp_class);
To allow users to have stable device names with the help of udev, add the name to the udev event that is sent when a new PtP clock is available. The key is called 'PTP_CLOCK_NAME'. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> --- drivers/ptp/ptp_clock.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)