On 2/7/23 14:58, Jiri Pirko wrote: > Tue, Feb 07, 2023 at 03:42:45PM CET, alejandro.lucero-palau@xxxxxxx wrote: >> 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. > No, I'm wondering why you just don't put error message into exack and > return -ESOMEERROR right away. Well, I thought the idea was to give more information to user space about the problem. Previous patchsets were not reporting any error nor error information through extack. Now we have both. >>> >>>> + } >>>> + >>>> + 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, >>>> }; >>> [...]