diff options
author | Jakub Kicinski <kuba@kernel.org> | 2022-03-15 09:00:04 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-03-16 22:56:31 +0300 |
commit | 2cb7b4890d6e7f20560dc251e7f8d3cc68b0d554 (patch) | |
tree | 7a097268cd33bddcbc44114f2c1111e501373375 /include/net | |
parent | 49045b9c810cd9b4ac5f8f235ad8ef17553a00fa (diff) | |
download | linux-2cb7b4890d6e7f20560dc251e7f8d3cc68b0d554.tar.xz |
devlink: expose instance locking and add locked port registering
It should be familiar and beneficial to expose devlink instance
lock to the drivers. This way drivers can block devlink from
calling them during critical sections without breakneck locking.
Add port helpers, port splitting callbacks will be the first
target.
Use 'devl_' prefix for "explicitly locked" API. Initial RFC used
'__devlink' but that's too much typing.
devl_lock_is_held() is not defined without lockdep, which is
the same behavior as lockdep_is_held() itself.
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/devlink.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/net/devlink.h b/include/net/devlink.h index 8d5349d2fb68..9de0d091aee9 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -1479,6 +1479,17 @@ void *devlink_priv(struct devlink *devlink); struct devlink *priv_to_devlink(void *priv); struct device *devlink_to_dev(const struct devlink *devlink); +/* Devlink instance explicit locking */ +void devl_lock(struct devlink *devlink); +void devl_unlock(struct devlink *devlink); +void devl_assert_locked(struct devlink *devlink); +bool devl_lock_is_held(struct devlink *devlink); + +int devl_port_register(struct devlink *devlink, + struct devlink_port *devlink_port, + unsigned int port_index); +void devl_port_unregister(struct devlink_port *devlink_port); + struct ib_device; struct net *devlink_net(const struct devlink *devlink); |