From: Przemek Kitszel <przemyslaw.kitszel@intel.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: <netdev@vger.kernel.org>, Jakub Kicinski <kuba@kernel.org>,
Tony Nguyen <anthony.l.nguyen@intel.com>,
<intel-wired-lan@lists.osuosl.org>,
"Simon Horman" <horms@kernel.org>,
Michal Schmidt <mschmidt@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
"Paolo Abeni" <pabeni@redhat.com>
Subject: Re: [PATCH net-next] devlink: unify devlink_shd_get_priv() into devlink_priv()
Date: Mon, 23 Mar 2026 16:23:04 +0100 [thread overview]
Message-ID: <4bfa0e2b-47be-45b6-ae32-1fad3d184392@intel.com> (raw)
In-Reply-To: <fc7iebxveew5yi2trlpumcmugwzerixdm536kvgp5hlxmm4zw6@vmcbn76n7fvt>
On 3/23/26 16:03, Jiri Pirko wrote:
> Mon, Mar 23, 2026 at 02:21:36PM +0100, przemyslaw.kitszel@intel.com wrote:
>> Unify access API to shared devlink priv data with normal devlink.
>>
>> Thanks to Jiri Piro, we now have ability to create shared devlink
>> instances [1]. Introduction series have added usege of those for mlx, but
>> without priv data attached to the shared devlink.
>>
>> Current API makes it possible to access shared devlink instance's priv
>> data:
>>
>> void *devlink_shd_get_priv(struct devlink *devlink);
>>
>> but it is easy to to forget (especially during rebase from "before shared
>> devlinks" era) and call:
>>
>> void *devlink_priv(struct devlink *devlink);
>>
>> which even has the same signature, so it's hard to catch the error.
>>
>> New proposed API unifies both calls into one, without any increase in the
>> observerd struct size. (Alternative could be to store additional pointer,
>> set during devlink_alloc).
>
> You should use some AI corrector :) too many typos.
faux pas instead of faux bus, apologies for the most shameful of typos
("new machine"-kind of issue)
and thank you for looking
I have one more trivial related patch, will append to v2 tommorow
>
>>
>> Unexport the less convenient API call.
>>
>> [1] commit 411ad0605875 ("Merge branch 'devlink-introduce-shared-devlink-instance-for-pfs-on-same-chip'")
>> [1] https://lore.kernel.org/all/20260312100407.551173-1-jiri@resnulli.us
>>
>> Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
>> ---
>> sorry that I have not mentioned it during [1] review, it got obvious
>> for me only after working with the code
>> ---
>> net/devlink/devl_internal.h | 4 ++++
>> net/devlink/core.c | 3 +++
>> net/devlink/sh_dev.c | 11 ++++++++---
>> 3 files changed, 15 insertions(+), 3 deletions(-)
>>
>> diff --git a/net/devlink/devl_internal.h b/net/devlink/devl_internal.h
>> index 7dfb7cdd2d23..abbe308ee9bd 100644
>> --- a/net/devlink/devl_internal.h
>> +++ b/net/devlink/devl_internal.h
>> @@ -58,6 +58,7 @@ struct devlink {
>> struct mutex lock;
>> struct lock_class_key lock_key;
>> u8 reload_failed:1;
>> + u8 is_shd:1;
>> refcount_t refcount;
>> struct rcu_work rwork;
>> struct devlink_rel *rel;
>> @@ -72,6 +73,9 @@ struct devlink *__devlink_alloc(const struct devlink_ops *ops, size_t priv_size,
>> struct net *net, struct device *dev,
>> const struct device_driver *dev_driver);
>>
>> +/* Get private data from shared devlink instance */
>> +void *devlink_shd_get_priv(struct devlink *devlink);
>> +
>> #define devl_warn(devlink, format, args...) \
>> do { \
>> if ((devlink)->dev) \
>> diff --git a/net/devlink/core.c b/net/devlink/core.c
>> index eeb6a71f5f56..4c97e2e2c073 100644
>> --- a/net/devlink/core.c
>> +++ b/net/devlink/core.c
>> @@ -232,6 +232,9 @@ int devlink_rel_devlink_handle_put(struct sk_buff *msg, struct devlink *devlink,
>>
>> void *devlink_priv(struct devlink *devlink)
>> {
>> + if (devlink->is_shd)
>> + return devlink_shd_get_priv(devlink);
>> +
>> return &devlink->priv;
>> }
>> EXPORT_SYMBOL_GPL(devlink_priv);
>> diff --git a/net/devlink/sh_dev.c b/net/devlink/sh_dev.c
>> index 9b7456d64b57..450e3218759e 100644
>> --- a/net/devlink/sh_dev.c
>> +++ b/net/devlink/sh_dev.c
>> @@ -31,6 +31,11 @@ static struct devlink_shd *devlink_shd_lookup(const char *id)
>> return NULL;
>> }
>>
>> +static struct devlink_shd *devlink_to_shd(struct devlink *devlink)
>> +{
>> + return &devlink->priv;
>> +}
>
> Can you rather have unexported __devlink_priv() above existing
> devlink_priv()?
makes sense, will do
(this will not remove the need of devlink_shd_get_priv() in sh_dev.c,
as the struct devlink_shd is defined here)
>
>
>> +
>> static struct devlink_shd *devlink_shd_create(const char *id,
>> const struct devlink_ops *ops,
>> size_t priv_size,
>> @@ -43,13 +48,14 @@ static struct devlink_shd *devlink_shd_create(const char *id,
>> &init_net, NULL, driver);
>> if (!devlink)
>> return NULL;
>> - shd = devlink_priv(devlink);
>> + shd = devlink_to_shd(devlink);
>>
>> shd->id = kstrdup(id, GFP_KERNEL);
>> if (!shd->id)
>> goto err_devlink_free;
>> shd->priv_size = priv_size;
>> refcount_set(&shd->refcount, 1);
>> + devlink->is_shd = 1;
>>
>> devl_lock(devlink);
>> devl_register(devlink);
>> @@ -137,7 +143,7 @@ void devlink_shd_put(struct devlink *devlink)
>> struct devlink_shd *shd;
>>
>> mutex_lock(&shd_mutex);
>> - shd = devlink_priv(devlink);
>> + shd = devlink_to_shd(devlink);
>> if (refcount_dec_and_test(&shd->refcount))
>> devlink_shd_destroy(shd);
>> mutex_unlock(&shd_mutex);
>> @@ -159,4 +165,3 @@ void *devlink_shd_get_priv(struct devlink *devlink)
>>
>> return shd->priv;
>> }
>> -EXPORT_SYMBOL_GPL(devlink_shd_get_priv);
>> --
>> 2.39.3
>>
next prev parent reply other threads:[~2026-03-23 15:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-23 13:21 [PATCH net-next] devlink: unify devlink_shd_get_priv() into devlink_priv() Przemek Kitszel
2026-03-23 14:42 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-23 15:25 ` Przemek Kitszel
2026-03-23 15:03 ` Jiri Pirko
2026-03-23 15:23 ` Przemek Kitszel [this message]
2026-03-25 10:14 ` [Intel-wired-lan] " kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4bfa0e2b-47be-45b6-ae32-1fad3d184392@intel.com \
--to=przemyslaw.kitszel@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=mschmidt@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox