OSDN Git Service

devlink: collect flash notify params into a struct
authorShannon Nelson <snelson@pensando.io>
Fri, 18 Sep 2020 01:13:24 +0000 (18:13 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Sep 2020 20:54:23 +0000 (13:54 -0700)
The dev flash status notify function parameter lists are getting
rather long, so add a struct to be filled and passed rather than
continuously changing the function signatures.

Signed-off-by: Shannon Nelson <snelson@pensando.io>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/devlink.h
net/core/devlink.c

index be132c1..73065f0 100644 (file)
@@ -392,6 +392,25 @@ struct devlink_param_gset_ctx {
 };
 
 /**
+ * struct devlink_flash_notify - devlink dev flash notify data
+ * @status_msg: current status string
+ * @component: firmware component being updated
+ * @done: amount of work completed of total amount
+ * @total: amount of work expected to be done
+ * @timeout: expected max timeout in seconds
+ *
+ * These are values to be given to userland to be displayed in order
+ * to show current activity in a firmware update process.
+ */
+struct devlink_flash_notify {
+       const char *status_msg;
+       const char *component;
+       unsigned long done;
+       unsigned long total;
+       unsigned long timeout;
+};
+
+/**
  * struct devlink_param - devlink configuration parameter data
  * @name: name of the parameter
  * @generic: indicates if the parameter is generic or driver specific
index a32e158..d584476 100644 (file)
@@ -3022,11 +3022,7 @@ static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info)
 static int devlink_nl_flash_update_fill(struct sk_buff *msg,
                                        struct devlink *devlink,
                                        enum devlink_command cmd,
-                                       const char *status_msg,
-                                       const char *component,
-                                       unsigned long done,
-                                       unsigned long total,
-                                       unsigned long timeout)
+                                       struct devlink_flash_notify *params)
 {
        void *hdr;
 
@@ -3040,22 +3036,22 @@ static int devlink_nl_flash_update_fill(struct sk_buff *msg,
        if (cmd != DEVLINK_CMD_FLASH_UPDATE_STATUS)
                goto out;
 
-       if (status_msg &&
+       if (params->status_msg &&
            nla_put_string(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG,
-                          status_msg))
+                          params->status_msg))
                goto nla_put_failure;
-       if (component &&
+       if (params->component &&
            nla_put_string(msg, DEVLINK_ATTR_FLASH_UPDATE_COMPONENT,
-                          component))
+                          params->component))
                goto nla_put_failure;
        if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE,
-                             done, DEVLINK_ATTR_PAD))
+                             params->done, DEVLINK_ATTR_PAD))
                goto nla_put_failure;
        if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL,
-                             total, DEVLINK_ATTR_PAD))
+                             params->total, DEVLINK_ATTR_PAD))
                goto nla_put_failure;
        if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT,
-                             timeout, DEVLINK_ATTR_PAD))
+                             params->timeout, DEVLINK_ATTR_PAD))
                goto nla_put_failure;
 
 out:
@@ -3069,11 +3065,7 @@ nla_put_failure:
 
 static void __devlink_flash_update_notify(struct devlink *devlink,
                                          enum devlink_command cmd,
-                                         const char *status_msg,
-                                         const char *component,
-                                         unsigned long done,
-                                         unsigned long total,
-                                         unsigned long timeout)
+                                         struct devlink_flash_notify *params)
 {
        struct sk_buff *msg;
        int err;
@@ -3086,8 +3078,7 @@ static void __devlink_flash_update_notify(struct devlink *devlink,
        if (!msg)
                return;
 
-       err = devlink_nl_flash_update_fill(msg, devlink, cmd, status_msg,
-                                          component, done, total, timeout);
+       err = devlink_nl_flash_update_fill(msg, devlink, cmd, params);
        if (err)
                goto out_free_msg;
 
@@ -3101,17 +3092,21 @@ out_free_msg:
 
 void devlink_flash_update_begin_notify(struct devlink *devlink)
 {
+       struct devlink_flash_notify params = { 0 };
+
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE,
-                                     NULL, NULL, 0, 0, 0);
+                                     &params);
 }
 EXPORT_SYMBOL_GPL(devlink_flash_update_begin_notify);
 
 void devlink_flash_update_end_notify(struct devlink *devlink)
 {
+       struct devlink_flash_notify params = { 0 };
+
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE_END,
-                                     NULL, NULL, 0, 0, 0);
+                                     &params);
 }
 EXPORT_SYMBOL_GPL(devlink_flash_update_end_notify);
 
@@ -3121,9 +3116,16 @@ void devlink_flash_update_status_notify(struct devlink *devlink,
                                        unsigned long done,
                                        unsigned long total)
 {
+       struct devlink_flash_notify params = {
+               .status_msg = status_msg,
+               .component = component,
+               .done = done,
+               .total = total,
+       };
+
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE_STATUS,
-                                     status_msg, component, done, total, 0);
+                                     &params);
 }
 EXPORT_SYMBOL_GPL(devlink_flash_update_status_notify);
 
@@ -3132,9 +3134,15 @@ void devlink_flash_update_timeout_notify(struct devlink *devlink,
                                         const char *component,
                                         unsigned long timeout)
 {
+       struct devlink_flash_notify params = {
+               .status_msg = status_msg,
+               .component = component,
+               .timeout = timeout,
+       };
+
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE_STATUS,
-                                     status_msg, component, 0, 0, timeout);
+                                     &params);
 }
 EXPORT_SYMBOL_GPL(devlink_flash_update_timeout_notify);