• Vladimir Oltean's avatar
    net: dsa: add trace points for FDB/MDB operations · 9538ebce
    Vladimir Oltean authored
    DSA performs non-trivial housekeeping of unicast and multicast addresses
    on shared (CPU and DSA) ports, and puts a bit of pressure on higher
    layers, requiring them to behave correctly (remove these addresses
    exactly as many times as they were added). Otherwise, either addresses
    linger around forever, or DSA returns -ENOENT complaining that entries
    that were already deleted must be deleted again.
    
    To aid debugging, introduce some trace points specifically for FDB and
    MDB - that's where some of the bugs still are right now.
    
    Some bugs I have seen were also due to race conditions, see:
    - 630fd482 ("net: dsa: flush switchdev workqueue on bridge join error path")
    - a2614140 ("net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN")
    
    so it would be good to not disturb the timing too much, hence the choice
    to use trace points vs regular dev_dbg().
    
    I've had these for some time on my computer in a less polished form, and
    they've proven useful. What I found most useful was to enable
    CONFIG_BOOTTIME_TRACING, add "trace_event=dsa" to the kernel cmdline,
    and run "cat /sys/kernel/debug/tracing/trace". This is to debug more
    complex environments with network managers started by the init system,
    things like that.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9538ebce
trace.c 769 Bytes