reporter           18 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c static int bnxt_fw_reporter_diagnose(struct devlink_health_reporter *reporter,
reporter           21 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c 	struct bnxt *bp = devlink_health_reporter_priv(reporter);
reporter           62 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c static int bnxt_fw_reset_recover(struct devlink_health_reporter *reporter,
reporter           65 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c 	struct bnxt *bp = devlink_health_reporter_priv(reporter);
reporter           80 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c static int bnxt_fw_fatal_recover(struct devlink_health_reporter *reporter,
reporter           83 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c 	struct bnxt *bp = devlink_health_reporter_priv(reporter);
reporter          197 drivers/net/ethernet/mellanox/mlx5/core/en/health.c 			struct devlink_health_reporter *reporter, char *err_str,
reporter          202 drivers/net/ethernet/mellanox/mlx5/core/en/health.c 	if (!reporter)
reporter          205 drivers/net/ethernet/mellanox/mlx5/core/en/health.c 	return devlink_health_report(reporter, err_str, err_ctx);
reporter           45 drivers/net/ethernet/mellanox/mlx5/core/en/health.h 			struct devlink_health_reporter *reporter, char *err_str,
reporter          224 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c static int mlx5e_rx_reporter_recover(struct devlink_health_reporter *reporter,
reporter          227 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 	struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
reporter          303 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c static int mlx5e_rx_reporter_diagnose(struct devlink_health_reporter *reporter,
reporter          306 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 	struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
reporter          383 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 	struct devlink_health_reporter *reporter;
reporter          385 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 	reporter = devlink_health_reporter_create(devlink,
reporter          389 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 	if (IS_ERR(reporter)) {
reporter          391 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 			    PTR_ERR(reporter));
reporter          392 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 		return PTR_ERR(reporter);
reporter          394 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c 	priv->rx_reporter = reporter;
reporter          137 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c static int mlx5e_tx_reporter_recover(struct devlink_health_reporter *reporter,
reporter          140 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 	struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
reporter          207 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c static int mlx5e_tx_reporter_diagnose(struct devlink_health_reporter *reporter,
reporter          210 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 	struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
reporter          286 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 	struct devlink_health_reporter *reporter;
reporter          291 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 	reporter =
reporter          295 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 	if (IS_ERR(reporter)) {
reporter          298 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 			    PTR_ERR(reporter));
reporter          299 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 		return PTR_ERR(reporter);
reporter          301 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c 	priv->tx_reporter = reporter;
reporter          400 drivers/net/ethernet/mellanox/mlx5/core/health.c mlx5_fw_reporter_diagnose(struct devlink_health_reporter *reporter,
reporter          403 drivers/net/ethernet/mellanox/mlx5/core/health.c 	struct mlx5_core_dev *dev = devlink_health_reporter_priv(reporter);
reporter          501 drivers/net/ethernet/mellanox/mlx5/core/health.c mlx5_fw_reporter_dump(struct devlink_health_reporter *reporter,
reporter          504 drivers/net/ethernet/mellanox/mlx5/core/health.c 	struct mlx5_core_dev *dev = devlink_health_reporter_priv(reporter);
reporter          555 drivers/net/ethernet/mellanox/mlx5/core/health.c mlx5_fw_fatal_reporter_recover(struct devlink_health_reporter *reporter,
reporter          558 drivers/net/ethernet/mellanox/mlx5/core/health.c 	struct mlx5_core_dev *dev = devlink_health_reporter_priv(reporter);
reporter          565 drivers/net/ethernet/mellanox/mlx5/core/health.c mlx5_fw_fatal_reporter_dump(struct devlink_health_reporter *reporter,
reporter          568 drivers/net/ethernet/mellanox/mlx5/core/health.c 	struct mlx5_core_dev *dev = devlink_health_reporter_priv(reporter);
reporter           87 include/linux/igmp.h 	char			reporter;
reporter          509 include/net/devlink.h 	int (*recover)(struct devlink_health_reporter *reporter,
reporter          511 include/net/devlink.h 	int (*dump)(struct devlink_health_reporter *reporter,
reporter          513 include/net/devlink.h 	int (*diagnose)(struct devlink_health_reporter *reporter,
reporter          942 include/net/devlink.h devlink_health_reporter_destroy(struct devlink_health_reporter *reporter);
reporter          945 include/net/devlink.h devlink_health_reporter_priv(struct devlink_health_reporter *reporter);
reporter          946 include/net/devlink.h int devlink_health_report(struct devlink_health_reporter *reporter,
reporter          949 include/net/devlink.h devlink_health_reporter_state_update(struct devlink_health_reporter *reporter,
reporter         4647 net/core/devlink.c devlink_health_reporter_priv(struct devlink_health_reporter *reporter)
reporter         4649 net/core/devlink.c 	return reporter->priv;
reporter         4657 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         4660 net/core/devlink.c 	list_for_each_entry(reporter, &devlink->reporter_list, list)
reporter         4661 net/core/devlink.c 		if (!strcmp(reporter->ops->name, reporter_name))
reporter         4662 net/core/devlink.c 			return reporter;
reporter         4681 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         4685 net/core/devlink.c 		reporter = ERR_PTR(-EEXIST);
reporter         4691 net/core/devlink.c 		reporter = ERR_PTR(-EINVAL);
reporter         4695 net/core/devlink.c 	reporter = kzalloc(sizeof(*reporter), GFP_KERNEL);
reporter         4696 net/core/devlink.c 	if (!reporter) {
reporter         4697 net/core/devlink.c 		reporter = ERR_PTR(-ENOMEM);
reporter         4701 net/core/devlink.c 	reporter->priv = priv;
reporter         4702 net/core/devlink.c 	reporter->ops = ops;
reporter         4703 net/core/devlink.c 	reporter->devlink = devlink;
reporter         4704 net/core/devlink.c 	reporter->graceful_period = graceful_period;
reporter         4705 net/core/devlink.c 	reporter->auto_recover = auto_recover;
reporter         4706 net/core/devlink.c 	mutex_init(&reporter->dump_lock);
reporter         4707 net/core/devlink.c 	refcount_set(&reporter->refcount, 1);
reporter         4708 net/core/devlink.c 	list_add_tail(&reporter->list, &devlink->reporter_list);
reporter         4711 net/core/devlink.c 	return reporter;
reporter         4721 net/core/devlink.c devlink_health_reporter_destroy(struct devlink_health_reporter *reporter)
reporter         4723 net/core/devlink.c 	mutex_lock(&reporter->devlink->reporters_lock);
reporter         4724 net/core/devlink.c 	list_del(&reporter->list);
reporter         4725 net/core/devlink.c 	mutex_unlock(&reporter->devlink->reporters_lock);
reporter         4726 net/core/devlink.c 	while (refcount_read(&reporter->refcount) > 1)
reporter         4728 net/core/devlink.c 	mutex_destroy(&reporter->dump_lock);
reporter         4729 net/core/devlink.c 	if (reporter->dump_fmsg)
reporter         4730 net/core/devlink.c 		devlink_fmsg_free(reporter->dump_fmsg);
reporter         4731 net/core/devlink.c 	kfree(reporter);
reporter         4736 net/core/devlink.c devlink_health_reporter_state_update(struct devlink_health_reporter *reporter,
reporter         4743 net/core/devlink.c 	if (reporter->health_state == state)
reporter         4746 net/core/devlink.c 	reporter->health_state = state;
reporter         4747 net/core/devlink.c 	trace_devlink_health_reporter_state_update(reporter->devlink,
reporter         4748 net/core/devlink.c 						   reporter->ops->name, state);
reporter         4753 net/core/devlink.c devlink_health_reporter_recover(struct devlink_health_reporter *reporter,
reporter         4758 net/core/devlink.c 	if (!reporter->ops->recover)
reporter         4761 net/core/devlink.c 	err = reporter->ops->recover(reporter, priv_ctx);
reporter         4765 net/core/devlink.c 	reporter->recovery_count++;
reporter         4766 net/core/devlink.c 	reporter->health_state = DEVLINK_HEALTH_REPORTER_STATE_HEALTHY;
reporter         4767 net/core/devlink.c 	reporter->last_recovery_ts = jiffies;
reporter         4773 net/core/devlink.c devlink_health_dump_clear(struct devlink_health_reporter *reporter)
reporter         4775 net/core/devlink.c 	if (!reporter->dump_fmsg)
reporter         4777 net/core/devlink.c 	devlink_fmsg_free(reporter->dump_fmsg);
reporter         4778 net/core/devlink.c 	reporter->dump_fmsg = NULL;
reporter         4781 net/core/devlink.c static int devlink_health_do_dump(struct devlink_health_reporter *reporter,
reporter         4786 net/core/devlink.c 	if (!reporter->ops->dump)
reporter         4789 net/core/devlink.c 	if (reporter->dump_fmsg)
reporter         4792 net/core/devlink.c 	reporter->dump_fmsg = devlink_fmsg_alloc();
reporter         4793 net/core/devlink.c 	if (!reporter->dump_fmsg) {
reporter         4798 net/core/devlink.c 	err = devlink_fmsg_obj_nest_start(reporter->dump_fmsg);
reporter         4802 net/core/devlink.c 	err = reporter->ops->dump(reporter, reporter->dump_fmsg,
reporter         4807 net/core/devlink.c 	err = devlink_fmsg_obj_nest_end(reporter->dump_fmsg);
reporter         4811 net/core/devlink.c 	reporter->dump_ts = jiffies;
reporter         4812 net/core/devlink.c 	reporter->dump_real_ts = ktime_get_real_ns();
reporter         4817 net/core/devlink.c 	devlink_health_dump_clear(reporter);
reporter         4821 net/core/devlink.c int devlink_health_report(struct devlink_health_reporter *reporter,
reporter         4825 net/core/devlink.c 	struct devlink *devlink = reporter->devlink;
reporter         4829 net/core/devlink.c 	trace_devlink_health_report(devlink, reporter->ops->name, msg);
reporter         4830 net/core/devlink.c 	reporter->error_count++;
reporter         4831 net/core/devlink.c 	prev_health_state = reporter->health_state;
reporter         4832 net/core/devlink.c 	reporter->health_state = DEVLINK_HEALTH_REPORTER_STATE_ERROR;
reporter         4835 net/core/devlink.c 	if (reporter->auto_recover &&
reporter         4837 net/core/devlink.c 	     jiffies - reporter->last_recovery_ts <
reporter         4838 net/core/devlink.c 	     msecs_to_jiffies(reporter->graceful_period))) {
reporter         4840 net/core/devlink.c 						     reporter->ops->name,
reporter         4841 net/core/devlink.c 						     reporter->health_state,
reporter         4843 net/core/devlink.c 						     reporter->last_recovery_ts);
reporter         4847 net/core/devlink.c 	reporter->health_state = DEVLINK_HEALTH_REPORTER_STATE_ERROR;
reporter         4849 net/core/devlink.c 	mutex_lock(&reporter->dump_lock);
reporter         4851 net/core/devlink.c 	devlink_health_do_dump(reporter, priv_ctx);
reporter         4852 net/core/devlink.c 	mutex_unlock(&reporter->dump_lock);
reporter         4854 net/core/devlink.c 	if (reporter->auto_recover)
reporter         4855 net/core/devlink.c 		return devlink_health_reporter_recover(reporter, priv_ctx);
reporter         4865 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         4873 net/core/devlink.c 	reporter = devlink_health_reporter_find_by_name(devlink, reporter_name);
reporter         4874 net/core/devlink.c 	if (reporter)
reporter         4875 net/core/devlink.c 		refcount_inc(&reporter->refcount);
reporter         4877 net/core/devlink.c 	return reporter;
reporter         4890 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         4911 net/core/devlink.c 	reporter = devlink_health_reporter_get_from_attrs(devlink, attrs);
reporter         4914 net/core/devlink.c 	return reporter;
reporter         4923 net/core/devlink.c devlink_health_reporter_put(struct devlink_health_reporter *reporter)
reporter         4925 net/core/devlink.c 	refcount_dec(&reporter->refcount);
reporter         4931 net/core/devlink.c 				struct devlink_health_reporter *reporter,
reporter         4950 net/core/devlink.c 			   reporter->ops->name))
reporter         4953 net/core/devlink.c 		       reporter->health_state))
reporter         4956 net/core/devlink.c 			      reporter->error_count, DEVLINK_ATTR_PAD))
reporter         4959 net/core/devlink.c 			      reporter->recovery_count, DEVLINK_ATTR_PAD))
reporter         4961 net/core/devlink.c 	if (reporter->ops->recover &&
reporter         4963 net/core/devlink.c 			      reporter->graceful_period,
reporter         4966 net/core/devlink.c 	if (reporter->ops->recover &&
reporter         4968 net/core/devlink.c 		       reporter->auto_recover))
reporter         4970 net/core/devlink.c 	if (reporter->dump_fmsg &&
reporter         4972 net/core/devlink.c 			      jiffies_to_msecs(reporter->dump_ts),
reporter         4975 net/core/devlink.c 	if (reporter->dump_fmsg &&
reporter         4977 net/core/devlink.c 			      reporter->dump_real_ts, DEVLINK_ATTR_PAD))
reporter         4995 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         4999 net/core/devlink.c 	reporter = devlink_health_reporter_get_from_info(devlink, info);
reporter         5000 net/core/devlink.c 	if (!reporter)
reporter         5009 net/core/devlink.c 	err = devlink_nl_health_reporter_fill(msg, devlink, reporter,
reporter         5020 net/core/devlink.c 	devlink_health_reporter_put(reporter);
reporter         5028 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         5039 net/core/devlink.c 		list_for_each_entry(reporter, &devlink->reporter_list,
reporter         5046 net/core/devlink.c 							      reporter,
reporter         5071 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         5074 net/core/devlink.c 	reporter = devlink_health_reporter_get_from_info(devlink, info);
reporter         5075 net/core/devlink.c 	if (!reporter)
reporter         5078 net/core/devlink.c 	if (!reporter->ops->recover &&
reporter         5086 net/core/devlink.c 		reporter->graceful_period =
reporter         5090 net/core/devlink.c 		reporter->auto_recover =
reporter         5093 net/core/devlink.c 	devlink_health_reporter_put(reporter);
reporter         5096 net/core/devlink.c 	devlink_health_reporter_put(reporter);
reporter         5104 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         5107 net/core/devlink.c 	reporter = devlink_health_reporter_get_from_info(devlink, info);
reporter         5108 net/core/devlink.c 	if (!reporter)
reporter         5111 net/core/devlink.c 	err = devlink_health_reporter_recover(reporter, NULL);
reporter         5113 net/core/devlink.c 	devlink_health_reporter_put(reporter);
reporter         5121 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         5125 net/core/devlink.c 	reporter = devlink_health_reporter_get_from_info(devlink, info);
reporter         5126 net/core/devlink.c 	if (!reporter)
reporter         5129 net/core/devlink.c 	if (!reporter->ops->diagnose) {
reporter         5130 net/core/devlink.c 		devlink_health_reporter_put(reporter);
reporter         5136 net/core/devlink.c 		devlink_health_reporter_put(reporter);
reporter         5144 net/core/devlink.c 	err = reporter->ops->diagnose(reporter, fmsg);
reporter         5157 net/core/devlink.c 	devlink_health_reporter_put(reporter);
reporter         5165 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         5169 net/core/devlink.c 	reporter = devlink_health_reporter_get_from_cb(cb);
reporter         5170 net/core/devlink.c 	if (!reporter)
reporter         5173 net/core/devlink.c 	if (!reporter->ops->dump) {
reporter         5177 net/core/devlink.c 	mutex_lock(&reporter->dump_lock);
reporter         5179 net/core/devlink.c 		err = devlink_health_do_dump(reporter, NULL);
reporter         5182 net/core/devlink.c 		cb->args[1] = reporter->dump_ts;
reporter         5184 net/core/devlink.c 	if (!reporter->dump_fmsg || cb->args[1] != reporter->dump_ts) {
reporter         5190 net/core/devlink.c 	err = devlink_fmsg_dumpit(reporter->dump_fmsg, skb, cb,
reporter         5193 net/core/devlink.c 	mutex_unlock(&reporter->dump_lock);
reporter         5195 net/core/devlink.c 	devlink_health_reporter_put(reporter);
reporter         5204 net/core/devlink.c 	struct devlink_health_reporter *reporter;
reporter         5206 net/core/devlink.c 	reporter = devlink_health_reporter_get_from_info(devlink, info);
reporter         5207 net/core/devlink.c 	if (!reporter)
reporter         5210 net/core/devlink.c 	if (!reporter->ops->dump) {
reporter         5211 net/core/devlink.c 		devlink_health_reporter_put(reporter);
reporter         5215 net/core/devlink.c 	mutex_lock(&reporter->dump_lock);
reporter         5216 net/core/devlink.c 	devlink_health_dump_clear(reporter);
reporter         5217 net/core/devlink.c 	mutex_unlock(&reporter->dump_lock);
reporter         5218 net/core/devlink.c 	devlink_health_reporter_put(reporter);
reporter          210 net/ipv4/igmp.c 	im->reporter = 0;
reporter          839 net/ipv4/igmp.c 	im->reporter = 1;
reporter         1283 net/ipv4/igmp.c 	int reporter;
reporter         1297 net/ipv4/igmp.c 	reporter = im->reporter;
reporter         1304 net/ipv4/igmp.c 			if (reporter)
reporter         2858 net/ipv4/igmp.c 			   im->reporter);