On tor, feb 01, 2024 at 20:49, Jakub Kicinski <kuba@xxxxxxxxxx> wrote: > On Tue, 30 Jan 2024 21:19:34 +0100 Tobias Waldekranz wrote: >> Useful both in error messages and in tracepoints. > > Are you printing things together into one big string? > Seems like leaving a lot of features on the table. > trace point events can be filtered, not to mention attaching > to them with bpftrace. My thinking was that __entry->msg was mostly for use by the tracepoint's printf, and that if you are using some dynamic tracer, __entry->info points to the verbatim notification which you can use to apply arbitrary filtering. > There's also a built-in way to show traces how to convert numerical ids > to strings for the basic output - __print_symbolic(). > None of that can help here? Originally, I did use it to display the `val` argument to the tracepoint, but the problem with that macro is that it wants the mapping table as an inline list of tuples, and the list must _not_ include a trailing comma. This means that SWITCHDEV_TYPE_MAPPER can't use the trailing-comment-after-the-last-item trick, which introduced an asymmetry with the other mappers that I did not like. At first, I thought about adding some variant of __print_symbolic that would take a pointer to an existing table instead. Then I realized that I would still need some separate stringer helper to put together the rest of the printed message from the TLV-ish layout of switchdev_notifier_info. At that point, it seems more reasonable to just collect all logic of turning switchdev related structs into strings in one place - with the added benefit that drivers could use them to log richer error messages.