Apart from some related cleanup patches, this set introduces in a straightforward way the support needed to enable and configure interrupt coalescing for ENETC.
Patch 5 introduces the support needed for configuring the interrupt coalescing parameters and for switching between moderated (int. coalescing) and per-packet interrupt modes. When interrupt coalescing is enabled the Rx/Tx time thresholds are configurable, packet thresholds are fixed. To make this work reliably, patch 5 uses the traffic pause procedure introduced in patch 2. Patch 6 adds DIM (Dynamic Interrupt Moderation) to implement adaptive coalescing based on time thresholds, for the Rx 'channel'. On the Tx side a default optimal value is used instead, optimized for TCP traffic over 1G and 2.5G links. This default 'optimal' value can be overridden anytime via 'ethtool -C tx-usecs'. netperf -t TCP_MAERTS measurements show a significant CPU load reduction correlated w/ reduced interrupt rates. For the measurement results refer to the comments in patch 6. v2: Replaced Tx DIM with predefined optimal value, giving better results. This was also suggested by Jakub (cc). Switched order of patches 4 and 5, for better grouping. Claudiu Manoil (6): enetc: Refine buffer descriptor ring sizes enetc: Factor out the traffic start/stop procedures enetc: Fix interrupt coalescing register naming enetc: Drop redundant ____cacheline_aligned_in_smp enetc: Add interrupt coalescing support enetc: Add adaptive interrupt coalescing drivers/net/ethernet/freescale/enetc/Kconfig | 2 + drivers/net/ethernet/freescale/enetc/enetc.c | 156 ++++++++++++++---- drivers/net/ethernet/freescale/enetc/enetc.h | 37 ++++- .../ethernet/freescale/enetc/enetc_ethtool.c | 91 +++++++++- .../net/ethernet/freescale/enetc/enetc_hw.h | 23 ++- 5 files changed, 265 insertions(+), 44 deletions(-) -- 2.17.1