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

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
...@@ -14,26 +14,16 @@ ...@@ -14,26 +14,16 @@
#define DRV_NAME "octeontx2-af" #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; devlink_fmsg_pair_nest_start(fmsg, name);
devlink_fmsg_obj_nest_start(fmsg);
err = devlink_fmsg_pair_nest_start(fmsg, name);
if (err)
return err;
return 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; devlink_fmsg_obj_nest_end(fmsg);
devlink_fmsg_pair_nest_end(fmsg);
err = devlink_fmsg_obj_nest_end(fmsg);
if (err)
return err;
return devlink_fmsg_pair_nest_end(fmsg);
} }
static bool rvu_common_request_irq(struct rvu *rvu, int offset, 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, ...@@ -284,175 +274,81 @@ static int rvu_nix_report_show(struct devlink_fmsg *fmsg, void *ctx,
{ {
struct rvu_nix_event_ctx *nix_event_context; struct rvu_nix_event_ctx *nix_event_context;
u64 intr_val; u64 intr_val;
int err;
nix_event_context = ctx; nix_event_context = ctx;
switch (health_reporter) { switch (health_reporter) {
case NIX_AF_RVU_INTR: case NIX_AF_RVU_INTR:
intr_val = nix_event_context->nix_af_rvu_int; intr_val = nix_event_context->nix_af_rvu_int;
err = rvu_report_pair_start(fmsg, "NIX_AF_RVU"); rvu_report_pair_start(fmsg, "NIX_AF_RVU");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNIX RVU Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX RVU Interrupt Reg ",
nix_event_context->nix_af_rvu_int); nix_event_context->nix_af_rvu_int);
if (err) if (intr_val & BIT_ULL(0))
return err; devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error");
if (intr_val & BIT_ULL(0)) { rvu_report_pair_end(fmsg);
err = devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error");
if (err)
return err;
}
err = rvu_report_pair_end(fmsg);
if (err)
return err;
break; break;
case NIX_AF_RVU_GEN: case NIX_AF_RVU_GEN:
intr_val = nix_event_context->nix_af_rvu_gen; intr_val = nix_event_context->nix_af_rvu_gen;
err = rvu_report_pair_start(fmsg, "NIX_AF_GENERAL"); rvu_report_pair_start(fmsg, "NIX_AF_GENERAL");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNIX General Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX General Interrupt Reg ",
nix_event_context->nix_af_rvu_gen); nix_event_context->nix_af_rvu_gen);
if (err) if (intr_val & BIT_ULL(0))
return err; devlink_fmsg_string_put(fmsg, "\n\tRx multicast pkt drop");
if (intr_val & BIT_ULL(0)) { if (intr_val & BIT_ULL(1))
err = devlink_fmsg_string_put(fmsg, "\n\tRx multicast pkt drop"); devlink_fmsg_string_put(fmsg, "\n\tRx mirror pkt drop");
if (err) if (intr_val & BIT_ULL(4))
return err; devlink_fmsg_string_put(fmsg, "\n\tSMQ flush done");
} rvu_report_pair_end(fmsg);
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;
break; break;
case NIX_AF_RVU_ERR: case NIX_AF_RVU_ERR:
intr_val = nix_event_context->nix_af_rvu_err; intr_val = nix_event_context->nix_af_rvu_err;
err = rvu_report_pair_start(fmsg, "NIX_AF_ERR"); rvu_report_pair_start(fmsg, "NIX_AF_ERR");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNIX Error Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX Error Interrupt Reg ",
nix_event_context->nix_af_rvu_err); nix_event_context->nix_af_rvu_err);
if (err) if (intr_val & BIT_ULL(14))
return err; devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_INST_S read");
if (intr_val & BIT_ULL(14)) { if (intr_val & BIT_ULL(13))
err = devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_INST_S read"); devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_RES_S write");
if (err) if (intr_val & BIT_ULL(12))
return err; devlink_fmsg_string_put(fmsg, "\n\tAQ Doorbell Error");
} if (intr_val & BIT_ULL(6))
if (intr_val & BIT_ULL(13)) { devlink_fmsg_string_put(fmsg, "\n\tRx on unmapped PF_FUNC");
err = devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_AQ_RES_S write"); if (intr_val & BIT_ULL(5))
if (err) devlink_fmsg_string_put(fmsg, "\n\tRx multicast replication error");
return err; if (intr_val & BIT_ULL(4))
} devlink_fmsg_string_put(fmsg, "\n\tFault on NIX_RX_MCE_S read");
if (intr_val & BIT_ULL(12)) { if (intr_val & BIT_ULL(3))
err = devlink_fmsg_string_put(fmsg, "\n\tAQ Doorbell Error"); devlink_fmsg_string_put(fmsg, "\n\tFault on multicast WQE read");
if (err) if (intr_val & BIT_ULL(2))
return err; devlink_fmsg_string_put(fmsg, "\n\tFault on mirror WQE read");
} if (intr_val & BIT_ULL(1))
if (intr_val & BIT_ULL(6)) { devlink_fmsg_string_put(fmsg, "\n\tFault on mirror pkt write");
err = devlink_fmsg_string_put(fmsg, "\n\tRx on unmapped PF_FUNC"); if (intr_val & BIT_ULL(0))
if (err) devlink_fmsg_string_put(fmsg, "\n\tFault on multicast pkt write");
return err; rvu_report_pair_end(fmsg);
}
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;
break; break;
case NIX_AF_RVU_RAS: case NIX_AF_RVU_RAS:
intr_val = nix_event_context->nix_af_rvu_err; intr_val = nix_event_context->nix_af_rvu_err;
err = rvu_report_pair_start(fmsg, "NIX_AF_RAS"); rvu_report_pair_start(fmsg, "NIX_AF_RAS");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNIX RAS Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNIX RAS Interrupt Reg ",
nix_event_context->nix_af_rvu_err); nix_event_context->nix_af_rvu_err);
if (err) devlink_fmsg_string_put(fmsg, "\n\tPoison Data on:");
return err; if (intr_val & BIT_ULL(34))
err = devlink_fmsg_string_put(fmsg, "\n\tPoison Data on:"); devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_INST_S");
if (err) if (intr_val & BIT_ULL(33))
return err; devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_RES_S");
if (intr_val & BIT_ULL(34)) { if (intr_val & BIT_ULL(32))
err = devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_INST_S"); devlink_fmsg_string_put(fmsg, "\n\tHW ctx");
if (err) if (intr_val & BIT_ULL(4))
return err; devlink_fmsg_string_put(fmsg, "\n\tPacket from mirror buffer");
} if (intr_val & BIT_ULL(3))
if (intr_val & BIT_ULL(33)) { devlink_fmsg_string_put(fmsg, "\n\tPacket from multicast buffer");
err = devlink_fmsg_string_put(fmsg, "\n\tNIX_AQ_RES_S"); if (intr_val & BIT_ULL(2))
if (err) devlink_fmsg_string_put(fmsg, "\n\tWQE read from mirror buffer");
return err; if (intr_val & BIT_ULL(1))
} devlink_fmsg_string_put(fmsg, "\n\tWQE read from multicast buffer");
if (intr_val & BIT_ULL(32)) { if (intr_val & BIT_ULL(0))
err = devlink_fmsg_string_put(fmsg, "\n\tHW ctx"); devlink_fmsg_string_put(fmsg, "\n\tNIX_RX_MCE_S read");
if (err) rvu_report_pair_end(fmsg);
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;
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -922,181 +818,87 @@ static int rvu_npa_report_show(struct devlink_fmsg *fmsg, void *ctx, ...@@ -922,181 +818,87 @@ static int rvu_npa_report_show(struct devlink_fmsg *fmsg, void *ctx,
struct rvu_npa_event_ctx *npa_event_context; struct rvu_npa_event_ctx *npa_event_context;
unsigned int alloc_dis, free_dis; unsigned int alloc_dis, free_dis;
u64 intr_val; u64 intr_val;
int err;
npa_event_context = ctx; npa_event_context = ctx;
switch (health_reporter) { switch (health_reporter) {
case NPA_AF_RVU_GEN: case NPA_AF_RVU_GEN:
intr_val = npa_event_context->npa_af_rvu_gen; intr_val = npa_event_context->npa_af_rvu_gen;
err = rvu_report_pair_start(fmsg, "NPA_AF_GENERAL"); rvu_report_pair_start(fmsg, "NPA_AF_GENERAL");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNPA General Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA General Interrupt Reg ",
npa_event_context->npa_af_rvu_gen); npa_event_context->npa_af_rvu_gen);
if (err) if (intr_val & BIT_ULL(32))
return err; devlink_fmsg_string_put(fmsg, "\n\tUnmap PF Error");
if (intr_val & BIT_ULL(32)) {
err = devlink_fmsg_string_put(fmsg, "\n\tUnmap PF Error");
if (err)
return err;
}
free_dis = FIELD_GET(GENMASK(15, 0), intr_val); free_dis = FIELD_GET(GENMASK(15, 0), intr_val);
if (free_dis & BIT(NPA_INPQ_NIX0_RX)) { if (free_dis & BIT(NPA_INPQ_NIX0_RX))
err = devlink_fmsg_string_put(fmsg, "\n\tNIX0: free disabled RX"); devlink_fmsg_string_put(fmsg, "\n\tNIX0: free disabled RX");
if (err) if (free_dis & BIT(NPA_INPQ_NIX0_TX))
return err; devlink_fmsg_string_put(fmsg, "\n\tNIX0:free disabled TX");
} if (free_dis & BIT(NPA_INPQ_NIX1_RX))
if (free_dis & BIT(NPA_INPQ_NIX0_TX)) { devlink_fmsg_string_put(fmsg, "\n\tNIX1: free disabled RX");
err = devlink_fmsg_string_put(fmsg, "\n\tNIX0:free disabled TX"); if (free_dis & BIT(NPA_INPQ_NIX1_TX))
if (err) devlink_fmsg_string_put(fmsg, "\n\tNIX1:free disabled TX");
return err; if (free_dis & BIT(NPA_INPQ_SSO))
} devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for SSO");
if (free_dis & BIT(NPA_INPQ_NIX1_RX)) { if (free_dis & BIT(NPA_INPQ_TIM))
err = devlink_fmsg_string_put(fmsg, "\n\tNIX1: free disabled RX"); devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for TIM");
if (err) if (free_dis & BIT(NPA_INPQ_DPI))
return err; devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for DPI");
} if (free_dis & BIT(NPA_INPQ_AURA_OP))
if (free_dis & BIT(NPA_INPQ_NIX1_TX)) { devlink_fmsg_string_put(fmsg, "\n\tFree Disabled for AURA");
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;
}
alloc_dis = FIELD_GET(GENMASK(31, 16), intr_val); alloc_dis = FIELD_GET(GENMASK(31, 16), intr_val);
if (alloc_dis & BIT(NPA_INPQ_NIX0_RX)) { if (alloc_dis & BIT(NPA_INPQ_NIX0_RX))
err = devlink_fmsg_string_put(fmsg, "\n\tNIX0: alloc disabled RX"); devlink_fmsg_string_put(fmsg, "\n\tNIX0: alloc disabled RX");
if (err) if (alloc_dis & BIT(NPA_INPQ_NIX0_TX))
return err; devlink_fmsg_string_put(fmsg, "\n\tNIX0:alloc disabled TX");
} if (alloc_dis & BIT(NPA_INPQ_NIX1_RX))
if (alloc_dis & BIT(NPA_INPQ_NIX0_TX)) { devlink_fmsg_string_put(fmsg, "\n\tNIX1: alloc disabled RX");
err = devlink_fmsg_string_put(fmsg, "\n\tNIX0:alloc disabled TX"); if (alloc_dis & BIT(NPA_INPQ_NIX1_TX))
if (err) devlink_fmsg_string_put(fmsg, "\n\tNIX1:alloc disabled TX");
return err; if (alloc_dis & BIT(NPA_INPQ_SSO))
} devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for SSO");
if (alloc_dis & BIT(NPA_INPQ_NIX1_RX)) { if (alloc_dis & BIT(NPA_INPQ_TIM))
err = devlink_fmsg_string_put(fmsg, "\n\tNIX1: alloc disabled RX"); devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for TIM");
if (err) if (alloc_dis & BIT(NPA_INPQ_DPI))
return err; devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for DPI");
} if (alloc_dis & BIT(NPA_INPQ_AURA_OP))
if (alloc_dis & BIT(NPA_INPQ_NIX1_TX)) { devlink_fmsg_string_put(fmsg, "\n\tAlloc Disabled for AURA");
err = devlink_fmsg_string_put(fmsg, "\n\tNIX1:alloc disabled TX");
if (err) rvu_report_pair_end(fmsg);
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;
break; break;
case NPA_AF_RVU_ERR: case NPA_AF_RVU_ERR:
err = rvu_report_pair_start(fmsg, "NPA_AF_ERR"); rvu_report_pair_start(fmsg, "NPA_AF_ERR");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNPA Error Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA Error Interrupt Reg ",
npa_event_context->npa_af_rvu_err); npa_event_context->npa_af_rvu_err);
if (err) if (npa_event_context->npa_af_rvu_err & BIT_ULL(14))
return err; devlink_fmsg_string_put(fmsg, "\n\tFault on NPA_AQ_INST_S read");
if (npa_event_context->npa_af_rvu_err & BIT_ULL(13))
if (npa_event_context->npa_af_rvu_err & BIT_ULL(14)) { devlink_fmsg_string_put(fmsg, "\n\tFault on NPA_AQ_RES_S write");
err = devlink_fmsg_string_put(fmsg, "\n\tFault on NPA_AQ_INST_S read"); if (npa_event_context->npa_af_rvu_err & BIT_ULL(12))
if (err) devlink_fmsg_string_put(fmsg, "\n\tAQ Doorbell Error");
return err; rvu_report_pair_end(fmsg);
}
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;
break; break;
case NPA_AF_RVU_RAS: case NPA_AF_RVU_RAS:
err = rvu_report_pair_start(fmsg, "NPA_AF_RVU_RAS"); rvu_report_pair_start(fmsg, "NPA_AF_RVU_RAS");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNPA RAS Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA RAS Interrupt Reg ",
npa_event_context->npa_af_rvu_ras); npa_event_context->npa_af_rvu_ras);
if (err) if (npa_event_context->npa_af_rvu_ras & BIT_ULL(34))
return err; devlink_fmsg_string_put(fmsg, "\n\tPoison data on NPA_AQ_INST_S");
if (npa_event_context->npa_af_rvu_ras & BIT_ULL(34)) { if (npa_event_context->npa_af_rvu_ras & BIT_ULL(33))
err = devlink_fmsg_string_put(fmsg, "\n\tPoison data on NPA_AQ_INST_S"); devlink_fmsg_string_put(fmsg, "\n\tPoison data on NPA_AQ_RES_S");
if (err) if (npa_event_context->npa_af_rvu_ras & BIT_ULL(32))
return err; devlink_fmsg_string_put(fmsg, "\n\tPoison data on HW context");
} rvu_report_pair_end(fmsg);
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;
break; break;
case NPA_AF_RVU_INTR: case NPA_AF_RVU_INTR:
err = rvu_report_pair_start(fmsg, "NPA_AF_RVU"); rvu_report_pair_start(fmsg, "NPA_AF_RVU");
if (err) devlink_fmsg_u64_pair_put(fmsg, "\tNPA RVU Interrupt Reg ",
return err;
err = devlink_fmsg_u64_pair_put(fmsg, "\tNPA RVU Interrupt Reg ",
npa_event_context->npa_af_rvu_int); npa_event_context->npa_af_rvu_int);
if (err) if (npa_event_context->npa_af_rvu_int & BIT_ULL(0))
return err; devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error");
if (npa_event_context->npa_af_rvu_int & BIT_ULL(0)) { rvu_report_pair_end(fmsg);
err = devlink_fmsg_string_put(fmsg, "\n\tUnmap Slot Error"); break;
if (err)
return err;
}
return rvu_report_pair_end(fmsg);
default: default:
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment