Commit d8cf03fc authored by Przemek Kitszel's avatar Przemek Kitszel Committed by David S. Miller
Browse files

octeontx2-af: devlink health: use retained error fmsg API



Drop unneeded error checking.

devlink_fmsg_*() family of functions is now retaining errors,
so there is no need to check for them after each call.

Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
Signed-off-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aca7734d
Loading
Loading
Loading
Loading
+133 −331
Original line number Diff line number Diff line
@@ -14,26 +14,16 @@

#define DRV_NAME "octeontx2-af"

static int rvu_report_pair_start(struct devlink_fmsg *fmsg, const char *name)
static void rvu_report_pair_start(struct devlink_fmsg *fmsg, const char *name)
{
	int err;

	err = devlink_fmsg_pair_nest_start(fmsg, name);
	if (err)
		return err;

	return  devlink_fmsg_obj_nest_start(fmsg);
	devlink_fmsg_pair_nest_start(fmsg, name);
	devlink_fmsg_obj_nest_start(fmsg);
}

static int rvu_report_pair_end(struct devlink_fmsg *fmsg)
static void rvu_report_pair_end(struct devlink_fmsg *fmsg)
{
	int err;

	err = devlink_fmsg_obj_nest_end(fmsg);
	if (err)
		return err;

	return devlink_fmsg_pair_nest_end(fmsg);
	devlink_fmsg_obj_nest_end(fmsg);
	devlink_fmsg_pair_nest_end(fmsg);
}

