Skip to content

Commit 2fa1678

Browse files
committed
Merge branch 'devlink-cleanup-for-delay-event'
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/[email protected] 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 <[email protected]>
2 parents 38e3bfa + a1fcb10 commit 2fa1678

File tree

4 files changed

+273
-138
lines changed

4 files changed

+273
-138
lines changed

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ int hclge_devlink_init(struct hclge_dev *hdev)
118118

119119
priv = devlink_priv(devlink);
120120
priv->hdev = hdev;
121+
hdev->devlink = devlink;
121122

122123
ret = devlink_register(devlink);
123124
if (ret) {
@@ -126,8 +127,6 @@ int hclge_devlink_init(struct hclge_dev *hdev)
126127
goto out_reg_fail;
127128
}
128129

129-
hdev->devlink = devlink;
130-
131130
devlink_reload_enable(devlink);
132131

133132
return 0;
@@ -141,14 +140,9 @@ void hclge_devlink_uninit(struct hclge_dev *hdev)
141140
{
142141
struct devlink *devlink = hdev->devlink;
143142

144-
if (!devlink)
145-
return;
146-
147143
devlink_reload_disable(devlink);
148144

149145
devlink_unregister(devlink);
150146

151147
devlink_free(devlink);
152-
153-
hdev->devlink = NULL;
154148
}

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_devlink.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ int hclgevf_devlink_init(struct hclgevf_dev *hdev)
120120

121121
priv = devlink_priv(devlink);
122122
priv->hdev = hdev;
123+
hdev->devlink = devlink;
123124

124125
ret = devlink_register(devlink);
125126
if (ret) {
@@ -128,8 +129,6 @@ int hclgevf_devlink_init(struct hclgevf_dev *hdev)
128129
goto out_reg_fail;
129130
}
130131

131-
hdev->devlink = devlink;
132-
133132
devlink_reload_enable(devlink);
134133

135134
return 0;
@@ -143,14 +142,9 @@ void hclgevf_devlink_uninit(struct hclgevf_dev *hdev)
143142
{
144143
struct devlink *devlink = hdev->devlink;
145144

146-
if (!devlink)
147-
return;
148-
149145
devlink_reload_disable(devlink);
150146

151147
devlink_unregister(devlink);
152148

153149
devlink_free(devlink);
154-
155-
hdev->devlink = NULL;
156150
}

include/net/devlink.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ struct devlink_dev_stats {
3232
struct devlink_ops;
3333

3434
struct devlink {
35-
struct list_head list;
35+
u32 index;
3636
struct list_head port_list;
3737
struct list_head rate_list;
3838
struct list_head sb_list;
@@ -56,6 +56,8 @@ struct devlink {
5656
*/
5757
u8 reload_failed:1,
5858
reload_enabled:1;
59+
refcount_t refcount;
60+
struct completion comp;
5961
char priv[0] __aligned(NETDEV_ALIGN);
6062
};
6163

0 commit comments

Comments
 (0)