Subject: [RFC PATCH v2 net-next 0/7] ethtool: track custom RSS contexts in the core

From: <[email-masked]>
Date: Tue, 11 Apr 2023 19:26:08 +0100

From: Edward Cree <[email-masked]>

Make the core responsible for tracking the set of custom RSS contexts,
 their IDs, indirection tables, hash keys, and hash functions; this
 lets us get rid of duplicative code in drivers, and will allow us to
 support netlink dumps later.

This series only moves the sfc EF10 & EF100 driver over to the new API; if
 the design is approved of, I plan to post a follow-up series to convert the
 other drivers and remove the legacy API.  (However, I don't have hardware
 for the drivers besides sfc, so I won't be able to test those myself.)

Edward Cree (7):
  net: move ethtool-related netdev state into its own struct
  net: ethtool: attach an IDR of custom RSS contexts to a netdevice
  net: ethtool: record custom RSS contexts in the IDR
  net: ethtool: let the core choose RSS context IDs
  net: ethtool: add an extack parameter to new rxfh_context APIs
  net: ethtool: add a mutex protecting RSS contexts
  sfc: use new rxfh_context API

 drivers/net/ethernet/realtek/r8169_main.c |   4 +-
 drivers/net/ethernet/sfc/ef10.c           |   2 +-
 drivers/net/ethernet/sfc/ef100_ethtool.c  |   5 +-
 drivers/net/ethernet/sfc/efx.c            |   2 +-
 drivers/net/ethernet/sfc/efx.h            |   2 +-
 drivers/net/ethernet/sfc/efx_common.c     |  10 +-
 drivers/net/ethernet/sfc/ethtool.c        |   5 +-
 drivers/net/ethernet/sfc/ethtool_common.c | 147 +++++++++++++---------
 drivers/net/ethernet/sfc/ethtool_common.h |  18 ++-
 drivers/net/ethernet/sfc/mcdi_filters.c   | 133 ++++++++++----------
 drivers/net/ethernet/sfc/mcdi_filters.h   |   8 +-
 drivers/net/ethernet/sfc/net_driver.h     |  28 ++---
 drivers/net/ethernet/sfc/rx_common.c      |  64 ++--------
 drivers/net/ethernet/sfc/rx_common.h      |   8 +-
 drivers/net/phy/phy.c                     |   2 +-
 drivers/net/phy/phy_device.c              |   4 +-
 drivers/net/phy/phylink.c                 |   2 +-
 include/linux/ethtool.h                   | 109 +++++++++++++++-
 include/linux/netdevice.h                 |   7 +-
 net/core/dev.c                            |  38 ++++++
 net/ethtool/ioctl.c                       | 124 ++++++++++++++++--
 net/ethtool/wol.c                         |   2 +-
 22 files changed, 484 insertions(+), 240 deletions(-)