linux/Documentation/networking
Heng Qi f750dfe825 ethtool: provide customized dim profile management
The NetDIM library, currently leveraged by an array of NICs, delivers
excellent acceleration benefits. Nevertheless, NICs vary significantly
in their dim profile list prerequisites.

Specifically, virtio-net backends may present diverse sw or hw device
implementation, making a one-size-fits-all parameter list impractical.
On Alibaba Cloud, the virtio DPU's performance under the default DIM
profile falls short of expectations, partly due to a mismatch in
parameter configuration.

I also noticed that ice/idpf/ena and other NICs have customized
profilelist or placed some restrictions on dim capabilities.

Motivated by this, I tried adding new params for "ethtool -C" that provides
a per-device control to modify and access a device's interrupt parameters.

Usage
========
The target NIC is named ethx.

Assume that ethx only declares support for rx profile setting
(with DIM_PROFILE_RX flag set in profile_flags) and supports modification
of usec and pkt fields.

1. Query the currently customized list of the device

$ ethtool -c ethx
...
rx-profile:
{.usec =   1, .pkts = 256, .comps = n/a,},
{.usec =   8, .pkts = 256, .comps = n/a,},
{.usec =  64, .pkts = 256, .comps = n/a,},
{.usec = 128, .pkts = 256, .comps = n/a,},
{.usec = 256, .pkts = 256, .comps = n/a,}
tx-profile:   n/a

2. Tune
$ ethtool -C ethx rx-profile 1,1,n_2,n,n_3,3,n_4,4,n_n,5,n
"n" means do not modify this field.
$ ethtool -c ethx
...
rx-profile:
{.usec =   1, .pkts =   1, .comps = n/a,},
{.usec =   2, .pkts = 256, .comps = n/a,},
{.usec =   3, .pkts =   3, .comps = n/a,},
{.usec =   4, .pkts =   4, .comps = n/a,},
{.usec = 256, .pkts =   5, .comps = n/a,}
tx-profile:   n/a

3. Hint
If the device does not support some type of customized dim profiles,
the corresponding "n/a" will display.

If the "n/a" field is being modified, -EOPNOTSUPP will be reported.