static bool rvu_common_request_irq(struct rvu *rvu, int offset,
@@ -284,175 +274,81 @@ static int rvu_nix_report_show(struct devlink_fmsg *fmsg, void *ctx,
{
	struct rvu_nix_event_ctx *nix_event_context;
	u64 intr_val;
	int err;

	nix_event_context = ctx;
	switch (health_reporter) {
	case NIX_AF_RVU_INTR:
		intr_val = nix_event_context->nix_af_rvu_int;
		err = rvu_report_pair_start(fmsg, "NIX_AF_RVU");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX RVU Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NIX_AF_RVU");
		devlink_fmsg_u64_pair_put(fmsg, "\tNIX RVU Interrupt Reg ",
					  nix_event_context->nix_af_rvu_int);
		if (err)
			return err;
		if (intr_val & BIT_ULL(0)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error");
			if (err)
				return err;
		}
		err = rvu_report_pair_end(fmsg);
		if (err)
			return err;
		if (intr_val & BIT_ULL(0))
			devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error");
		rvu_report_pair_end(fmsg);
		break;
	case NIX_AF_RVU_GEN:
		intr_val = nix_event_context->nix_af_rvu_gen;
		err = rvu_report_pair_start(fmsg, "NIX_AF_GENERAL");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX General Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NIX_AF_GENERAL");
		devlink_fmsg_u64_pair_put(fmsg, "\tNIX General Interrupt Reg ",
					  nix_event_context->nix_af_rvu_gen);
		if (err)
			return err;
		if (intr_val & BIT_ULL(0)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tRx multicast pkt drop");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(1)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tRx mirror pkt drop");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(4)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tSMQ flush done");
			if (err)
				return err;
		}
		err = rvu_report_pair_end(fmsg);
		if (err)
			return err;
		if (intr_val & BIT_ULL(0))
			devlink_fmsg_string_put(fmsg, "\n\tRx multicast pkt drop");
		if (intr_val & BIT_ULL(1))
			devlink_fmsg_string_put(fmsg, "\n\tRx mirror pkt drop");
		if (intr_val & BIT_ULL(4))
			devlink_fmsg_string_put(fmsg, "\n\tSMQ flush done");
		rvu_report_pair_end(fmsg);
		break;
	case NIX_AF_RVU_ERR:
		intr_val = nix_event_context->nix_af_rvu_err;
		err = rvu_report_pair_start(fmsg, "NIX_AF_ERR");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX Error Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NIX_AF_ERR");
		devlink_fmsg_u64_pair_put(fmsg, "\tNIX Error Interrupt Reg ",
					  nix_event_context->nix_af_rvu_err);
		if (err)
			return err;
		if (intr_val & BIT_ULL(14)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_INST_S read");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(13)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_RES_S write");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(12)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tAQ Doorbell Error");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(6)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tRx on unmapped PF_FUNC");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(5)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tRx multicast replication error");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(4)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_RX_MCE_S read");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(3)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on multicast WQE read");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(2)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on mirror WQE read");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(1)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on mirror pkt write");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(0)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on multicast pkt write");
			if (err)
				return err;
		}
		err = rvu_report_pair_end(fmsg);
		if (err)
			return err;
		if (intr_val & BIT_ULL(14))
			devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_INST_S read");
		if (intr_val & BIT_ULL(13))
			devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_RES_S write");
		if (intr_val & BIT_ULL(12))
			devlink_fmsg_string_put(fmsg, "\n\tAQ Doorbell Error");
		if (intr_val & BIT_ULL(6))
			devlink_fmsg_string_put(fmsg, "\n\tRx on unmapped PF_FUNC");
		if (intr_val & BIT_ULL(5))
			devlink_fmsg_string_put(fmsg, "\n\tRx multicast replication error");
		if (intr_val & BIT_ULL(4))
			devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_RX_MCE_S read");
		if (intr_val & BIT_ULL(3))
			devlink_fmsg_string_put(fmsg, "\n\tFault on multicast WQE read");
		if (intr_val & BIT_ULL(2))
			devlink_fmsg_string_put(fmsg, "\n\tFault on mirror WQE read");
		if (intr_val & BIT_ULL(1))
			devlink_fmsg_string_put(fmsg, "\n\tFault on mirror pkt write");
		if (intr_val & BIT_ULL(0))
			devlink_fmsg_string_put(fmsg, "\n\tFault on multicast pkt write");
		rvu_report_pair_end(fmsg);
		break;
	case NIX_AF_RVU_RAS:
		intr_val = nix_event_context->nix_af_rvu_err;
		err = rvu_report_pair_start(fmsg, "NIX_AF_RAS");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX RAS Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NIX_AF_RAS");
		devlink_fmsg_u64_pair_put(fmsg, "\tNIX RAS Interrupt Reg ",
					  nix_event_context->nix_af_rvu_err);
		if (err)
			return err;
		err = devlink_fmsg_string_put(fmsg, "\n\tPoison Data on:");
		if (err)
			return err;
		if (intr_val & BIT_ULL(34)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_INST_S");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(33)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_RES_S");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(32)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tHW ctx");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(4)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tPacket from mirror buffer");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(3)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tPacket from multicast buffer");

			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(2)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tWQE read from mirror buffer");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(1)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tWQE read from multicast buffer");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(0)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX_RX_MCE_S read");
			if (err)
				return err;
		}
		err = rvu_report_pair_end(fmsg);
		if (err)
			return err;
		devlink_fmsg_string_put(fmsg, "\n\tPoison Data on:");
		if (intr_val & BIT_ULL(34))
			devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_INST_S");
		if (intr_val & BIT_ULL(33))
			devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_RES_S");
		if (intr_val & BIT_ULL(32))
			devlink_fmsg_string_put(fmsg, "\n\tHW ctx");
		if (intr_val & BIT_ULL(4))
			devlink_fmsg_string_put(fmsg, "\n\tPacket from mirror buffer");
		if (intr_val & BIT_ULL(3))
			devlink_fmsg_string_put(fmsg, "\n\tPacket from multicast buffer");
		if (intr_val & BIT_ULL(2))
			devlink_fmsg_string_put(fmsg, "\n\tWQE read from mirror buffer");
		if (intr_val & BIT_ULL(1))
			devlink_fmsg_string_put(fmsg, "\n\tWQE read from multicast buffer");
		if (intr_val & BIT_ULL(0))
			devlink_fmsg_string_put(fmsg, "\n\tNIX_RX_MCE_S read");
		rvu_report_pair_end(fmsg);
		break;
	default:
		return -EINVAL;
