Re: [net-next 00/10] net: create dynamic software irq moderation library

Saeed Mahameed
2018-01-04T21:37:27Z

On 1/4/2018 12:21 PM, Andy Gospodarek wrote:
> From: Andy Gospodarek <gospo@broadcom.com>
>
> This converts the dynamic interrupt moderation library from the mlx5_en driver
> into a library so it can be used by any driver. The penultimatepatch in this
> set adds support for interrupt moderation in the bnxt_en driver and the last
> patch creates an entry in the MAINTAINERS file.
>
> The main purpose of this code in the mlx5_en driver is to allow an
> administrator to make sure that default coalesce settings are optimized
> for low latency, but quickly adapt to handle high throughput traffic and
> optimize how many packets are received during each napi poll.
>
> For any new driver the following changes would be needed to use this
> library:
>
> - add elements in ring struct to track items needed by this library
> - create function that can be called to actually set coalesce settings
> for the driver
>
> Credit to Rob Rice and Lee Reed for doing some of the initial proof of
> concept and testing for this patch and Tal Gilboa and Or Gerlitz for their
> comments, etc on this set.
> > Andy Gospodarek (10):
> net/mlx5e: move interrupt moderation structs to new file
> net/mlx5e: move interrupt moderation forward declarations
> net/mlx5e: remove rq references in mlx5e_rx_am
> net/mlx5e: move AM logic enums
> net/mlx5e: move generic functions to new file
> net/mlx5e: change Mellanox references in DIM code
> net: move dynamic interrpt coalescing code to include/linux
> net/dim: use struct net_dim_sample as arg to net_dim
> bnxt_en: add support for software dynamic interrupt moderation
> MAINTAINERS: add entry for Dynamic Interrupt Moderation

Very clean and nice work!
Thank you Andy for following my suggestion of changing the API to be
static inline helper functions instead of function pointers provided by
device drivers, the current API is less demanding for the device drivers
and has no performance impact.

Awesome work.

Acked-by: Saeed Mahameed <saeedm@mellanox.com>

>
> MAINTAINERS | 5 +
> drivers/net/ethernet/broadcom/bnxt/Makefile | 2 +-
> drivers/net/ethernet/broadcom/bnxt/bnxt.c | 52 +++
> drivers/net/ethernet/broadcom/bnxt/bnxt.h | 34 +-
> drivers/net/ethernet/broadcom/bnxt/bnxt_dim.c | 32 ++
> drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 12 +
> drivers/net/ethernet/mellanox/mlx5/core/Makefile | 2 +-
> drivers/net/ethernet/mellanox/mlx5/core/en.h | 46 +--
> drivers/net/ethernet/mellanox/mlx5/core/en_dim.c | 49 +++
> .../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 12 +-
> drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 32 +-
> drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 4 +-
> drivers/net/ethernet/mellanox/mlx5/core/en_rx_am.c | 341 -------------------

Goodbye mlx5/core/en_rx_am.c :)

> drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 10 +-
> drivers/net/ethernet/mellanox/mlx5/core/net_dim.h | 108 ++++++
> include/linux/mlx5/mlx5_ifc.h | 6 -
> include/linux/net_dim.h | 372 +++++++++++++++++++++
> 17 files changed, 693 insertions(+), 426 deletions(-)
> create mode 100644 drivers/net/ethernet/broadcom/bnxt/bnxt_dim.c
> create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_dim.c
> delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_rx_am.c
> create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/net_dim.h
> create mode 100644 include/linux/net_dim.h
>