]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
devlink: extend devlink_param *set pointer
authorMateusz Polchlopek <mateusz.polchlopek@intel.com>
Fri, 19 Apr 2024 08:08:49 +0000 (04:08 -0400)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 22 Apr 2024 20:05:19 +0000 (13:05 -0700)
Extend devlink_param *set function pointer to take extack as a param.
Sometimes it is needed to pass information to the end user from set
function. It is more proper to use for that netlink instead of passing
message to dmesg.

Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
22 files changed:
drivers/crypto/marvell/octeontx2/otx2_cpt_devlink.c
drivers/net/ethernet/amd/pds_core/core.h
drivers/net/ethernet/amd/pds_core/devlink.c
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
drivers/net/ethernet/intel/ice/devlink/devlink.c
drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_devlink.c
drivers/net/ethernet/mellanox/mlx4/main.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
drivers/net/ethernet/netronome/nfp/devlink_param.c
drivers/net/ethernet/qlogic/qed/qed_devlink.c
drivers/net/ethernet/ti/am65-cpsw-nuss.c
drivers/net/ethernet/ti/cpsw_new.c
drivers/net/wwan/iosm/iosm_ipc_devlink.c
include/net/devlink.h
include/net/dsa.h
net/devlink/param.c
net/dsa/devlink.c