@@ -922,181 +818,87 @@ static int rvu_npa_report_show(struct devlink_fmsg *fmsg, void *ctx,
	struct rvu_npa_event_ctx *npa_event_context;
	unsigned int alloc_dis, free_dis;
	u64 intr_val;
	int err;

	npa_event_context = ctx;
	switch (health_reporter) {
	case NPA_AF_RVU_GEN:
		intr_val = npa_event_context->npa_af_rvu_gen;
		err = rvu_report_pair_start(fmsg, "NPA_AF_GENERAL");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA General Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NPA_AF_GENERAL");
		devlink_fmsg_u64_pair_put(fmsg, "\tNPA General Interrupt Reg ",
					  npa_event_context->npa_af_rvu_gen);
		if (err)
			return err;
		if (intr_val & BIT_ULL(32)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tUnmap PF Error");
			if (err)
				return err;
		}
		if (intr_val & BIT_ULL(32))
			devlink_fmsg_string_put(fmsg, "\n\tUnmap PF Error");

		free_dis = FIELD_GET(GENMASK(15, 0), intr_val);
		if (free_dis & BIT(NPA_INPQ_NIX0_RX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX0: free disabled RX");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_NIX0_TX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX0:free disabled TX");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_NIX1_RX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX1: free disabled RX");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_NIX1_TX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX1:free disabled TX");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_SSO)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for SSO");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_TIM)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for TIM");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_DPI)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for DPI");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_AURA_OP)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for AURA");
			if (err)
				return err;
		}
		if (free_dis & BIT(NPA_INPQ_NIX0_RX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX0: free disabled RX");
		if (free_dis & BIT(NPA_INPQ_NIX0_TX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX0:free disabled TX");
		if (free_dis & BIT(NPA_INPQ_NIX1_RX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX1: free disabled RX");
		if (free_dis & BIT(NPA_INPQ_NIX1_TX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX1:free disabled TX");
		if (free_dis & BIT(NPA_INPQ_SSO))
			devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for SSO");
		if (free_dis & BIT(NPA_INPQ_TIM))
			devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for TIM");
		if (free_dis & BIT(NPA_INPQ_DPI))
			devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for DPI");
		if (free_dis & BIT(NPA_INPQ_AURA_OP))
			devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for AURA");

		alloc_dis = FIELD_GET(GENMASK(31, 16), intr_val);
		if (alloc_dis & BIT(NPA_INPQ_NIX0_RX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX0: alloc disabled RX");
			if (err)
				return err;
		}
		if (alloc_dis & BIT(NPA_INPQ_NIX0_TX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX0:alloc disabled TX");
			if (err)
				return err;
		}
		if (alloc_dis & BIT(NPA_INPQ_NIX1_RX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX1: alloc disabled RX");
			if (err)
				return err;
		}
		if (alloc_dis & BIT(NPA_INPQ_NIX1_TX)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tNIX1:alloc disabled TX");
			if (err)
				return err;
		}
		if (alloc_dis & BIT(NPA_INPQ_SSO)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for SSO");
			if (err)
				return err;
		}
		if (alloc_dis & BIT(NPA_INPQ_TIM)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for TIM");
			if (err)
				return err;
		}
		if (alloc_dis & BIT(NPA_INPQ_DPI)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for DPI");
			if (err)
				return err;
		}
		if (alloc_dis & BIT(NPA_INPQ_AURA_OP)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for AURA");
			if (err)
				return err;
		}
		err = rvu_report_pair_end(fmsg);
		if (err)
			return err;
		if (alloc_dis & BIT(NPA_INPQ_NIX0_RX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX0: alloc disabled RX");
		if (alloc_dis & BIT(NPA_INPQ_NIX0_TX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX0:alloc disabled TX");
		if (alloc_dis & BIT(NPA_INPQ_NIX1_RX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX1: alloc disabled RX");
		if (alloc_dis & BIT(NPA_INPQ_NIX1_TX))
			devlink_fmsg_string_put(fmsg, "\n\tNIX1:alloc disabled TX");
		if (alloc_dis & BIT(NPA_INPQ_SSO))
			devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for SSO");
		if (alloc_dis & BIT(NPA_INPQ_TIM))
			devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for TIM");
		if (alloc_dis & BIT(NPA_INPQ_DPI))
			devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for DPI");
		if (alloc_dis & BIT(NPA_INPQ_AURA_OP))
			devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for AURA");

		rvu_report_pair_end(fmsg);
		break;
	case NPA_AF_RVU_ERR:
		err = rvu_report_pair_start(fmsg, "NPA_AF_ERR");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA Error Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NPA_AF_ERR");
		devlink_fmsg_u64_pair_put(fmsg, "\tNPA Error Interrupt Reg ",
					  npa_event_context->npa_af_rvu_err);
		if (err)
			return err;

		if (npa_event_context->npa_af_rvu_err & BIT_ULL(14)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on NPA_AQ_INST_S read");
			if (err)
				return err;
		}
		if (npa_event_context->npa_af_rvu_err & BIT_ULL(13)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tFault on NPA_AQ_RES_S write");
			if (err)
				return err;
		}
		if (npa_event_context->npa_af_rvu_err & BIT_ULL(12)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tAQ Doorbell Error");
			if (err)
				return err;
		}
		err = rvu_report_pair_end(fmsg);
		if (err)
			return err;
		if (npa_event_context->npa_af_rvu_err & BIT_ULL(14))
			devlink_fmsg_string_put(fmsg, "\n\tFault on NPA_AQ_INST_S read");
		if (npa_event_context->npa_af_rvu_err & BIT_ULL(13))
			devlink_fmsg_string_put(fmsg, "\n\tFault on NPA_AQ_RES_S write");
		if (npa_event_context->npa_af_rvu_err & BIT_ULL(12))
			devlink_fmsg_string_put(fmsg, "\n\tAQ Doorbell Error");
		rvu_report_pair_end(fmsg);
		break;
	case NPA_AF_RVU_RAS:
		err = rvu_report_pair_start(fmsg, "NPA_AF_RVU_RAS");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA RAS Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NPA_AF_RVU_RAS");
		devlink_fmsg_u64_pair_put(fmsg, "\tNPA RAS Interrupt Reg ",
					  npa_event_context->npa_af_rvu_ras);
		if (err)
			return err;
		if (npa_event_context->npa_af_rvu_ras & BIT_ULL(34)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tPoison data on NPA_AQ_INST_S");
			if (err)
				return err;
		}
		if (npa_event_context->npa_af_rvu_ras & BIT_ULL(33)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tPoison data on NPA_AQ_RES_S");
			if (err)
				return err;
		}
		if (npa_event_context->npa_af_rvu_ras & BIT_ULL(32)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tPoison data on HW context");
			if (err)
				return err;
		}
		err = rvu_report_pair_end(fmsg);
		if (err)
			return err;
		if (npa_event_context->npa_af_rvu_ras & BIT_ULL(34))
			devlink_fmsg_string_put(fmsg, "\n\tPoison data on NPA_AQ_INST_S");
		if (npa_event_context->npa_af_rvu_ras & BIT_ULL(33))
			devlink_fmsg_string_put(fmsg, "\n\tPoison data on NPA_AQ_RES_S");
		if (npa_event_context->npa_af_rvu_ras & BIT_ULL(32))
			devlink_fmsg_string_put(fmsg, "\n\tPoison data on HW context");
		rvu_report_pair_end(fmsg);
		break;
	case NPA_AF_RVU_INTR:
		err = rvu_report_pair_start(fmsg, "NPA_AF_RVU");
		if (err)
			return err;
		err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA RVU Interrupt Reg ",
		rvu_report_pair_start(fmsg, "NPA_AF_RVU");
		devlink_fmsg_u64_pair_put(fmsg, "\tNPA RVU Interrupt Reg ",
					  npa_event_context->npa_af_rvu_int);
		if (err)
			return err;
		if (npa_event_context->npa_af_rvu_int & BIT_ULL(0)) {
			err = devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error");
			if (err)
				return err;
		}
		return rvu_report_pair_end(fmsg);
		if (npa_event_context->npa_af_rvu_int & BIT_ULL(0))
			devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error");
		rvu_report_pair_end(fmsg);
		break;
	default:
		return -EINVAL;
	}