Signed-off-by: Heng Qi <hengqi@linux.alibaba.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20240621101353.107425-4-hengqi@linux.alibaba.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-06-25 17:15:06 -07:00
..
caif
device_drivers net/mlx5e: SHAMPO, Add header-only ethtool counters for header data split 2024-06-05 20:20:46 -07:00
devlink octeontx2-pf: Add ucast filter count configurability via devlink. 2024-06-21 11:28:47 +01:00
dsa net: dsa: Rename IFLA_DSA_MASTER to IFLA_DSA_CONDUIT 2023-10-24 13:08:14 -07:00
mac80211_hwsim
net_cachelines net: move dev->state into net_device_read_txrx group 2024-03-19 10:47:47 +01:00
netlink_spec Documentation: Document each netlink family 2023-11-24 01:16:56 +00:00
pse-pd net: pse-pd: Add support for PSE PIs 2024-04-18 18:27:33 -07:00
6lowpan.rst
6pack.rst
af_xdp.rst Revert "xsk: Document ability to redirect to any socket bound to the same umem" 2024-06-05 09:43:05 +02:00
alias.rst
arcnet-hardware.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
arcnet.rst
atm.rst
ax25.rst Documentation: netdev: fix dead link in ax25.rst 2023-09-18 12:56:58 +01:00
bareudp.rst
batman-adv.rst batman-adv: Fix mailing list address 2023-01-21 19:01:59 +01:00
bonding.rst bonding: Add independent control state machine 2024-02-06 13:17:54 +01:00
bridge.rst Documentation: update mailing list addresses 2024-02-21 13:44:21 -07:00
can_ucan_protocol.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
can.rst can: bcm: add recvmsg flags for own, local and remote traffic 2024-02-12 16:55:17 +01:00
cdc_mbim.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
checksum-offloads.rst
dccp.rst
dctcp.rst
dns_resolver.rst dns_resolver: correct module name in dns resolver documentation 2024-03-26 10:15:36 +01:00
driver.rst net: docs: update the sample code in driver.rst 2023-04-13 13:30:21 +02:00
eql.rst
ethtool-netlink.rst ethtool: provide customized dim profile management 2024-06-25 17:15:06 -07:00
failover.rst
fib_trie.rst
filter.rst ARC: Add eBPF JIT support 2024-05-12 16:51:36 -07:00
gen_stats.rst
generic_netlink.rst Documentation: networking: Update generic_netlink_howto URL 2022-11-23 17:25:02 -08:00
generic-hdlc.rst
gtp.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
ieee802154.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
ila.rst
index.rst linux-can-next-for-6.11-20240621 2024-06-21 18:06:41 -07:00
ioam6-sysctl.rst
ip_dynaddr.rst
ip-sysctl.rst net: ipv4: Add a sysctl to set multipath hash seed 2024-06-12 16:42:11 -07:00
ipsec.rst
ipv6.rst
ipvlan.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
ipvs-sysctl.rst ipvs: run_estimation should control the kthread tasks 2022-12-10 22:44:43 +01:00
iso15765-2.rst Documentation: networking: document ISO 15765-2 2024-06-20 11:56:22 +02:00
j1939.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
kapi.rst
kcm.rst
l2tp.rst PPPoL2TP: Add more code snippets 2024-02-21 17:13:21 -08:00
lapb-module.rst
mac80211-auth-assoc-deauth.txt
mac80211-injection.rst
mctp.rst mctp: Add SIOCMCTP{ALLOC,DROP}TAG ioctls for tag control 2022-02-09 12:00:11 +00:00
mpls-sysctl.rst
mptcp-sysctl.rst doc: mptcp: alphabetical order 2024-06-01 15:18:01 -07:00
mptcp.rst doc: new 'mptcp' page in 'networking' 2024-06-01 15:18:01 -07:00
msg_zerocopy.rst docs: net: description of MSG_ZEROCOPY for AF_VSOCK 2023-10-15 13:19:42 +01:00
multi-pf-netdev.rst docs: networking: fix indentation errors in multi-pf-netdev 2024-03-14 13:19:27 +01:00
multiqueue.rst
napi.rst docs: net: clarify the NAPI rules around XDP Tx 2023-07-21 18:51:37 -07:00
net_dim.rst ethtool: provide customized dim profile management 2024-06-25 17:15:06 -07:00
net_failover.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
netconsole.rst net: netconsole: Add continuation line prefix to userdata messages 2024-03-11 14:07:57 -07:00
netdev-features.rst
netdevices.rst net: remove stale mentions of dev_base_lock in comments 2024-02-14 11:20:13 +00:00
netfilter-sysctl.rst
netif-msg.rst
nexthop-group-resilient.rst
nf_conntrack-sysctl.rst netfilter: conntrack: documentation: remove reference to non-existent sysctl 2024-05-06 16:29:21 +02:00
nf_flowtable.rst
nfc.rst
openvswitch.rst
operstates.rst
packet_mmap.rst mm, treewide: rename MAX_ORDER to MAX_PAGE_ORDER 2024-01-08 15:27:15 -08:00
page_pool.rst net: page_pool: expose page pool stats via netlink 2023-11-28 15:48:39 +01:00
phonet.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
phy.rst net: phy: introduce core support for phy-mode = "10g-qxgmii" 2024-06-18 13:28:26 +02:00
pktgen.rst pktgen: Introducing 'SHARED' flag for testing with non-shared skb 2023-09-28 16:25:14 +02:00
plip.rst
ppp_generic.rst
proc_net_tcp.rst
radiotap-headers.rst
rds.rst Doc: networking: Fix the title's Sphinx overline in rds.rst 2021-11-29 15:18:21 -07:00
regulatory.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
representors.rst Documentation: Add documentation for eswitch attribute 2024-03-28 18:20:08 -07:00
rxrpc.rst rxrpc: Fix potential race in error handling in afs_make_call() 2023-04-22 15:16:39 +01:00
scaling.rst net: ethtool: add support for symmetric-xor RSS hash 2023-12-13 22:07:16 -08:00
sctp.rst
secid.rst
seg6-sysctl.rst
segmentation-offloads.rst
sfp-phylink.rst doc: sfp-phylink: update the porting guide with PCS handling 2024-03-07 15:27:05 +01:00
skbuff.rst skbuff: render the checksum comment to documentation 2022-05-10 17:48:37 -07:00
smc-sysctl.rst net/smc: add sysctl for max conns per lgr for SMC-R v2.1 2023-11-24 12:13:14 +00:00
snmp_counter.rst docs: automarkup: linkify git revs 2023-11-17 13:13:24 -07:00
sriov.rst docs: net: document guidance of implementing the SR-IOV NDOs 2024-06-21 10:18:45 +01:00
statistics.rst netdev: add per-queue statistics 2024-03-07 21:13:25 -08:00
strparser.rst
switchdev.rst docs: net: add an explanation of VF (and other) Representors 2022-09-21 07:31:38 -07:00
sysfs-tagging.rst Documentation: networking: correct spelling 2023-01-31 13:00:47 +01:00
tc-actions-env-rules.rst
tc-queue-filters.rst Documentation: networking: TC queue based filtering 2022-10-25 10:32:40 +02:00
tcp_ao.rst Documentation/tcp-ao: Add a few lines on tracepoints 2024-06-12 06:39:04 +01:00
tcp-thin.rst
team.rst
timestamping.rst docs: networking: timestamping: mention MSG_EOR flag 2023-12-13 18:19:39 -08:00
tipc.rst
tls-handshake.rst net/handshake: Enable the SNI extension to work properly 2023-05-24 22:05:24 -07:00
tls-offload-layers.svg
tls-offload-reorder-bad.svg
tls-offload-reorder-good.svg
tls-offload.rst
tls.rst tls: rx: add counter for NoPad violations 2022-07-11 19:48:33 -07:00
tproxy.rst
tuntap.rst
udplite.rst
vrf.rst
vxlan.rst
x25-iface.rst docs: networking: fix x25-iface.rst heading & index order 2023-05-10 10:31:46 +01:00
x25.rst
xdp-rx-metadata.rst xdp: Add VLAN tag hint 2023-12-13 16:16:40 -08:00
xfrm_device.rst xfrm: generalize xdo_dev_state_update_curlft to allow statistics update 2024-02-05 16:45:49 -08:00
xfrm_proc.rst xfrm: Add dir validation to "in" data path lookup 2024-05-01 10:06:27 +02:00
xfrm_sync.rst
xfrm_sysctl.rst
xsk-tx-metadata.rst xsk: Add missing SPDX to AF_XDP TX metadata documentation 2023-12-05 15:08:50 +01:00