From patchwork Tue Jun 18 02:56:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heng Qi X-Patchwork-Id: 13701711 Received: from out30-99.freemail.mail.aliyun.com (out30-99.freemail.mail.aliyun.com [115.124.30.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40C2B19ADAF; Tue, 18 Jun 2024 02:56:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718679412; cv=none; b=rATU/OuTTmDIcqrWKBzDFzvuyDArCZ1YPoUhkuS25aO5igo5/yvtjqk+5lyLdiS5zer/WlOeNvRGxA3E+3vmg7os3cYv1o2IQgHWKYtuTcg4TiQTv6xY8cEAsYrNSx/DDGmnqRnAi9GDG/Esu5+Bd8k/AekXC0zsp9wguunhnG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718679412; c=relaxed/simple; bh=+MshPmHblm6iM9NgyporGfSjNK0JnormQPLXJUQ0jDI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=O/esZQElZpSMKaqkGxc+amSW91R2v0PPXfX2MAS2WG0mvk07sw0QxooxLGw/PKrzuDwjPWSXtx2xquofekfYqaEwg4l2F44ECRCyPd7gKZOz8K/74btibTEoZo34A4dA4TZWPRdYvYhz9/SGBNDA2l68TVlUUtNomgAlQn40oC0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=qlkZVzqI; arc=none smtp.client-ip=115.124.30.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="qlkZVzqI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1718679407; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=OzQUJeu4o6rO0toRIPj3mcwXDT38eU3Roh56NCFZeLE=; b=qlkZVzqIKnpMKsxPs5HOz35BJrPQQtI3g6/wJyXM6xrAUpz4vfElVWq5KsaxNqVr6xTj1yAUOe1Wcqd38EfyekqbhzS1iaq+XE9W4SCjiNSJugcoZ50GjBOKc6GUHlNPzBxW6lQPn9IQKKW2/i4iCxwE5YdAY6SUDUF+mSBW1aM= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R231e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045075189;MF=hengqi@linux.alibaba.com;NM=1;PH=DS;RN=31;SR=0;TI=SMTPD_---0W8iG1a0_1718679404; Received: from localhost(mailfrom:hengqi@linux.alibaba.com fp:SMTPD_---0W8iG1a0_1718679404) by smtp.aliyun-inc.com; Tue, 18 Jun 2024 10:56:45 +0800 From: Heng Qi To: netdev@vger.kernel.org, virtualization@lists.linux.dev Cc: Jakub Kicinski , "David S . Miller" , Paolo Abeni , Eric Dumazet , Jason Wang , "Michael S . Tsirkin" , Brett Creeley , Ratheesh Kannoth , Alexander Lobakin , Xuan Zhuo , Tal Gilboa , Jonathan Corbet , linux-doc@vger.kernel.org, Maxime Chevallier , Jiri Pirko , Paul Greenwalt , Ahmed Zaki , Vladimir Oltean , Kory Maincent , Andrew Lunn , justinstitt@google.com, donald.hunter@gmail.com, =?utf-8?q?Eugenio_P=C3=A9r?= =?utf-8?q?ez?= , Andrew Morton , Dragos Tatulea , Rahul Rameshbabu , Heiner Kallweit , Przemek Kitszel , awel Dembicki Subject: [PATCH RESEND net-next v14 0/5] ethtool: provide the dim profile fine-tuning channel Date: Tue, 18 Jun 2024 10:56:39 +0800 Message-Id: <20240618025644.25754-1-hengqi@linux.alibaba.com> X-Mailer: git-send-email 2.32.0.3.g01195cf9f Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org 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, the way is based on the commonly used "ethtool -C". Please review, thank you very much! Changelog ===== Jakub feedback: Use RESEND to refresh the review queue. v13->v14: - Make DIMLIB dependent on NET (patch 2/5). v12->v13: - Rebase net-next to fix the one-line conflict. - Update tiny comments. - Config ETHTOOL_NETLINK to select DIMLIB. v11->v12: - Remove the use of IS_ENABLED(DIMLIB). - Update Simon's htmldoc hint. v10->v11: - Fix and clean up some issues from Kuba, thanks. - Rebase net-next/main v9->v10: - Collect dim related flags/mode/work into one place. - Use rx_profile + tx_profile instead of four profiles. - Add several helps. - Update commit logs. v8->v9: - Fix the compilation error of conflicting names of rx_profile in dim.h and ice driver: in dim.h, rx_profile is replaced with dim_rx_profile. So does tx_profile. v7->v8: - Use kmemdup() instead of kzalloc()/memcpy() in dev_dim_profile_init(). 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. 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 (5): linux/dim: move useful macros to .h file dim: make DIMLIB dependent on NET ethtool: provide customized dim profile management dim: add new interfaces for initialization and getting results virtio-net: support dim profile fine-tuning Documentation/netlink/specs/ethtool.yaml | 31 +++ Documentation/networking/ethtool-netlink.rst | 4 + Documentation/networking/net_dim.rst | 42 +++ drivers/net/virtio_net.c | 54 +++- drivers/soc/fsl/Kconfig | 2 +- include/linux/dim.h | 113 ++++++++ include/linux/ethtool.h | 4 +- include/linux/netdevice.h | 3 + include/uapi/linux/ethtool_netlink.h | 22 ++ lib/Kconfig | 1 + lib/dim/net_dim.c | 144 +++++++++- net/Kconfig | 1 + net/ethtool/coalesce.c | 263 ++++++++++++++++++- 13 files changed, 667 insertions(+), 17 deletions(-)