Add a basic set of tracepoints to the switchdev layer that allows us to monitor all messages being passed between a bridge and the devices attached to it. Deferred operations are additionally traced at the time they are enqueued. This is useful in situations where we want to inspect the conditions that lead to that message being generated, by looking at a stacktrace for example. Start off (1-2/4) by creating stringifiers for common switchdev objects. This will primarily be used by the tracepoints for decoding switchdev notifications, but drivers could also make use of them to provide richer debug/error messages. Then (3/4) create a common function through which all replay calls pass, to create a natural point of instrumentation, before adding the tracepoints themselves (4/4). v2 -> v3: Take a more conservative approach to the refactoring of switchdev.c. In the end, I don't know that my previous attempt really improved the situation much. v1 -> v2: - Fixup kernel-doc comment for switchdev_call_replay Tobias Waldekranz (4): net: switchdev: Wrap enums in mapper macros net: switchdev: Add helpers to display switchdev objects as strings net: switchdev: Relay all replay messages through a central function net: switchdev: Add tracepoints include/net/switchdev.h | 130 ++++++++++----- include/trace/events/switchdev.h | 74 ++++++++ net/bridge/br_switchdev.c | 10 +- net/switchdev/Makefile | 2 +- net/switchdev/switchdev-str.c | 278 +++++++++++++++++++++++++++++++ net/switchdev/switchdev.c | 87 +++++++++- 6 files changed, 521 insertions(+), 60 deletions(-) create mode 100644 include/trace/events/switchdev.h create mode 100644 net/switchdev/switchdev-str.c -- 2.34.1