mbox series

[net-next,0/6] net: ethtool: fixes for HDS threshold

Message ID 20250117194815.1514410-1-kuba@kernel.org (mailing list archive)
Headers show
Series net: ethtool: fixes for HDS threshold | expand

Message

Jakub Kicinski Jan. 17, 2025, 7:48 p.m. UTC
Quick follow up on the HDS threshold work, since the merge window
is upon us.

Fix the bnxt implementation to apply the settings right away,
because we update the parameters _after_ configuring HW user
needed to reconfig the device twice to get the settings to stick.

For this I took the liberty of moving the config to a separate
struct. This follows my original thinking for the queue API.
It should also fit more neatly into how many drivers which
support safe config update operate. Drivers can allocate
new objects using the "pending" struct.

netdevsim:

  KTAP version 1
  1..7
  ok 1 hds.get_hds
  ok 2 hds.get_hds_thresh
  ok 3 hds.set_hds_disable
  ok 4 hds.set_hds_enable
  ok 5 hds.set_hds_thresh_zero
  ok 6 hds.set_hds_thresh_max
  ok 7 hds.set_hds_thresh_gt
  # Totals: pass:7 fail:0 xfail:0 xpass:0 skip:0 error:0

bnxt:

  KTAP version 1
  1..7
  ok 1 hds.get_hds
  ok 2 hds.get_hds_thresh
  ok 3 hds.set_hds_disable # SKIP disabling of HDS not supported by the device
  ok 4 hds.set_hds_enable
  ok 5 hds.set_hds_thresh_zero
  ok 6 hds.set_hds_thresh_max
  ok 7 hds.set_hds_thresh_gt
  # Totals: pass:6 fail:0 xfail:0 xpass:0 skip:1 error:0


Jakub Kicinski (6):
  net: move HDS config from ethtool state
  net: provide pending ring configuration in net_device
  eth: bnxt: apply hds_thrs settings correctly
  net: ethtool: populate the default HDS params in the core
  eth: bnxt: allocate enough buffer space to meet HDS threshold
  eth: bnxt: update header sizing defaults

 include/linux/ethtool.h                       |  4 ----
 include/linux/netdevice.h                     |  9 ++++++++
 include/net/netdev_queues.h                   | 10 +++++++++
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 16 +++++++++-----
 .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c |  4 ++--
 drivers/net/netdevsim/ethtool.c               |  6 +----
 drivers/net/netdevsim/netdev.c                | 10 ++++-----
 net/core/dev.c                                | 12 ++++++++--
 net/core/devmem.c                             |  4 ++--
 net/ethtool/netlink.c                         | 22 ++++++++++++++++---
 net/ethtool/rings.c                           | 16 +++++++++-----
 11 files changed, 79 insertions(+), 34 deletions(-)