aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2019-09-12 04:49:46 -0400
committerDavid S. Miller <davem@davemloft.net>2019-09-13 16:11:14 -0400
commit2670ac2625f98557fd7e083f8aa22c297e49039e (patch)
tree28ebb70925a228cefd4eab0435e7e66f96e0719f /net
parent97691069dc5a4135e413d3d92200d70b46df9fe5 (diff)
net: devlink: move reload fail indication to devlink core and expose to user
Currently the fact that devlink reload failed is stored in drivers. Move this flag into devlink core. Also, expose it to the user. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/core/devlink.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/net/core/devlink.c b/net/core/devlink.c
index 9e522639693d..e48680efe54a 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -471,6 +471,8 @@ static int devlink_nl_fill(struct sk_buff *msg, struct devlink *devlink,
471 471
472 if (devlink_nl_put_handle(msg, devlink)) 472 if (devlink_nl_put_handle(msg, devlink))
473 goto nla_put_failure; 473 goto nla_put_failure;
474 if (nla_put_u8(msg, DEVLINK_ATTR_RELOAD_FAILED, devlink->reload_failed))
475 goto nla_put_failure;
474 476
475 genlmsg_end(msg, hdr); 477 genlmsg_end(msg, hdr);
476 return 0; 478 return 0;
@@ -2677,6 +2679,21 @@ static bool devlink_reload_supported(struct devlink *devlink)
2677 return devlink->ops->reload_down && devlink->ops->reload_up; 2679 return devlink->ops->reload_down && devlink->ops->reload_up;
2678} 2680}
2679 2681
2682static void devlink_reload_failed_set(struct devlink *devlink,
2683 bool reload_failed)
2684{
2685 if (devlink->reload_failed == reload_failed)
2686 return;
2687 devlink->reload_failed = reload_failed;
2688 devlink_notify(devlink, DEVLINK_CMD_NEW);
2689}
2690
2691bool devlink_is_reload_failed(const struct devlink *devlink)
2692{
2693 return devlink->reload_failed;
2694}
2695EXPORT_SYMBOL_GPL(devlink_is_reload_failed);
2696
2680static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info) 2697static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info)
2681{ 2698{
2682 struct devlink *devlink = info->user_ptr[0]; 2699 struct devlink *devlink = info->user_ptr[0];
@@ -2693,7 +2710,9 @@ static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info)
2693 err = devlink->ops->reload_down(devlink, info->extack); 2710 err = devlink->ops->reload_down(devlink, info->extack);
2694 if (err) 2711 if (err)
2695 return err; 2712 return err;
2696 return devlink->ops->reload_up(devlink, info->extack); 2713 err = devlink->ops->reload_up(devlink, info->extack);
2714 devlink_reload_failed_set(devlink, !!err);
2715 return err;
2697} 2716}
2698 2717
2699static int devlink_nl_flash_update_fill(struct sk_buff *msg, 2718static int devlink_nl_flash_update_fill(struct sk_buff *msg,