]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
devlink: Add 'fw_load_policy' generic parameter
authorShalom Toledo <shalomt@mellanox.com>
Mon, 3 Dec 2018 07:58:59 +0000 (07:58 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 3 Dec 2018 21:55:43 +0000 (13:55 -0800)
Many drivers load the device's firmware image during the initialization
flow either from the flash or from the disk. Currently this option is not
controlled by the user and the driver decides from where to load the
firmware image.

'fw_load_policy' gives the ability to control this option which allows the
user to choose between different loading policies supported by the driver.

This parameter can be useful while testing and/or debugging the device. For
example, testing a firmware bug fix.

Signed-off-by: Shalom Toledo <shalomt@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/devlink-params.txt
include/net/devlink.h
include/uapi/linux/devlink.h
net/core/devlink.c

index ae444ffe73acf75e6ea2c7977cefe4edd10c76af..2d26434ddcf8a5290c4ef9735c8f8e9e64491114 100644 (file)
@@ -40,3 +40,12 @@ msix_vec_per_pf_min  [DEVICE, GENERIC]
                        for the device initialization. Value is same across all
                        physical functions (PFs) in the device.
                        Type: u32
+
+fw_load_policy         [DEVICE, GENERIC]
+                       Controls the device's firmware loading policy.
+                       Valid values:
+                       * DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER (0)
+                         Load firmware version preferred by the driver.
+                       * DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH (1)
+                         Load firmware currently stored in flash.
+                       Type: u8
index 45db0c79462d28e7e8bf12e5ea5576a4b2e9cf3a..67f4293bc9703f6f9b406882651aa7533783b581 100644 (file)
@@ -365,6 +365,7 @@ enum devlink_param_generic_id {
        DEVLINK_PARAM_GENERIC_ID_IGNORE_ARI,
        DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX,
        DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN,
+       DEVLINK_PARAM_GENERIC_ID_FW_LOAD_POLICY,
 
        /* add new param generic ids above here*/
        __DEVLINK_PARAM_GENERIC_ID_MAX,
@@ -392,6 +393,9 @@ enum devlink_param_generic_id {
 #define DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MIN_NAME "msix_vec_per_pf_min"
 #define DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MIN_TYPE DEVLINK_PARAM_TYPE_U32
 
+#define DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_NAME "fw_load_policy"
+#define DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_TYPE DEVLINK_PARAM_TYPE_U8
+
 #define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate)     \
 {                                                                      \
        .id = DEVLINK_PARAM_GENERIC_ID_##_id,                           \
index 79407bbd296d8d78f113b34c34d515aaa5c188a4..6e52d3660654dd031ad1c9d7ab91fd9a64f91bee 100644 (file)
@@ -163,6 +163,11 @@ enum devlink_param_cmode {
        DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1
 };
 
+enum devlink_param_fw_load_policy_value {
+       DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER,
+       DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH,
+};
+
 enum devlink_attr {
        /* don't change the order or add anything between, this is ABI! */
        DEVLINK_ATTR_UNSPEC,
index 3a4b29a13d317c25d44e484ecadde1cabf256af8..abb0da9d7b4b7c8a21a91341f56852db41f06c67 100644 (file)
@@ -2692,6 +2692,11 @@ static const struct devlink_param devlink_param_generic[] = {
                .name = DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MIN_NAME,
                .type = DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MIN_TYPE,
        },
+       {
+               .id = DEVLINK_PARAM_GENERIC_ID_FW_LOAD_POLICY,
+               .name = DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_NAME,
+               .type = DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_TYPE,
+       },
 };
 
 static int devlink_param_generic_verify(const struct devlink_param *param)