Skip to content

Commit

Permalink
Merge branch 'devlink-cleanup-for-delay-event'
Browse files Browse the repository at this point in the history
Leon Romanovsky says:

====================
Devlink cleanup for delay event series

Jakub's request to make sure that devlink events are delayed and not
printed till they fully accessible [1] requires us to implement delayed
event notification system in the devlink.

In order to do it, I moved some of my patches (xarray e.t.c) from the future
series to be before "Move devlink_register to be near devlink_reload_enable" [2].

That allows us to rely on DEVLINK_REGISTERED xarray mark to decide if to print
event or not.

Other patches are simple cleanup which is needed anyway.

[1] https://lore.kernel.org/lkml/20210811071817.4af5ab34@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com
[2] https://lore.kernel.org/lkml/cover.1628599239.git.leonro@nvidia.com

Next in the queue:
 * Delay event series
 * Move devlink_register to be near devlink_reload_enable"
 * Extension of devlink_ops to be set dynamically
 * devlink_reload_* delete
 * Devlink locks rework to user xarray and reference counting
 * ????
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Aug 14, 2021
2 parents 38e3bfa + a1fcb10 commit 2fa1678
Show file tree
Hide file tree
Showing 4 changed files with 273 additions and 138 deletions.
8 changes: 1 addition & 7 deletions drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ int hclge_devlink_init(struct hclge_dev *hdev)

priv = devlink_priv(devlink);
priv->hdev = hdev;
hdev->devlink = devlink;

ret = devlink_register(devlink);
if (ret) {
Expand All @@ -126,8 +127,6 @@ int hclge_devlink_init(struct hclge_dev *hdev)
goto out_reg_fail;
}

hdev->devlink = devlink;

devlink_reload_enable(devlink);

return 0;
Expand All @@ -141,14 +140,9 @@ void hclge_devlink_uninit(struct hclge_dev *hdev)
{
struct devlink *devlink = hdev->devlink;

if (!devlink)
return;

devlink_reload_disable(devlink);

devlink_unregister(devlink);

devlink_free(devlink);

hdev->devlink = NULL;
}
8 changes: 1 addition & 7 deletions drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_devlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ int hclgevf_devlink_init(struct hclgevf_dev *hdev)

priv = devlink_priv(devlink);
priv->hdev = hdev;
hdev->devlink = devlink;

ret = devlink_register(devlink);
if (ret) {
Expand All @@ -128,8 +129,6 @@ int hclgevf_devlink_init(struct hclgevf_dev *hdev)
goto out_reg_fail;
}

hdev->devlink = devlink;

devlink_reload_enable(devlink);

return 0;
Expand All @@ -143,14 +142,9 @@ void hclgevf_devlink_uninit(struct hclgevf_dev *hdev)
{
struct devlink *devlink = hdev->devlink;

if (!devlink)
return;

devlink_reload_disable(devlink);

devlink_unregister(devlink);

devlink_free(devlink);

hdev->devlink = NULL;
}
4 changes: 3 additions & 1 deletion include/net/devlink.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ struct devlink_dev_stats {
struct devlink_ops;

struct devlink {
struct list_head list;
u32 index;
struct list_head port_list;
struct list_head rate_list;
struct list_head sb_list;
Expand All @@ -56,6 +56,8 @@ struct devlink {
*/
u8 reload_failed:1,
reload_enabled:1;
refcount_t refcount;
struct completion comp;
char priv[0] __aligned(NETDEV_ALIGN);
};

Expand Down
Loading

0 comments on commit 2fa1678

Please sign in to comment.