mbox series

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

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

Message

Jakub Kicinski Jan. 19, 2025, 2:05 a.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

v2:
 - make sure we always manipulate cfg_pending under rtnl_lock
 - split patch 2 into 2+3 for ease of review
v1: https://lore.kernel.org/20250117194815.1514410-1-kuba@kernel.org

Jakub Kicinski (7):
  net: move HDS config from ethtool state
  net: ethtool: store netdev in a temp variable in
    ethnl_default_set_doit()
  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                         | 30 +++++++++++++++----
 net/ethtool/rings.c                           | 16 ++++++----
 11 files changed, 84 insertions(+), 37 deletions(-)

Comments

Michael Chan Jan. 19, 2025, 5:14 a.m. UTC | #1
On Sat, Jan 18, 2025 at 6:05 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> 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
>
> v2:
>  - make sure we always manipulate cfg_pending under rtnl_lock
>  - split patch 2 into 2+3 for ease of review
> v1: https://lore.kernel.org/20250117194815.1514410-1-kuba@kernel.org

For the series,
Reviewed-by: Michael Chan <michael.chan@broadcom.com>