mbox series

[net-next,v7,0/4] ethtool: provide the dim profile fine-tuning channel

Message ID 20240415093638.123962-1-hengqi@linux.alibaba.com (mailing list archive)
Headers show
Series ethtool: provide the dim profile fine-tuning channel | expand

Message

Heng Qi April 15, 2024, 9:36 a.m. UTC
The NetDIM library provides excellent acceleration for many modern
network cards. However, the default profiles of DIM limits its maximum
capabilities for different NICs, so providing a way which the NIC can
be custom configured is necessary.

Currently, interaction with the driver is still based on the commonly
used "ethtool -C".

Since the profile now exists in netdevice, adding a function similar
to net_dim_get_rx_moderation_dev() with netdevice as argument is
nice, but this would be better along with cleaning up the rest of
the drivers, which we can get to very soon after this set.

Please review, thank you very much!

Changelog
=====
v6->v7:
  - A new wrapper struct pointer is used in struct net_device.
  - Add IS_ENABLED(CONFIG_DIMLIB) to avoid compiler warnings.
  - Profile fields changed from u16 to u32.

v5->v6:
  - Place the profile in netdevice to bypass the driver.
    The interaction code of ethtool <-> kernel has not changed at all,
    only the interaction part of kernel <-> driver has changed.

v4->v5:
  - Update some snippets from Kuba, Thanks.

v3->v4:
  - Some tiny updates and patch 1 only add a new comment.

v2->v3:
  - Break up the attributes to avoid the use of raw c structs.
  - Use per-device profile instead of global profile in the driver.

v1->v2:
  - Use ethtool tool instead of net-sysfs

Heng Qi (4):
  linux/dim: move useful macros to .h file
  ethtool: provide customized dim profile management
  virtio-net: refactor dim initialization/destruction
  virtio-net: support dim profile fine-tuning

 Documentation/netlink/specs/ethtool.yaml     |  33 +++
 Documentation/networking/ethtool-netlink.rst |   8 +
 drivers/net/virtio_net.c                     |  46 +++--
 include/linux/dim.h                          |  13 ++
 include/linux/ethtool.h                      |  11 +-
 include/linux/netdevice.h                    |  24 +++
 include/uapi/linux/ethtool_netlink.h         |  24 +++
 lib/dim/net_dim.c                            |  10 +-
 net/core/dev.c                               |  83 ++++++++
 net/ethtool/coalesce.c                       | 199 ++++++++++++++++++-
 10 files changed, 428 insertions(+), 23 deletions(-)

Comments

Heng Qi April 15, 2024, 1:35 p.m. UTC | #1
Please ignore this set, "RESEND v7" will be used instead.

在 2024/4/15 下午5:36, Heng Qi 写道:
> The NetDIM library provides excellent acceleration for many modern
> network cards. However, the default profiles of DIM limits its maximum
> capabilities for different NICs, so providing a way which the NIC can
> be custom configured is necessary.
>
> Currently, interaction with the driver is still based on the commonly
> used "ethtool -C".
>
> Since the profile now exists in netdevice, adding a function similar
> to net_dim_get_rx_moderation_dev() with netdevice as argument is
> nice, but this would be better along with cleaning up the rest of
> the drivers, which we can get to very soon after this set.
>
> Please review, thank you very much!
>
> Changelog
> =====
> v6->v7:
>    - A new wrapper struct pointer is used in struct net_device.
>    - Add IS_ENABLED(CONFIG_DIMLIB) to avoid compiler warnings.
>    - Profile fields changed from u16 to u32.
>
> v5->v6:
>    - Place the profile in netdevice to bypass the driver.
>      The interaction code of ethtool <-> kernel has not changed at all,
>      only the interaction part of kernel <-> driver has changed.
>
> v4->v5:
>    - Update some snippets from Kuba, Thanks.
>
> v3->v4:
>    - Some tiny updates and patch 1 only add a new comment.
>
> v2->v3:
>    - Break up the attributes to avoid the use of raw c structs.
>    - Use per-device profile instead of global profile in the driver.
>
> v1->v2:
>    - Use ethtool tool instead of net-sysfs
>
> Heng Qi (4):
>    linux/dim: move useful macros to .h file
>    ethtool: provide customized dim profile management
>    virtio-net: refactor dim initialization/destruction
>    virtio-net: support dim profile fine-tuning
>
>   Documentation/netlink/specs/ethtool.yaml     |  33 +++
>   Documentation/networking/ethtool-netlink.rst |   8 +
>   drivers/net/virtio_net.c                     |  46 +++--
>   include/linux/dim.h                          |  13 ++
>   include/linux/ethtool.h                      |  11 +-
>   include/linux/netdevice.h                    |  24 +++
>   include/uapi/linux/ethtool_netlink.h         |  24 +++
>   lib/dim/net_dim.c                            |  10 +-
>   net/core/dev.c                               |  83 ++++++++
>   net/ethtool/coalesce.c                       | 199 ++++++++++++++++++-
>   10 files changed, 428 insertions(+), 23 deletions(-)
>