On Sun, Nov 5, 2017 at 9:44 PM, Andy Gospodarek <a...@greyhouse.net> wrote: > From: Andy Gospodarek <go...@broadcom.com> > > This RFC converts the adaptive interrupt moderation library from the > mlx5_en driver into a library so it can be used by any driver. The last > patch in this set adds support for interrupt moderation in the bnxt_en > driver. > > 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 > > My main reason for making this an RFC is that I would like verification > from Mellanox that the performance of their driver does not change in a > unintended way. I did some basic testing (netperf) and did not note a > statistically significant change in throughput or CPU utilization before > and after this set. >
Hi Andy, Are you at netdev conf this week ? Achiad and Tal (the inventors of mlx5 adaptive moderation) and I, will be in Seoul this week. So if you are joining the conference then it will be a good opportunity to sit and talk F2F. > Credit to Rob Rice and Lee Reed for doing some of the initial proof of > concept and testing for this patch. > > Andy Gospodarek (9): > mlx5_en: move interrupt moderation structs to new file > mlx5_en: move interrupt moderation forward delcarations > mlx5_en: remove rq references in mlx5e_rx_am > mlx5_en: move AM logic enums > mlx5_en: move generic functions to new file > mlx5_en: rename en_rx_am.h to net_rx_am.h > mlx5_en: remove Mellanox references in AM code > net: move adaptive interrpt coalescing code to lib/ > bnxt_en: add support for software adaptive interrupt moderation > > drivers/net/ethernet/broadcom/bnxt/Makefile | 2 +- > drivers/net/ethernet/broadcom/bnxt/bnxt.c | 51 ++++ > drivers/net/ethernet/broadcom/bnxt/bnxt.h | 34 ++- > drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 7 + > drivers/net/ethernet/broadcom/bnxt/bnxt_rx_am.c | 32 +++ > drivers/net/ethernet/mellanox/mlx5/core/en.h | 43 +-- > .../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 6 +- > drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 18 +- > drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 4 +- > drivers/net/ethernet/mellanox/mlx5/core/en_rx_am.c | 298 +------------------- > drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 5 +- > include/linux/mlx5/mlx5_ifc.h | 6 - > include/linux/net_rx_am.h | 109 ++++++++ > lib/Makefile | 2 +- > lib/net_rx_am.c | 306 > +++++++++++++++++++++ > 15 files changed, 558 insertions(+), 365 deletions(-) > create mode 100644 drivers/net/ethernet/broadcom/bnxt/bnxt_rx_am.c > create mode 100644 include/linux/net_rx_am.h > create mode 100644 lib/net_rx_am.c > > -- > 2.7.4 >