index d2b8d26db968a69e204fc737447b893d7080b257..215a1a8ba7e9f568262fea176a1dcd8d3a4bf46e 100644 (file)
@@ -4,7 +4,8 @@
 #include "otx2_cpt_devlink.h"
 
 static int otx2_cpt_dl_egrp_create(struct devlink *dl, u32 id,
-                                  struct devlink_param_gset_ctx *ctx)
+                                  struct devlink_param_gset_ctx *ctx,
+                                  struct netlink_ext_ack *extack)
 {
        struct otx2_cpt_devlink *cpt_dl = devlink_priv(dl);
        struct otx2_cptpf_dev *cptpf = cpt_dl->cptpf;
@@ -13,7 +14,8 @@ static int otx2_cpt_dl_egrp_create(struct devlink *dl, u32 id,
 }
 
 static int otx2_cpt_dl_egrp_delete(struct devlink *dl, u32 id,
-                                  struct devlink_param_gset_ctx *ctx)
+                                  struct devlink_param_gset_ctx *ctx,
+                                  struct netlink_ext_ack *extack)
 {
        struct otx2_cpt_devlink *cpt_dl = devlink_priv(dl);
        struct otx2_cptpf_dev *cptpf = cpt_dl->cptpf;
@@ -45,7 +47,8 @@ static int otx2_cpt_dl_t106_mode_get(struct devlink *dl, u32 id,
 }
 
 static int otx2_cpt_dl_t106_mode_set(struct devlink *dl, u32 id,
-                                    struct devlink_param_gset_ctx *ctx)
+                                    struct devlink_param_gset_ctx *ctx,
+                                    struct netlink_ext_ack *extack)
 {
        struct otx2_cpt_devlink *cpt_dl = devlink_priv(dl);
        struct otx2_cptpf_dev *cptpf = cpt_dl->cptpf;
index a3e17a0c187a6a4a5eaab7207f7089b2172b8e0e..14522d6d5f86bba1e8cfac1ec61210b8b9d10112 100644 (file)
@@ -256,7 +256,8 @@ int pdsc_dl_flash_update(struct devlink *dl,
 int pdsc_dl_enable_get(struct devlink *dl, u32 id,
                       struct devlink_param_gset_ctx *ctx);
 int pdsc_dl_enable_set(struct devlink *dl, u32 id,
-                      struct devlink_param_gset_ctx *ctx);
+                      struct devlink_param_gset_ctx *ctx,
+                      struct netlink_ext_ack *extack);
 int pdsc_dl_enable_validate(struct devlink *dl, u32 id,
                            union devlink_param_value val,
                            struct netlink_ext_ack *extack);
index 54864f27c87a9e526524a023e444e318cc2bc0f7..2681889162a25e000d9c636de3fcc52093252238 100644 (file)
@@ -37,7 +37,8 @@ int pdsc_dl_enable_get(struct devlink *dl, u32 id,
 }
 
 int pdsc_dl_enable_set(struct devlink *dl, u32 id,
-                      struct devlink_param_gset_ctx *ctx)
+                      struct devlink_param_gset_ctx *ctx,
+                      struct netlink_ext_ack *extack)
 {
        struct pdsc *pdsc = devlink_priv(dl);
        struct pdsc_viftype *vt_entry;
index ae4529c043f0b26036f84df21d824d7674fa0a75..d9ea6fa23923bb17fc3855dbeab557d96fd06bb3 100644 (file)
@@ -1096,7 +1096,8 @@ static int bnxt_dl_nvm_param_get(struct devlink *dl, u32 id,
 }
 
 static int bnxt_dl_nvm_param_set(struct devlink *dl, u32 id,
-                                struct devlink_param_gset_ctx *ctx)
+                                struct devlink_param_gset_ctx *ctx,
+                                struct netlink_ext_ack *extack)
 {
        struct bnxt *bp = bnxt_get_bp_from_dl(dl);
        struct hwrm_nvm_set_variable_input *req;
@@ -1145,7 +1146,8 @@ static int bnxt_remote_dev_reset_get(struct devlink *dl, u32 id,
 }
 
 static int bnxt_remote_dev_reset_set(struct devlink *dl, u32 id,
-                                    struct devlink_param_gset_ctx *ctx)
+                                    struct devlink_param_gset_ctx *ctx,
+                                    struct netlink_ext_ack *extack)
 {
        struct bnxt *bp = bnxt_get_bp_from_dl(dl);
        int rc;
index be9244bb8bbcd6e11805d89eec1c3b4fcccd169c..acbace240977068ec676b325877380e2778b9a9d 100644 (file)
@@ -1144,9 +1144,9 @@ ice_devlink_enable_roce_get(struct devlink *devlink, u32 id,
        return 0;
 }
 
-static int
-ice_devlink_enable_roce_set(struct devlink *devlink, u32 id,
-                           struct devlink_param_gset_ctx *ctx)
+static int ice_devlink_enable_roce_set(struct devlink *devlink, u32 id,
+                                      struct devlink_param_gset_ctx *ctx,
+                                      struct netlink_ext_ack *extack)
 {
        struct ice_pf *pf = devlink_priv(devlink);
        bool roce_ena = ctx->val.vbool;
@@ -1195,9 +1195,9 @@ ice_devlink_enable_iw_get(struct devlink *devlink, u32 id,
        return 0;
 }
 
-static int
-ice_devlink_enable_iw_set(struct devlink *devlink, u32 id,
-                         struct devlink_param_gset_ctx *ctx)
+static int ice_devlink_enable_iw_set(struct devlink *devlink, u32 id,
+                                    struct devlink_param_gset_ctx *ctx,
+                                    struct netlink_ext_ack *extack)
 {
        struct ice_pf *pf = devlink_priv(devlink);
        bool iw_ena = ctx->val.vbool;
index 96c04f7d93f8b5fe5cb40f7de3f9aa64034a25aa..7498ab429963d49b3e62b01c93d145e5e12f33b3 100644 (file)
@@ -1202,7 +1202,8 @@ static int rvu_af_dl_dwrr_mtu_validate(struct devlink *devlink, u32 id,
 }
 
 static int rvu_af_dl_dwrr_mtu_set(struct devlink *devlink, u32 id,
-                                 struct devlink_param_gset_ctx *ctx)
+                                 struct devlink_param_gset_ctx *ctx,
+                                 struct netlink_ext_ack *extack)
 {
        struct rvu_devlink *rvu_dl = devlink_priv(devlink);
        struct rvu *rvu = rvu_dl->rvu;
@@ -1256,7 +1257,8 @@ static int rvu_af_npc_exact_feature_get(struct devlink *devlink, u32 id,
 }
 
 static int rvu_af_npc_exact_feature_disable(struct devlink *devlink, u32 id,
-                                           struct devlink_param_gset_ctx *ctx)
+                                           struct devlink_param_gset_ctx *ctx,
+                                           struct netlink_ext_ack *extack)
 {
        struct rvu_devlink *rvu_dl = devlink_priv(devlink);
        struct rvu *rvu = rvu_dl->rvu;
@@ -1310,7 +1312,8 @@ static int rvu_af_dl_npc_mcam_high_zone_percent_get(struct devlink *devlink, u32
 }
 
 static int rvu_af_dl_npc_mcam_high_zone_percent_set(struct devlink *devlink, u32 id,
-                                                   struct devlink_param_gset_ctx *ctx)
+                                                   struct devlink_param_gset_ctx *ctx,
+                                                   struct netlink_ext_ack *extack)
 {
        struct rvu_devlink *rvu_dl = devlink_priv(devlink);
        struct rvu *rvu = rvu_dl->rvu;
@@ -1367,7 +1370,8 @@ static int rvu_af_dl_nix_maxlf_get(struct devlink *devlink, u32 id,
 }
 
 static int rvu_af_dl_nix_maxlf_set(struct devlink *devlink, u32 id,
-                                  struct devlink_param_gset_ctx *ctx)
+                                  struct devlink_param_gset_ctx *ctx,
+                                  struct netlink_ext_ack *extack)
 {
        struct rvu_devlink *rvu_dl = devlink_priv(devlink);
        struct rvu *rvu = rvu_dl->rvu;
index 4e1130496573ef611e1b51fd801d3e8fb060ba07..99ddf31269d96313ad79ed11f92a3ca9a82c163a 100644 (file)
@@ -32,7 +32,8 @@ static int otx2_dl_mcam_count_validate(struct devlink *devlink, u32 id,
 }
 
 static int otx2_dl_mcam_count_set(struct devlink *devlink, u32 id,
-                                 struct devlink_param_gset_ctx *ctx)
+                                 struct devlink_param_gset_ctx *ctx,
+                                 struct netlink_ext_ack *extack)
 {
        struct otx2_devlink *otx2_dl = devlink_priv(devlink);
        struct otx2_nic *pfvf = otx2_dl->pfvf;
index 7b02ff61126de4a60abd3dc6277ea9312db48fb0..98688e4dbec5e35de698797d21fcdc0a64124e58 100644 (file)
@@ -185,7 +185,8 @@ static int mlx4_devlink_ierr_reset_get(struct devlink *devlink, u32 id,
 }
 
 static int mlx4_devlink_ierr_reset_set(struct devlink *devlink, u32 id,
-                                      struct devlink_param_gset_ctx *ctx)
+                                      struct devlink_param_gset_ctx *ctx,
+                                      struct netlink_ext_ack *extack)
 {
        mlx4_internal_err_reset = ctx->val.vbool;
        return 0;
@@ -202,7 +203,8 @@ static int mlx4_devlink_crdump_snapshot_get(struct devlink *devlink, u32 id,
 }
 
 static int mlx4_devlink_crdump_snapshot_set(struct devlink *devlink, u32 id,
-                                           struct devlink_param_gset_ctx *ctx)
+                                           struct devlink_param_gset_ctx *ctx,
+                                           struct netlink_ext_ack *extack)
 {
        struct mlx4_priv *priv = devlink_priv(devlink);
        struct mlx4_dev *dev = &priv->dev;
index 1789800faaeb62841387ed69b0a82aab3283bf46..17f78091ad30efea30f33d8c6f785e3138531ce5 100644 (file)
@@ -1805,7 +1805,8 @@ err:
 }
 
 static int mlx5_devlink_esw_multiport_set(struct devlink *devlink, u32 id,
-                                         struct devlink_param_gset_ctx *ctx)
+                                         struct devlink_param_gset_ctx *ctx,
+                                         struct netlink_ext_ack *extack)
 {
        struct mlx5_core_dev *dev = devlink_priv(devlink);
 
index dfcc7e85e0a3f773259a372de124ac06fcc97510..f378b8176e47c5cdac44d9f371fff372d3702792 100644 (file)
@@ -2413,7 +2413,8 @@ err:
 }
 
 static int esw_port_metadata_set(struct devlink *devlink, u32 id,
-                                struct devlink_param_gset_ctx *ctx)
+                                struct devlink_param_gset_ctx *ctx,
+                                struct netlink_ext_ack *extack)
 {
        struct mlx5_core_dev *dev = devlink_priv(devlink);
        struct mlx5_eswitch *esw = dev->priv.eswitch;
index cf085a478e3e4c69ffdd4ee9bb24f0036e27c66d..32cdacc34a0d661620d3b5287d85582ae28f903d 100644 (file)
@@ -3332,7 +3332,8 @@ static int mlx5_fs_mode_validate(struct devlink *devlink, u32 id,
 }
 
 static int mlx5_fs_mode_set(struct devlink *devlink, u32 id,
-                           struct devlink_param_gset_ctx *ctx)
+                           struct devlink_param_gset_ctx *ctx,
+                           struct netlink_ext_ack *extack)
 {
        struct mlx5_core_dev *dev = devlink_priv(devlink);
        enum mlx5_flow_steering_mode mode;
index 2911aa34a5be3f9738b07635a421ba996e4f749a..979c49ae6b5cc987eeac168adfc03f2278a0d91e 100644 (file)
@@ -52,7 +52,8 @@ static void mlx5_set_fw_rst_ack(struct mlx5_core_dev *dev)
 }
 
 static int mlx5_fw_reset_enable_remote_dev_reset_set(struct devlink *devlink, u32 id,
-                                                    struct devlink_param_gset_ctx *ctx)
+                                                    struct devlink_param_gset_ctx *ctx,
+                                                    struct netlink_ext_ack *extack)
 {
        struct mlx5_core_dev *dev = devlink_priv(devlink);
        struct mlx5_fw_reset *fw_reset;
index f20052776b3f2e9a3ac7181921a12c3858abea4b..baedf0d45e855a9540649a1cc21dcafbbd2936f3 100644 (file)
@@ -1465,7 +1465,8 @@ mlxsw_sp_acl_tcam_region_rehash_intrvl_get(struct devlink *devlink, u32 id,
 
 static int
 mlxsw_sp_acl_tcam_region_rehash_intrvl_set(struct devlink *devlink, u32 id,
-                                          struct devlink_param_gset_ctx *ctx)
+                                          struct devlink_param_gset_ctx *ctx,
+                                          struct netlink_ext_ack *extack)
 {
        struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
        struct mlxsw_sp_acl_tcam_vregion *vregion;
index a655f9e69a7b1eb9d5aa14dfb87790ce8ecb330c..0e1a3800f371cff722f322e8640dca66b573ba31 100644 (file)
@@ -132,7 +132,8 @@ exit_close_nsp:
 
 static int
 nfp_devlink_param_u8_set(struct devlink *devlink, u32 id,
-                        struct devlink_param_gset_ctx *ctx)
+                        struct devlink_param_gset_ctx *ctx,
+                        struct netlink_ext_ack *extack)
 {
        const struct nfp_devlink_param_u8_arg *arg;
        struct nfp_pf *pf = devlink_priv(devlink);
index dad8e617c39347dff9c8ae251c658577e41a2ef2..1adc7fbb3f2fcea80f92317e1ec596236190d880 100644 (file)
@@ -132,7 +132,8 @@ static int qed_dl_param_get(struct devlink *dl, u32 id,
 }
 
 static int qed_dl_param_set(struct devlink *dl, u32 id,
-                           struct devlink_param_gset_ctx *ctx)
+                           struct devlink_param_gset_ctx *ctx,
+                           struct netlink_ext_ack *extack)
 {
        struct qed_devlink *qed_dl = devlink_priv(dl);
        struct qed_dev *cdev;
index a7dbbbe3ff5ddd4b031db2b7e9972254d871e4d1..bf3df86554d18f7bb6dd4c51476c069de48d4d42 100644 (file)
@@ -3061,7 +3061,8 @@ static void am65_cpsw_init_port_switch_ale(struct am65_cpsw_port *port)
 }
 
 static int am65_cpsw_dl_switch_mode_set(struct devlink *dl, u32 id,
-                                       struct devlink_param_gset_ctx *ctx)
+                                       struct devlink_param_gset_ctx *ctx,
+                                       struct netlink_ext_ack *extack)
 {
        struct am65_cpsw_devlink *dl_priv = devlink_priv(dl);
        struct am65_cpsw_common *cpsw = dl_priv->common;
index 087dcb67505a2da5995963d5d67d36dadb580a47..2baa198ebfa090e533dee7d5f72c7ebff8894b7e 100644 (file)
@@ -1625,7 +1625,8 @@ static int cpsw_dl_switch_mode_get(struct devlink *dl, u32 id,
 }
 
 static int cpsw_dl_switch_mode_set(struct devlink *dl, u32 id,
-                                  struct devlink_param_gset_ctx *ctx)
+                                  struct devlink_param_gset_ctx *ctx,
+                                  struct netlink_ext_ack *extack)
 {
        struct cpsw_devlink *dl_priv = devlink_priv(dl);
        struct cpsw_common *cpsw = dl_priv->cpsw;
@@ -1762,7 +1763,8 @@ static int cpsw_dl_ale_ctrl_get(struct devlink *dl, u32 id,
 }
 
 static int cpsw_dl_ale_ctrl_set(struct devlink *dl, u32 id,
-                               struct devlink_param_gset_ctx *ctx)
+                               struct devlink_param_gset_ctx *ctx,
+                               struct netlink_ext_ack *extack)
 {
        struct cpsw_devlink *dl_priv = devlink_priv(dl);
        struct cpsw_common *cpsw = dl_priv->cpsw;
index 2fe724d623c0614b824d279a391368ba11958782..bef6819986e93914edcf659e7e2591e3058ba8a2 100644 (file)
@@ -33,7 +33,8 @@ static int ipc_devlink_get_param(struct devlink *dl, u32 id,
 
 /* Set the param values for the specific param ID's */
 static int ipc_devlink_set_param(struct devlink *dl, u32 id,
-                                struct devlink_param_gset_ctx *ctx)
+                                struct devlink_param_gset_ctx *ctx,
+                                struct netlink_ext_ack *extack)
 {
        struct iosm_devlink *ipc_devlink = devlink_priv(dl);
 
index d31769a116cef2f7a775d97641590a68dd00ff9e..35eb0f884386175259231855b2c3287b3ae36d00 100644 (file)
@@ -483,7 +483,8 @@ struct devlink_param {
        int (*get)(struct devlink *devlink, u32 id,
                   struct devlink_param_gset_ctx *ctx);
        int (*set)(struct devlink *devlink, u32 id,
-                  struct devlink_param_gset_ctx *ctx);
+                  struct devlink_param_gset_ctx *ctx,
+                  struct netlink_ext_ack *extack);
        int (*validate)(struct devlink *devlink, u32 id,
                        union devlink_param_value val,
                        struct netlink_ext_ack *extack);
index 7edfd8de8882feb68c0b6b27941c9224ce5596f0..a6ef7e4c503ff39a184292ca5e40ee84704ab7c4 100644 (file)
@@ -1258,7 +1258,8 @@ struct dsa_switch_ops {
 int dsa_devlink_param_get(struct devlink *dl, u32 id,
                          struct devlink_param_gset_ctx *ctx);
 int dsa_devlink_param_set(struct devlink *dl, u32 id,
-                         struct devlink_param_gset_ctx *ctx);
+                         struct devlink_param_gset_ctx *ctx,
+                         struct netlink_ext_ack *extack);
 int dsa_devlink_params_register(struct dsa_switch *ds,
                                const struct devlink_param *params,
                                size_t params_count);
index 22bc3b50051897092526125e0c25f57cff340608..dcf0d1ccebbabe0bb7cbabd4a767508aef4622f8 100644 (file)
@@ -158,11 +158,12 @@ static int devlink_param_get(struct devlink *devlink,
 
 static int devlink_param_set(struct devlink *devlink,
                             const struct devlink_param *param,
-                            struct devlink_param_gset_ctx *ctx)
+                            struct devlink_param_gset_ctx *ctx,
+                            struct netlink_ext_ack *extack)
 {
        if (!param->set)
                return -EOPNOTSUPP;
-       return param->set(devlink, param->id, ctx);
+       return param->set(devlink, param->id, ctx, extack);
 }
 
 static int
@@ -571,7 +572,7 @@ static int __devlink_nl_cmd_param_set_doit(struct devlink *devlink,
                        return -EOPNOTSUPP;
                ctx.val = value;
                ctx.cmode = cmode;
-               err = devlink_param_set(devlink, param, &ctx);
+               err = devlink_param_set(devlink, param, &ctx, info->extack);
                if (err)
                        return err;
        }
index 431bf52290a1cfd27d01e050ac017decab6457c7..0aac887d009804b0d0b1cddc5032a5a68e5ad53e 100644 (file)
@@ -194,7 +194,8 @@ int dsa_devlink_param_get(struct devlink *dl, u32 id,
 EXPORT_SYMBOL_GPL(dsa_devlink_param_get);
 
 int dsa_devlink_param_set(struct devlink *dl, u32 id,
-                         struct devlink_param_gset_ctx *ctx)
+                         struct devlink_param_gset_ctx *ctx,
+                         struct netlink_ext_ack *extack)
 {
        struct dsa_switch *ds = dsa_devlink_to_ds(dl);