PCIe congestion events are events generated by the firmware when the device side has sustained PCIe inbound or outbound traffic above certain thresholds. The high and low threshold are hysteresis thresholds to prevent flapping: once the high threshold has been reached, a low threshold event will be triggered only after the bandwidth usage went below the low threshold. This series adds support for receiving and exposing such events as ethtool counters. 2 new pairs of counters are exposed: pci_bw_in/outbound_high/low. These should help the user understand if the device PCI is under pressure. The thresholds are configurable via sysfs. Dragos Tatulea (5): net/mlx5: Small refactor for general object capabilities net/mlx5: Add IFC bits for PCIe Congestion Event object net/mlx5e: Create/destroy PCIe Congestion Event object net/mlx5e: Add device PCIe congestion ethtool stats net/mlx5e: Make PCIe congestion event thresholds configurable .../ethernet/mellanox/mlx5/counters.rst | 32 ++ .../net/ethernet/mellanox/mlx5/core/Makefile | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 + .../mellanox/mlx5/core/en/pcie_cong_event.c | 464 ++++++++++++++++++ .../mellanox/mlx5/core/en/pcie_cong_event.h | 11 + .../net/ethernet/mellanox/mlx5/core/en_main.c | 3 + .../ethernet/mellanox/mlx5/core/en_stats.c | 1 + .../ethernet/mellanox/mlx5/core/en_stats.h | 1 + drivers/net/ethernet/mellanox/mlx5/core/eq.c | 4 + include/linux/mlx5/mlx5_ifc.h | 67 ++- 10 files changed, 575 insertions(+), 12 deletions(-) create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/pcie_cong_event.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/pcie_cong_event.h base-commit: d3623dd5bd4e1fc9acfc08dd0064658bbbf1e8de -- 2.34.1