From: Ido Schimmel <ido...@nvidia.com> Drop monitor is able to monitor both software and hardware originated drops. Software drops are monitored by having drop monitor register its probe on the 'kfree_skb' tracepoint. Hardware originated drops are monitored by having devlink call into drop monitor whenever it receives a dropped packet from the underlying hardware.
This patch set converts drop monitor to monitor both software and hardware originated drops in the same way - by registering its probe on the relevant tracepoint. In addition to drop monitor being more consistent, it is now also possible to build drop monitor as module instead of as a builtin and still monitor hardware originated drops. Initially, CONFIG_NET_DEVLINK implied CONFIG_NET_DROP_MONITOR, but after commit def2fbffe62c ("kconfig: allow symbols implied by y to become m") we can have CONFIG_NET_DEVLINK=y and CONFIG_NET_DROP_MONITOR=m and hardware originated drops will not be monitored. Patch set overview: Patch #1 adds a tracepoint in devlink for trap reports. Patch #2 prepares probe functions in drop monitor for the new tracepoint. Patch #3 converts drop monitor to use the new tracepoint. Patches #4-#6 perform cleanups after the conversion. Patch #7 adds a test case for drop monitor. Both software originated drops and hardware originated drops (using netdevsim) are tested. Tested: | CONFIG_NET_DEVLINK | CONFIG_NET_DROP_MONITOR | Build | SW drops | HW drops | | -------------------|-------------------------|-------|----------|----------| | y | y | v | v | v | | y | m | v | v | v | | y | n | v | x | x | | n | y | v | v | x | | n | m | v | v | x | | n | n | v | x | x | Ido Schimmel (7): devlink: Add a tracepoint for trap reports drop_monitor: Prepare probe functions for devlink tracepoint drop_monitor: Convert to using devlink tracepoint drop_monitor: Remove no longer used functions drop_monitor: Remove duplicate struct drop_monitor: Filter control packets in drop monitor selftests: net: Add drop monitor test MAINTAINERS | 1 - include/net/devlink.h | 16 ++ include/net/drop_monitor.h | 36 --- include/trace/events/devlink.h | 37 +++ net/Kconfig | 1 - net/core/devlink.c | 37 ++- net/core/drop_monitor.c | 133 ++++++----- tools/testing/selftests/net/Makefile | 1 + tools/testing/selftests/net/config | 3 + .../selftests/net/drop_monitor_tests.sh | 215 ++++++++++++++++++ 10 files changed, 368 insertions(+), 112 deletions(-) delete mode 100644 include/net/drop_monitor.h create mode 100755 tools/testing/selftests/net/drop_monitor_tests.sh -- 2.26.2