Implement support for devlink traps on per-port basis. Dropped packets in the RX flow are related to the Ethernet port and thus should be in port context. Traps per device should trap global configuration which can cause drops. On top of that, enabling a trap on a device level should trigger this trap on its siblings ports. In addition, when devlink traps is enabled, it may cause a degradation in performance. Hence devlink traps should be regard as a debug mode. Considering that, it is preferred to encapsulate the debug mode as much as possible and not to effect all the device.
Patchset: Patch 1: Refactors devlink trap for easier code re-use in the coming patches Patch 2: Adds devlink traps under devlink port context Patch 3: Adds a relation between traps in device context and traps in ports context. In a nutshell it allows enable/disable of a trap on all related ports which registered this trap. Patch 4: Display a use in devlink traps in port context in mlx5 ethernet driver. Aya Levin (4): devlink: Wrap trap related lists and ops in trap_mngr devlink: Add devlink traps under devlink_ports context devlink: Add hiererchy between traps in device level and port level net/mlx5e: Add devlink trap to catch oversize packets drivers/net/ethernet/mellanox/mlx5/core/Makefile | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 + drivers/net/ethernet/mellanox/mlx5/core/en/traps.c | 32 ++ drivers/net/ethernet/mellanox/mlx5/core/en/traps.h | 13 + drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 41 ++ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 11 +- drivers/net/ethernet/mellanox/mlxsw/core.c | 5 + include/net/devlink.h | 84 ++- net/core/devlink.c | 616 +++++++++++++++++---- 9 files changed, 665 insertions(+), 141 deletions(-) create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/traps.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/traps.h -- 2.14.1