From: "Michael S. Tsirkin" <mst@redhat.com>
To: Daniel Jurgens <danielj@nvidia.com>
Cc: netdev@vger.kernel.org, jasowang@redhat.com, pabeni@redhat.com,
virtualization@lists.linux.dev, parav@nvidia.com,
shshitrit@nvidia.com, yohadt@nvidia.com,
xuanzhuo@linux.alibaba.com, eperezma@redhat.com,
shameerali.kolothum.thodi@huawei.com, jgg@ziepe.ca,
kevin.tian@intel.com, kuba@kernel.org, andrew+netdev@lunn.ch,
edumazet@google.com
Subject: Re: [PATCH net-next v10 00/12] virtio_net: Add ethtool flow rules support
Date: Mon, 17 Nov 2025 05:02:56 -0500 [thread overview]
Message-ID: <20251117050228-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20251112193132.1909-1-danielj@nvidia.com>
On Wed, Nov 12, 2025 at 01:31:20PM -0600, Daniel Jurgens wrote:
> This series implements ethtool flow rules support for virtio_net using the
> virtio flow filter (FF) specification. The implementation allows users to
> configure packet filtering rules through ethtool commands, directing
> packets to specific receive queues, or dropping them based on various
> header fields.
Bad threading here Daniel, so tools that rely on threading break.
> The series starts with infrastructure changes to expose virtio PCI admin
> capabilities and object management APIs. It then creates the virtio_net
> directory structure and implements the flow filter functionality with support
> for:
>
> - Layer 2 (Ethernet) flow rules
> - IPv4 and IPv6 flow rules
> - TCP and UDP flow rules (both IPv4 and IPv6)
> - Rule querying and management operations
>
> Setting, deleting and viewing flow filters, -1 action is drop, positive
> integers steer to that RQ:
>
> $ ethtool -u ens9
> 4 RX rings available
> Total 0 rules
>
> $ ethtool -U ens9 flow-type ether src 1c:34:da:4a:33:dd action 0
> Added rule with ID 0
> $ ethtool -U ens9 flow-type udp4 dst-port 5001 action 3
> Added rule with ID 1
> $ ethtool -U ens9 flow-type tcp6 src-ip fc00::2 dst-port 5001 action 2
> Added rule with ID 2
> $ ethtool -U ens9 flow-type ip4 src-ip 192.168.51.101 action 1
> Added rule with ID 3
> $ ethtool -U ens9 flow-type ip6 dst-ip fc00::1 action -1
> Added rule with ID 4
> $ ethtool -U ens9 flow-type ip6 src-ip fc00::2 action -1
> Added rule with ID 5
> $ ethtool -U ens9 delete 4
> $ ethtool -u ens9
> 4 RX rings available
> Total 5 rules
>
> Filter: 0
> Flow Type: Raw Ethernet
> Src MAC addr: 1C:34:DA:4A:33:DD mask: 00:00:00:00:00:00
> Dest MAC addr: 00:00:00:00:00:00 mask: FF:FF:FF:FF:FF:FF
> Ethertype: 0x0 mask: 0xFFFF
> Action: Direct to queue 0
>
> Filter: 1
> Rule Type: UDP over IPv4
> Src IP addr: 0.0.0.0 mask: 255.255.255.255
> Dest IP addr: 0.0.0.0 mask: 255.255.255.255
> TOS: 0x0 mask: 0xff
> Src port: 0 mask: 0xffff
> Dest port: 5001 mask: 0x0
> Action: Direct to queue 3
>
> Filter: 2
> Rule Type: TCP over IPv6
> Src IP addr: fc00::2 mask: ::
> Dest IP addr: :: mask: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
> Traffic Class: 0x0 mask: 0xff
> Src port: 0 mask: 0xffff
> Dest port: 5001 mask: 0x0
> Action: Direct to queue 2
>
> Filter: 3
> Rule Type: Raw IPv4
> Src IP addr: 192.168.51.101 mask: 0.0.0.0
> Dest IP addr: 0.0.0.0 mask: 255.255.255.255
> TOS: 0x0 mask: 0xff
> Protocol: 0 mask: 0xff
> L4 bytes: 0x0 mask: 0xffffffff
> Action: Direct to queue 1
>
> Filter: 5
> Rule Type: Raw IPv6
> Src IP addr: fc00::2 mask: ::
> Dest IP addr: :: mask: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
> Traffic Class: 0x0 mask: 0xff
> Protocol: 0 mask: 0xff
> L4 bytes: 0x0 mask: 0xffffffff
> Action: Drop
>
> ---
> v2: https://lore.kernel.org/netdev/20250908164046.25051-1-danielj@nvidia.com/
> - Fix sparse warnings
> - Fix memory leak on subsequent failure to allocate
> - Fix some Typos
>
> v3: https://lore.kernel.org/netdev/20250923141920.283862-1-danielj@nvidia.com/
> - Added admin_ops to virtio_device kdoc.
>
> v4:
> - Fixed double free bug inserting flows
> - Fixed incorrect protocol field check parsing ip4 headers.
> - (u8 *) changed to (void *)
> - Added kdoc comments to UAPI changes.
> - No longer split up virtio_net.c
> - Added config op to execute admin commands.
> - virtio_pci assigns vp_modern_admin_cmd_exec to this callback.
> - Moved admin command API to new core file virtio_admin_commands.c
>
> v5:
> - Fixed compile error
> - Fixed static analysis warning on () after macro
> - Added missing fields to kdoc comments
> - Aligned parameter name between prototype and kdoc
>
> v6:
> - Fix sparse warning "array of flexible structures" Jakub K/Simon H
> - Use new variable and validate ff_mask_size before set_cap. MST
>
> v7:
> - Change virtnet_ff_init to return a value. Allow -EOPNOTSUPP. Xuan
> - Set ff->ff_{caps, mask, actions} NULL in error path. Paolo Abini
> - Move for (int i removal hung back a patch. Paolo Abini
>
> v8
> - Removed unused num_classifiers. Jason Wang
> - Use real_ff_mask_size when setting the selector caps. Jason Wang
>
> v9:
> - Set err to -ENOMEM after alloc failures in virtnet_ff_init. Simon H
>
> v10:
> - Return -EOPNOTSUPP in virnet_ff_init before allocing any memory.
> Jason Wang/Paolo Abeni
>
>
> Daniel Jurgens (12):
> virtio_pci: Remove supported_cap size build assert
> virtio: Add config_op for admin commands
> virtio: Expose generic device capability operations
> virtio: Expose object create and destroy API
> virtio_net: Query and set flow filter caps
> virtio_net: Create a FF group for ethtool steering
> virtio_net: Implement layer 2 ethtool flow rules
> virtio_net: Use existing classifier if possible
> virtio_net: Implement IPv4 ethtool flow rules
> virtio_net: Add support for IPv6 ethtool steering
> virtio_net: Add support for TCP and UDP ethtool rules
> virtio_net: Add get ethtool flow rules ops
>
> drivers/net/virtio_net.c | 1147 ++++++++++++++++++++++++
> drivers/virtio/Makefile | 2 +-
> drivers/virtio/virtio_admin_commands.c | 165 ++++
> drivers/virtio/virtio_pci_common.h | 1 -
> drivers/virtio/virtio_pci_modern.c | 10 +-
> include/linux/virtio_admin.h | 125 +++
> include/linux/virtio_config.h | 6 +
> include/uapi/linux/virtio_net_ff.h | 156 ++++
> include/uapi/linux/virtio_pci.h | 7 +-
> 9 files changed, 1608 insertions(+), 11 deletions(-)
> create mode 100644 drivers/virtio/virtio_admin_commands.c
> create mode 100644 include/linux/virtio_admin.h
> create mode 100644 include/uapi/linux/virtio_net_ff.h
>
> --
> 2.50.1
next prev parent reply other threads:[~2025-11-17 10:03 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-12 19:31 [PATCH net-next v10 00/12] virtio_net: Add ethtool flow rules support Daniel Jurgens
2025-11-17 10:02 ` Michael S. Tsirkin [this message]
2025-11-17 14:15 ` Dan Jurgens
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251117050228-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=andrew+netdev@lunn.ch \
--cc=danielj@nvidia.com \
--cc=edumazet@google.com \
--cc=eperezma@redhat.com \
--cc=jasowang@redhat.com \
--cc=jgg@ziepe.ca \
--cc=kevin.tian@intel.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=parav@nvidia.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=shshitrit@nvidia.com \
--cc=virtualization@lists.linux.dev \
--cc=xuanzhuo@linux.alibaba.com \
--cc=yohadt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.