mbox series

[v5,net-next,0/6] Add tx push buf len param to ethtool

Message ID 20230316142706.4046263-1-shayagr@amazon.com (mailing list archive)
Headers show
Series Add tx push buf len param to ethtool | expand

Message

Shay Agroskin March 16, 2023, 2:27 p.m. UTC
Changed since v4:
- Added advertisement for tx-push-mode in ENA driver
- Modified the documentation to make the distinction from
  tx-copybreak clearer

Changes since v3:
- Removed RFC tag and added a Jakub's signoff on one of the first patch

Changes since v2:
- Added a check that the driver advertises support for TX push buffer
  instead of defaulting the response to 0.
- Moved cosmetic changes to their own commits
- Removed usage of gotos which goes against Linux coding style
- Make ENA driver reject an attempt to configure TX push buffer when
  it's not supported (no LLQ is used)

Changes since v1:
- Added the new ethtool param to generic netlink specs
- Dropped dynamic advertisement of tx push buff support in ENA.
  The driver will advertise it for all platforms

This patchset adds a new sub-configuration to ethtool get/set queue
params (ethtool -g) called 'tx-push-buf-len'.

This configuration specifies the maximum number of bytes of a
transmitted packet a driver can push directly to the underlying
device ('push' mode). The motivation for pushing some of the bytes to
the device has the advantages of

- Allowing a smart device to take fast actions based on the packet's
  header
- Reducing latency for small packets that can be copied completely into
  the device

This new param is practically similar to tx-copybreak value that can be
set using ethtool's tunable but conceptually serves a different purpose.
While tx-copybreak is used to reduce the overhead of DMA mapping and
makes no sense to use if less than the whole segment gets copied,
tx-push-buf-len allows to improve performance by analyzing the packet's
data (usually headers) before performing the DMA operation.

The configuration can be queried and set using the commands:

    $ ethtool -g [interface]

    # ethtool -G [interface] tx-push-buf-len [number of bytes]

This patchset also adds support for the new configuration in ENA driver
for which this parameter ensures efficient resources management on the
device side.

David Arinzon (1):
  net: ena: Add an option to configure large LLQ headers

Shay Agroskin (5):
  ethtool: Add support for configuring tx_push_buf_len
  net: ena: Make few cosmetic preparations to support large LLQ
  net: ena: Recalculate TX state variables every device reset
  net: ena: Add support to changing tx_push_buf_len
  net: ena: Advertise TX push support

 Documentation/netlink/specs/ethtool.yaml      |   8 +
 Documentation/networking/ethtool-netlink.rst  |  47 ++--
 drivers/net/ethernet/amazon/ena/ena_eth_com.h |   4 +
 drivers/net/ethernet/amazon/ena/ena_ethtool.c |  66 ++++-
 drivers/net/ethernet/amazon/ena/ena_netdev.c  | 259 +++++++++++-------
 drivers/net/ethernet/amazon/ena/ena_netdev.h  |  15 +-
 include/linux/ethtool.h                       |  14 +-
 include/uapi/linux/ethtool_netlink.h          |   2 +
 net/ethtool/netlink.h                         |   2 +-
 net/ethtool/rings.c                           |  33 ++-
 10 files changed, 326 insertions(+), 124 deletions(-)

Comments

Michal Kubiak March 16, 2023, 7:59 p.m. UTC | #1
On Thu, Mar 16, 2023 at 04:27:00PM +0200, Shay Agroskin wrote:
> Changed since v4:
> - Added advertisement for tx-push-mode in ENA driver
> - Modified the documentation to make the distinction from
>   tx-copybreak clearer
> 
> Changes since v3:
> - Removed RFC tag and added a Jakub's signoff on one of the first patch
> 
> Changes since v2:
> - Added a check that the driver advertises support for TX push buffer
>   instead of defaulting the response to 0.
> - Moved cosmetic changes to their own commits
> - Removed usage of gotos which goes against Linux coding style
> - Make ENA driver reject an attempt to configure TX push buffer when
>   it's not supported (no LLQ is used)
> 
> Changes since v1:
> - Added the new ethtool param to generic netlink specs
> - Dropped dynamic advertisement of tx push buff support in ENA.
>   The driver will advertise it for all platforms
> 
> This patchset adds a new sub-configuration to ethtool get/set queue
> params (ethtool -g) called 'tx-push-buf-len'.
> 
> This configuration specifies the maximum number of bytes of a
> transmitted packet a driver can push directly to the underlying
> device ('push' mode). The motivation for pushing some of the bytes to
> the device has the advantages of
> 
> - Allowing a smart device to take fast actions based on the packet's
>   header
> - Reducing latency for small packets that can be copied completely into
>   the device
> 
> This new param is practically similar to tx-copybreak value that can be
> set using ethtool's tunable but conceptually serves a different purpose.
> While tx-copybreak is used to reduce the overhead of DMA mapping and
> makes no sense to use if less than the whole segment gets copied,
> tx-push-buf-len allows to improve performance by analyzing the packet's
> data (usually headers) before performing the DMA operation.
> 
> The configuration can be queried and set using the commands:
> 
>     $ ethtool -g [interface]
> 
>     # ethtool -G [interface] tx-push-buf-len [number of bytes]
> 
> This patchset also adds support for the new configuration in ENA driver
> for which this parameter ensures efficient resources management on the
> device side.
> 
> David Arinzon (1):
>   net: ena: Add an option to configure large LLQ headers
> 
> Shay Agroskin (5):
>   ethtool: Add support for configuring tx_push_buf_len
>   net: ena: Make few cosmetic preparations to support large LLQ
>   net: ena: Recalculate TX state variables every device reset
>   net: ena: Add support to changing tx_push_buf_len
>   net: ena: Advertise TX push support
> 
>  Documentation/netlink/specs/ethtool.yaml      |   8 +
>  Documentation/networking/ethtool-netlink.rst  |  47 ++--
>  drivers/net/ethernet/amazon/ena/ena_eth_com.h |   4 +
>  drivers/net/ethernet/amazon/ena/ena_ethtool.c |  66 ++++-
>  drivers/net/ethernet/amazon/ena/ena_netdev.c  | 259 +++++++++++-------
>  drivers/net/ethernet/amazon/ena/ena_netdev.h  |  15 +-
>  include/linux/ethtool.h                       |  14 +-
>  include/uapi/linux/ethtool_netlink.h          |   2 +
>  net/ethtool/netlink.h                         |   2 +-
>  net/ethtool/rings.c                           |  33 ++-
>  10 files changed, 326 insertions(+), 124 deletions(-)
> 

The series looks very good to me.

Thanks,
Michal

For the series.
Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>

> -- 
> 2.25.1
>