Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

devlink: Move graceful period parameter to reporter ops

Move the default graceful period from a parameter to
devlink_health_reporter_create() to a field in the
devlink_health_reporter_ops structure.

This change improves consistency, as the graceful period is inherently
tied to the reporter's behavior and recovery policy. It simplifies the
signature of devlink_health_reporter_create() and its internal helper
functions. It also centralizes the reporter configuration at the ops
structure, preparing the groundwork for a downstream patch that will
introduce a devlink health reporter burst period attribute whose
default value will similarly be provided by the driver via the ops
structure.

Signed-off-by: Shahar Shitrit <shshitrit@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Link: https://patch.msgid.link/20250824084354.533182-2-mbloch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Shahar Shitrit and committed by
Jakub Kicinski
d2b00737 a0f849c1

+97 -71
+1 -1
drivers/net/ethernet/amd/pds_core/main.c
··· 280 280 goto err_out_del_dev; 281 281 } 282 282 283 - hr = devl_health_reporter_create(dl, &pdsc_fw_reporter_ops, 0, pdsc); 283 + hr = devl_health_reporter_create(dl, &pdsc_fw_reporter_ops, pdsc); 284 284 if (IS_ERR(hr)) { 285 285 devl_unlock(dl); 286 286 dev_warn(pdsc->dev, "Failed to create fw reporter: %pe\n", hr);
+1 -1
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
··· 220 220 { 221 221 struct devlink_health_reporter *reporter; 222 222 223 - reporter = devlink_health_reporter_create(bp->dl, ops, 0, bp); 223 + reporter = devlink_health_reporter_create(bp->dl, ops, bp); 224 224 if (IS_ERR(reporter)) { 225 225 netdev_warn(bp->dev, "Failed to create %s health reporter, rc = %ld\n", 226 226 ops->name, PTR_ERR(reporter));
+6 -4
drivers/net/ethernet/huawei/hinic/hinic_devlink.c
··· 443 443 struct devlink *devlink = priv_to_devlink(priv); 444 444 445 445 priv->hw_fault_reporter = 446 - devlink_health_reporter_create(devlink, &hinic_hw_fault_reporter_ops, 447 - 0, priv); 446 + devlink_health_reporter_create(devlink, 447 + &hinic_hw_fault_reporter_ops, 448 + priv); 448 449 if (IS_ERR(priv->hw_fault_reporter)) { 449 450 dev_warn(&priv->hwdev->hwif->pdev->dev, "Failed to create hw fault reporter, err: %ld\n", 450 451 PTR_ERR(priv->hw_fault_reporter)); ··· 453 452 } 454 453 455 454 priv->fw_fault_reporter = 456 - devlink_health_reporter_create(devlink, &hinic_fw_fault_reporter_ops, 457 - 0, priv); 455 + devlink_health_reporter_create(devlink, 456 + &hinic_fw_fault_reporter_ops, 457 + priv); 458 458 if (IS_ERR(priv->fw_fault_reporter)) { 459 459 dev_warn(&priv->hwdev->hwif->pdev->dev, "Failed to create fw fault reporter, err: %ld\n", 460 460 PTR_ERR(priv->fw_fault_reporter));
+1 -2
drivers/net/ethernet/intel/ice/devlink/health.c
··· 450 450 { 451 451 struct devlink *devlink = priv_to_devlink(pf); 452 452 struct devlink_health_reporter *rep; 453 - const u64 graceful_period = 0; 454 453 455 - rep = devl_health_reporter_create(devlink, ops, graceful_period, pf); 454 + rep = devl_health_reporter_create(devlink, ops, pf); 456 455 if (IS_ERR(rep)) { 457 456 struct device *dev = ice_pf_to_dev(pf); 458 457
+24 -8
drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c
··· 505 505 506 506 rvu_reporters->nix_event_ctx = nix_event_context; 507 507 rvu_reporters->rvu_hw_nix_intr_reporter = 508 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_intr_reporter_ops, 0, rvu); 508 + devlink_health_reporter_create(rvu_dl->dl, 509 + &rvu_hw_nix_intr_reporter_ops, 510 + rvu); 509 511 if (IS_ERR(rvu_reporters->rvu_hw_nix_intr_reporter)) { 510 512 dev_warn(rvu->dev, "Failed to create hw_nix_intr reporter, err=%ld\n", 511 513 PTR_ERR(rvu_reporters->rvu_hw_nix_intr_reporter)); ··· 515 513 } 516 514 517 515 rvu_reporters->rvu_hw_nix_gen_reporter = 518 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_gen_reporter_ops, 0, rvu); 516 + devlink_health_reporter_create(rvu_dl->dl, 517 + &rvu_hw_nix_gen_reporter_ops, 518 + rvu); 519 519 if (IS_ERR(rvu_reporters->rvu_hw_nix_gen_reporter)) { 520 520 dev_warn(rvu->dev, "Failed to create hw_nix_gen reporter, err=%ld\n", 521 521 PTR_ERR(rvu_reporters->rvu_hw_nix_gen_reporter)); ··· 525 521 } 526 522 527 523 rvu_reporters->rvu_hw_nix_err_reporter = 528 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_err_reporter_ops, 0, rvu); 524 + devlink_health_reporter_create(rvu_dl->dl, 525 + &rvu_hw_nix_err_reporter_ops, 526 + rvu); 529 527 if (IS_ERR(rvu_reporters->rvu_hw_nix_err_reporter)) { 530 528 dev_warn(rvu->dev, "Failed to create hw_nix_err reporter, err=%ld\n", 531 529 PTR_ERR(rvu_reporters->rvu_hw_nix_err_reporter)); ··· 535 529 } 536 530 537 531 rvu_reporters->rvu_hw_nix_ras_reporter = 538 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_ras_reporter_ops, 0, rvu); 532 + devlink_health_reporter_create(rvu_dl->dl, 533 + &rvu_hw_nix_ras_reporter_ops, 534 + rvu); 539 535 if (IS_ERR(rvu_reporters->rvu_hw_nix_ras_reporter)) { 540 536 dev_warn(rvu->dev, "Failed to create hw_nix_ras reporter, err=%ld\n", 541 537 PTR_ERR(rvu_reporters->rvu_hw_nix_ras_reporter)); ··· 1059 1051 1060 1052 rvu_reporters->npa_event_ctx = npa_event_context; 1061 1053 rvu_reporters->rvu_hw_npa_intr_reporter = 1062 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_intr_reporter_ops, 0, rvu); 1054 + devlink_health_reporter_create(rvu_dl->dl, 1055 + &rvu_hw_npa_intr_reporter_ops, 1056 + rvu); 1063 1057 if (IS_ERR(rvu_reporters->rvu_hw_npa_intr_reporter)) { 1064 1058 dev_warn(rvu->dev, "Failed to create hw_npa_intr reporter, err=%ld\n", 1065 1059 PTR_ERR(rvu_reporters->rvu_hw_npa_intr_reporter)); ··· 1069 1059 } 1070 1060 1071 1061 rvu_reporters->rvu_hw_npa_gen_reporter = 1072 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_gen_reporter_ops, 0, rvu); 1062 + devlink_health_reporter_create(rvu_dl->dl, 1063 + &rvu_hw_npa_gen_reporter_ops, 1064 + rvu); 1073 1065 if (IS_ERR(rvu_reporters->rvu_hw_npa_gen_reporter)) { 1074 1066 dev_warn(rvu->dev, "Failed to create hw_npa_gen reporter, err=%ld\n", 1075 1067 PTR_ERR(rvu_reporters->rvu_hw_npa_gen_reporter)); ··· 1079 1067 } 1080 1068 1081 1069 rvu_reporters->rvu_hw_npa_err_reporter = 1082 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_err_reporter_ops, 0, rvu); 1070 + devlink_health_reporter_create(rvu_dl->dl, 1071 + &rvu_hw_npa_err_reporter_ops, 1072 + rvu); 1083 1073 if (IS_ERR(rvu_reporters->rvu_hw_npa_err_reporter)) { 1084 1074 dev_warn(rvu->dev, "Failed to create hw_npa_err reporter, err=%ld\n", 1085 1075 PTR_ERR(rvu_reporters->rvu_hw_npa_err_reporter)); ··· 1089 1075 } 1090 1076 1091 1077 rvu_reporters->rvu_hw_npa_ras_reporter = 1092 - devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_ras_reporter_ops, 0, rvu); 1078 + devlink_health_reporter_create(rvu_dl->dl, 1079 + &rvu_hw_npa_ras_reporter_ops, 1080 + rvu); 1093 1081 if (IS_ERR(rvu_reporters->rvu_hw_npa_ras_reporter)) { 1094 1082 dev_warn(rvu->dev, "Failed to create hw_npa_ras reporter, err=%ld\n", 1095 1083 PTR_ERR(rvu_reporters->rvu_hw_npa_ras_reporter));
+1 -1
drivers/net/ethernet/mellanox/mlx5/core/diag/reporter_vnic.c
··· 135 135 health->vnic_reporter = 136 136 devlink_health_reporter_create(devlink, 137 137 &mlx5_reporter_vnic_ops, 138 - 0, dev); 138 + dev); 139 139 if (IS_ERR(health->vnic_reporter)) 140 140 mlx5_core_warn(dev, 141 141 "Failed to create vnic reporter, err = %ld\n",
+6 -4
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c
··· 651 651 mutex_unlock(&c->icosq_recovery_lock); 652 652 } 653 653 654 + #define MLX5E_REPORTER_RX_GRACEFUL_PERIOD 500 655 + 654 656 static const struct devlink_health_reporter_ops mlx5_rx_reporter_ops = { 655 657 .name = "rx", 656 658 .recover = mlx5e_rx_reporter_recover, 657 659 .diagnose = mlx5e_rx_reporter_diagnose, 658 660 .dump = mlx5e_rx_reporter_dump, 661 + .default_graceful_period = MLX5E_REPORTER_RX_GRACEFUL_PERIOD, 659 662 }; 660 - 661 - #define MLX5E_REPORTER_RX_GRACEFUL_PERIOD 500 662 663 663 664 void mlx5e_reporter_rx_create(struct mlx5e_priv *priv) 664 665 { 666 + struct devlink_port *port = priv->netdev->devlink_port; 665 667 struct devlink_health_reporter *reporter; 666 668 667 - reporter = devlink_port_health_reporter_create(priv->netdev->devlink_port, 669 + reporter = devlink_port_health_reporter_create(port, 668 670 &mlx5_rx_reporter_ops, 669 - MLX5E_REPORTER_RX_GRACEFUL_PERIOD, priv); 671 + priv); 670 672 if (IS_ERR(reporter)) { 671 673 netdev_warn(priv->netdev, "Failed to create rx reporter, err = %ld\n", 672 674 PTR_ERR(reporter));
+6 -4
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
··· 539 539 mlx5e_health_report(priv, priv->tx_reporter, err_str, &err_ctx); 540 540 } 541 541 542 + #define MLX5_REPORTER_TX_GRACEFUL_PERIOD 500 543 + 542 544 static const struct devlink_health_reporter_ops mlx5_tx_reporter_ops = { 543 545 .name = "tx", 544 546 .recover = mlx5e_tx_reporter_recover, 545 547 .diagnose = mlx5e_tx_reporter_diagnose, 546 548 .dump = mlx5e_tx_reporter_dump, 549 + .default_graceful_period = MLX5_REPORTER_TX_GRACEFUL_PERIOD, 547 550 }; 548 - 549 - #define MLX5_REPORTER_TX_GRACEFUL_PERIOD 500 550 551 551 552 void mlx5e_reporter_tx_create(struct mlx5e_priv *priv) 552 553 { 554 + struct devlink_port *port = priv->netdev->devlink_port; 553 555 struct devlink_health_reporter *reporter; 554 556 555 - reporter = devlink_port_health_reporter_create(priv->netdev->devlink_port, 557 + reporter = devlink_port_health_reporter_create(port, 556 558 &mlx5_tx_reporter_ops, 557 - MLX5_REPORTER_TX_GRACEFUL_PERIOD, priv); 559 + priv); 558 560 if (IS_ERR(reporter)) { 559 561 netdev_warn(priv->netdev, 560 562 "Failed to create tx reporter, err = %ld\n",
+1 -1
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
··· 1447 1447 1448 1448 reporter = devl_port_health_reporter_create(dl_port, 1449 1449 &mlx5_rep_vnic_reporter_ops, 1450 - 0, rpriv); 1450 + rpriv); 1451 1451 if (IS_ERR(reporter)) { 1452 1452 mlx5_core_err(priv->mdev, 1453 1453 "Failed to create representor vnic reporter, err = %ld\n",
+24 -17
drivers/net/ethernet/mellanox/mlx5/core/health.c
··· 669 669 } 670 670 } 671 671 672 + #define MLX5_FW_REPORTER_ECPF_GRACEFUL_PERIOD 180000 673 + #define MLX5_FW_REPORTER_PF_GRACEFUL_PERIOD 60000 674 + #define MLX5_FW_REPORTER_VF_GRACEFUL_PERIOD 30000 675 + #define MLX5_FW_REPORTER_DEFAULT_GRACEFUL_PERIOD \ 676 + MLX5_FW_REPORTER_VF_GRACEFUL_PERIOD 677 + 678 + static 679 + const struct devlink_health_reporter_ops mlx5_fw_fatal_reporter_ecpf_ops = { 680 + .name = "fw_fatal", 681 + .recover = mlx5_fw_fatal_reporter_recover, 682 + .dump = mlx5_fw_fatal_reporter_dump, 683 + .default_graceful_period = 684 + MLX5_FW_REPORTER_ECPF_GRACEFUL_PERIOD, 685 + }; 686 + 672 687 static const struct devlink_health_reporter_ops mlx5_fw_fatal_reporter_pf_ops = { 673 688 .name = "fw_fatal", 674 689 .recover = mlx5_fw_fatal_reporter_recover, 675 690 .dump = mlx5_fw_fatal_reporter_dump, 691 + .default_graceful_period = MLX5_FW_REPORTER_PF_GRACEFUL_PERIOD, 676 692 }; 677 693 678 694 static const struct devlink_health_reporter_ops mlx5_fw_fatal_reporter_ops = { 679 695 .name = "fw_fatal", 680 696 .recover = mlx5_fw_fatal_reporter_recover, 697 + .default_graceful_period = 698 + MLX5_FW_REPORTER_DEFAULT_GRACEFUL_PERIOD, 681 699 }; 682 - 683 - #define MLX5_FW_REPORTER_ECPF_GRACEFUL_PERIOD 180000 684 - #define MLX5_FW_REPORTER_PF_GRACEFUL_PERIOD 60000 685 - #define MLX5_FW_REPORTER_VF_GRACEFUL_PERIOD 30000 686 - #define MLX5_FW_REPORTER_DEFAULT_GRACEFUL_PERIOD MLX5_FW_REPORTER_VF_GRACEFUL_PERIOD 687 700 688 701 void mlx5_fw_reporters_create(struct mlx5_core_dev *dev) 689 702 { ··· 704 691 struct mlx5_core_health *health = &dev->priv.health; 705 692 const struct devlink_health_reporter_ops *fw_ops; 706 693 struct devlink *devlink = priv_to_devlink(dev); 707 - u64 grace_period; 708 694 709 - fw_fatal_ops = &mlx5_fw_fatal_reporter_pf_ops; 710 695 fw_ops = &mlx5_fw_reporter_pf_ops; 711 696 if (mlx5_core_is_ecpf(dev)) { 712 - grace_period = MLX5_FW_REPORTER_ECPF_GRACEFUL_PERIOD; 697 + fw_fatal_ops = &mlx5_fw_fatal_reporter_ecpf_ops; 713 698 } else if (mlx5_core_is_pf(dev)) { 714 - grace_period = MLX5_FW_REPORTER_PF_GRACEFUL_PERIOD; 699 + fw_fatal_ops = &mlx5_fw_fatal_reporter_pf_ops; 715 700 } else { 716 701 /* VF or SF */ 717 - grace_period = MLX5_FW_REPORTER_DEFAULT_GRACEFUL_PERIOD; 718 702 fw_fatal_ops = &mlx5_fw_fatal_reporter_ops; 719 703 fw_ops = &mlx5_fw_reporter_ops; 720 704 } 721 705 722 - health->fw_reporter = 723 - devl_health_reporter_create(devlink, fw_ops, 0, dev); 706 + health->fw_reporter = devl_health_reporter_create(devlink, fw_ops, dev); 724 707 if (IS_ERR(health->fw_reporter)) 725 708 mlx5_core_warn(dev, "Failed to create fw reporter, err = %ld\n", 726 709 PTR_ERR(health->fw_reporter)); 727 710 728 - health->fw_fatal_reporter = 729 - devl_health_reporter_create(devlink, 730 - fw_fatal_ops, 731 - grace_period, 732 - dev); 711 + health->fw_fatal_reporter = devl_health_reporter_create(devlink, 712 + fw_fatal_ops, 713 + dev); 733 714 if (IS_ERR(health->fw_fatal_reporter)) 734 715 mlx5_core_warn(dev, "Failed to create fw fatal reporter, err = %ld\n", 735 716 PTR_ERR(health->fw_fatal_reporter));
+1 -1
drivers/net/ethernet/mellanox/mlxsw/core.c
··· 2043 2043 return 0; 2044 2044 2045 2045 fw_fatal = devl_health_reporter_create(devlink, &mlxsw_core_health_fw_fatal_ops, 2046 - 0, mlxsw_core); 2046 + mlxsw_core); 2047 2047 if (IS_ERR(fw_fatal)) { 2048 2048 dev_err(mlxsw_core->bus_info->dev, "Failed to create fw fatal reporter"); 2049 2049 return PTR_ERR(fw_fatal);
+5 -4
drivers/net/ethernet/qlogic/qed/qed_devlink.c
··· 87 87 return 0; 88 88 } 89 89 90 + #define QED_REPORTER_FW_GRACEFUL_PERIOD 0 91 + 90 92 static const struct devlink_health_reporter_ops qed_fw_fatal_reporter_ops = { 91 93 .name = "fw_fatal", 92 94 .recover = qed_fw_fatal_reporter_recover, 93 95 .dump = qed_fw_fatal_reporter_dump, 96 + .default_graceful_period = QED_REPORTER_FW_GRACEFUL_PERIOD, 94 97 }; 95 - 96 - #define QED_REPORTER_FW_GRACEFUL_PERIOD 0 97 98 98 99 void qed_fw_reporters_create(struct devlink *devlink) 99 100 { 100 101 struct qed_devlink *dl = devlink_priv(devlink); 101 102 102 - dl->fw_reporter = devlink_health_reporter_create(devlink, &qed_fw_fatal_reporter_ops, 103 - QED_REPORTER_FW_GRACEFUL_PERIOD, dl); 103 + dl->fw_reporter = devlink_health_reporter_create(devlink, 104 + &qed_fw_fatal_reporter_ops, dl); 104 105 if (IS_ERR(dl->fw_reporter)) { 105 106 DP_NOTICE(dl->cdev, "Failed to create fw reporter, err = %ld\n", 106 107 PTR_ERR(dl->fw_reporter));
+2 -2
drivers/net/netdevsim/health.c
··· 183 183 health->empty_reporter = 184 184 devl_health_reporter_create(devlink, 185 185 &nsim_dev_empty_reporter_ops, 186 - 0, health); 186 + health); 187 187 if (IS_ERR(health->empty_reporter)) 188 188 return PTR_ERR(health->empty_reporter); 189 189 190 190 health->dummy_reporter = 191 191 devl_health_reporter_create(devlink, 192 192 &nsim_dev_dummy_reporter_ops, 193 - 0, health); 193 + health); 194 194 if (IS_ERR(health->dummy_reporter)) { 195 195 err = PTR_ERR(health->dummy_reporter); 196 196 goto err_empty_reporter_destroy;
+7 -4
include/net/devlink.h
··· 746 746 * if priv_ctx is NULL, run a full dump 747 747 * @diagnose: callback to diagnose the current status 748 748 * @test: callback to trigger a test event 749 + * @default_graceful_period: default min time (in msec) 750 + * between recovery attempts 749 751 */ 750 752 751 753 struct devlink_health_reporter_ops { ··· 762 760 struct netlink_ext_ack *extack); 763 761 int (*test)(struct devlink_health_reporter *reporter, 764 762 struct netlink_ext_ack *extack); 763 + u64 default_graceful_period; 765 764 }; 766 765 767 766 /** ··· 1931 1928 struct devlink_health_reporter * 1932 1929 devl_port_health_reporter_create(struct devlink_port *port, 1933 1930 const struct devlink_health_reporter_ops *ops, 1934 - u64 graceful_period, void *priv); 1931 + void *priv); 1935 1932 1936 1933 struct devlink_health_reporter * 1937 1934 devlink_port_health_reporter_create(struct devlink_port *port, 1938 1935 const struct devlink_health_reporter_ops *ops, 1939 - u64 graceful_period, void *priv); 1936 + void *priv); 1940 1937 1941 1938 struct devlink_health_reporter * 1942 1939 devl_health_reporter_create(struct devlink *devlink, 1943 1940 const struct devlink_health_reporter_ops *ops, 1944 - u64 graceful_period, void *priv); 1941 + void *priv); 1945 1942 1946 1943 struct devlink_health_reporter * 1947 1944 devlink_health_reporter_create(struct devlink *devlink, 1948 1945 const struct devlink_health_reporter_ops *ops, 1949 - u64 graceful_period, void *priv); 1946 + void *priv); 1950 1947 1951 1948 void 1952 1949 devl_health_reporter_destroy(struct devlink_health_reporter *reporter);
+11 -17
net/devlink/health.c
··· 108 108 static struct devlink_health_reporter * 109 109 __devlink_health_reporter_create(struct devlink *devlink, 110 110 const struct devlink_health_reporter_ops *ops, 111 - u64 graceful_period, void *priv) 111 + void *priv) 112 112 { 113 113 struct devlink_health_reporter *reporter; 114 114 115 - if (WARN_ON(graceful_period && !ops->recover)) 115 + if (WARN_ON(ops->default_graceful_period && !ops->recover)) 116 116 return ERR_PTR(-EINVAL); 117 117 118 118 reporter = kzalloc(sizeof(*reporter), GFP_KERNEL); ··· 122 122 reporter->priv = priv; 123 123 reporter->ops = ops; 124 124 reporter->devlink = devlink; 125 - reporter->graceful_period = graceful_period; 125 + reporter->graceful_period = ops->default_graceful_period; 126 126 reporter->auto_recover = !!ops->recover; 127 127 reporter->auto_dump = !!ops->dump; 128 128 return reporter; ··· 134 134 * 135 135 * @port: devlink_port to which health reports will relate 136 136 * @ops: devlink health reporter ops 137 - * @graceful_period: min time (in msec) between recovery attempts 138 137 * @priv: driver priv pointer 139 138 */ 140 139 struct devlink_health_reporter * 141 140 devl_port_health_reporter_create(struct devlink_port *port, 142 141 const struct devlink_health_reporter_ops *ops, 143 - u64 graceful_period, void *priv) 142 + void *priv) 144 143 { 145 144 struct devlink_health_reporter *reporter; 146 145 ··· 149 150 ops->name)) 150 151 return ERR_PTR(-EEXIST); 151 152 152 - reporter = __devlink_health_reporter_create(port->devlink, ops, 153 - graceful_period, priv); 153 + reporter = __devlink_health_reporter_create(port->devlink, ops, priv); 154 154 if (IS_ERR(reporter)) 155 155 return reporter; 156 156 ··· 162 164 struct devlink_health_reporter * 163 165 devlink_port_health_reporter_create(struct devlink_port *port, 164 166 const struct devlink_health_reporter_ops *ops, 165 - u64 graceful_period, void *priv) 167 + void *priv) 166 168 { 167 169 struct devlink_health_reporter *reporter; 168 170 struct devlink *devlink = port->devlink; 169 171 170 172 devl_lock(devlink); 171 - reporter = devl_port_health_reporter_create(port, ops, 172 - graceful_period, priv); 173 + reporter = devl_port_health_reporter_create(port, ops, priv); 173 174 devl_unlock(devlink); 174 175 return reporter; 175 176 } ··· 179 182 * 180 183 * @devlink: devlink instance which the health reports will relate 181 184 * @ops: devlink health reporter ops 182 - * @graceful_period: min time (in msec) between recovery attempts 183 185 * @priv: driver priv pointer 184 186 */ 185 187 struct devlink_health_reporter * 186 188 devl_health_reporter_create(struct devlink *devlink, 187 189 const struct devlink_health_reporter_ops *ops, 188 - u64 graceful_period, void *priv) 190 + void *priv) 189 191 { 190 192 struct devlink_health_reporter *reporter; 191 193 ··· 193 197 if (devlink_health_reporter_find_by_name(devlink, ops->name)) 194 198 return ERR_PTR(-EEXIST); 195 199 196 - reporter = __devlink_health_reporter_create(devlink, ops, 197 - graceful_period, priv); 200 + reporter = __devlink_health_reporter_create(devlink, ops, priv); 198 201 if (IS_ERR(reporter)) 199 202 return reporter; 200 203 ··· 205 210 struct devlink_health_reporter * 206 211 devlink_health_reporter_create(struct devlink *devlink, 207 212 const struct devlink_health_reporter_ops *ops, 208 - u64 graceful_period, void *priv) 213 + void *priv) 209 214 { 210 215 struct devlink_health_reporter *reporter; 211 216 212 217 devl_lock(devlink); 213 - reporter = devl_health_reporter_create(devlink, ops, 214 - graceful_period, priv); 218 + reporter = devl_health_reporter_create(devlink, ops, priv); 215 219 devl_unlock(devlink); 216 220 return reporter; 217 221 }