On 2/2/23 11:58, Jiri Pirko wrote: > Thu, Feb 02, 2023 at 12:14:17PM CET, alejandro.lucero-palau@xxxxxxx wrote: >> From: Alejandro Lucero <alejandro.lucero-palau@xxxxxxx> >> >> Support for devlink info command. > You are quite brief for couple hundred line patch. Care to shed some > more details for the reader? Also, use imperative mood (applies to the > rest of the pathes) > > [...] > OK. I'll be more talkative and imperative here. >> +static int efx_devlink_info_get(struct devlink *devlink, >> + struct devlink_info_req *req, >> + struct netlink_ext_ack *extack) >> +{ >> + struct efx_devlink *devlink_private = devlink_priv(devlink); >> + struct efx_nic *efx = devlink_private->efx; >> + char msg[NETLINK_MAX_FMTMSG_LEN]; >> + int errors_reported = 0; >> + int rc; >> + >> + /* Several different MCDI commands are used. We report first error >> + * through extack along with total number of errors. Specific error >> + * information via system messages. >> + */ >> + rc = efx_devlink_info_board_cfg(efx, req); >> + if (rc) { >> + sprintf(msg, "Getting board info failed"); >> + errors_reported++; >> + } >> + rc = efx_devlink_info_stored_versions(efx, req); >> + if (rc) { >> + if (!errors_reported) >> + sprintf(msg, "Getting stored versions failed"); >> + errors_reported += rc; >> + } >> + rc = efx_devlink_info_running_versions(efx, req); >> + if (rc) { >> + if (!errors_reported) >> + sprintf(msg, "Getting board info failed"); >> + errors_reported++; > > Under which circumstances any of the errors above happen? Is it a common > thing? Or is it result of some fatal event? They are not common at all. If any of those happen, it is a bad sign, and it is more than likely there are more than one because something is not working properly. That is the reason I only report first error found plus the total number of errors detected. > > You treat it like it is quite common, which seems very odd to me. > If they are rare, just return error right away to the caller. Well, that is done now. And as I say, I'm not reporting all but just the first one, mainly because the buffer limitation with NETLINK_MAX_FMTMSG_LEN. If errors trigger, a more complete information will appear in system messages, so that is the reason with: + NL_SET_ERR_MSG_FMT(extack, + "%s. %d total errors. Check system messages", + msg, errors_reported); I guess you are concerned with the extack report being overwhelmed, but I do not think that is the case. > > >> + } >> + >> + if (errors_reported) >> + NL_SET_ERR_MSG_FMT(extack, >> + "%s. %d total errors. Check system messages", >> + msg, errors_reported); >> + return 0; >> +} >> + >> static const struct devlink_ops sfc_devlink_ops = { >> + .info_get = efx_devlink_info_get, >> }; > [...]