All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: "Jasper Tran O'Leary" <jtranoleary@google.com>
Cc: dev@dpdk.org, Joshua Washington <joshwash@google.com>
Subject: Re: [PATCH v4 0/4] net/gve: add flow steering support
Date: Wed, 4 Mar 2026 07:59:49 -0800	[thread overview]
Message-ID: <20260304075949.07e75d93@phoenix.local> (raw)
In-Reply-To: <20260304045033.1340269-1-jtranoleary@google.com>

On Wed,  4 Mar 2026 04:50:29 +0000
"Jasper Tran O'Leary" <jtranoleary@google.com> wrote:

> This patch series adds flow steering support to the Google Virtual
> Ethernet (gve) driver. This functionality allows traffic to be directed
> to specific receive queues based on user-specified flow patterns.
> 
> The series includes foundational support for extended admin queue
> commands needed to handle flow rules, the specific adminqueue commands
> for flow rule management, and the integration with the DPDK rte_flow
> API. The series adds support flow matching on the following protocols:
> IPv4, IPv6, TCP, UDP, SCTP, ESP, and AH.
> 
> Patch Overview:
> 
> 1. "net/gve: add flow steering device option" checks for and enables
>    the flow steering capability in the device options during
>    initialization.
> 2. "net/gve: introduce extended adminq command" adds infrastructure
>    for sending extended admin queue commands. These commands use a
>    flexible buffer descriptor format required for flow rule management.
> 3. "net/gve: add adminq commands for flow steering" implements the
>    specific admin queue commands to add and remove flow rules on the
>    device, including handling of rule IDs and parameters.
> 4. "net/gve: add rte flow API integration" exposes the flow steering
>    functionality via the DPDK rte_flow API. This includes strict
>    pattern validation, rule parsing, and lifecycle management (create,
>    destroy, flush). It ensures thread-safe access to the flow subsystem
>    and proper resource cleanup during device reset.
> 
> Jasper Tran O'Leary (2):
>   net/gve: add adminq commands for flow steering
>   net/gve: add rte flow API integration
> 
> Vee Agarwal (2):
>   net/gve: add flow steering device option
>   net/gve: introduce extended adminq command
> 
>  doc/guides/nics/features/gve.ini       |  12 +
>  doc/guides/nics/gve.rst                |  27 +
>  doc/guides/rel_notes/release_26_03.rst |   1 +
>  drivers/net/gve/base/gve.h             |   3 +-
>  drivers/net/gve/base/gve_adminq.c      | 118 ++++-
>  drivers/net/gve/base/gve_adminq.h      |  57 +++
>  drivers/net/gve/gve_ethdev.c           |  83 +++-
>  drivers/net/gve/gve_ethdev.h           |  46 ++
>  drivers/net/gve/gve_flow_rule.c        | 658 +++++++++++++++++++++++++
>  drivers/net/gve/gve_flow_rule.h        |  65 +++
>  drivers/net/gve/meson.build            |   1 +
>  11 files changed, 1066 insertions(+), 5 deletions(-)
>  create mode 100644 dpdk/drivers/net/gve/gve_flow_rule.c
>  create mode 100644 dpdk/drivers/net/gve/gve_flow_rule.h
> 


Applied to next-net

The detailed review report if you are interested.

Reviewed the v4 series. Overall this is well-structured — locking
discipline is sound, create/destroy/flush paths handle errors
correctly with proper resource cleanup, and the bitmap slot is
restored on adminq failure. Patches 1/4 and 2/4 are clean.

A few items on 3/4 and 4/4:

Patch 3/4:

  [Warning] struct gve_flow_spec has a padding hole after the
  tos/tclass u8 field (37 bytes of data, padded to 40 by the
  compiler). Callers zero-initialize today so no live bug, but
  consider adding GVE_CHECK_STRUCT_LEN for gve_flow_spec and
  gve_flow_rule_params to guard against future changes, consistent
  with other adminq structures.

Patch 4/4:

  [Warning] In gve_setup_flow_subsystem, the rte_zmalloc failure
  path does goto free_flow_rule_bmp which calls
  gve_flow_free_bmp(priv). This is safe (rte_free(NULL) is a
  no-op) but misleading — the label says "free" when there's
  nothing to free. Cleaner to just return -ENOMEM directly on the
  first failure.

  [Warning] gve_dev_reset tears down the flow subsystem and
  re-initializes via gve_init_priv, but does not destroy/recreate
  flow_rule_lock. This works today because
  gve_teardown_flow_subsystem doesn't destroy the mutex (only
  gve_dev_close does), but it's worth a comment to document this
  invariant.

  parent reply	other threads:[~2026-03-04 15:59 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-27 19:51 [PATCH 0/4] net/gve: add flow steering support Jasper Tran O'Leary
2026-02-27 19:51 ` [PATCH 1/4] net/gve: add flow steering device option Jasper Tran O'Leary
2026-02-27 19:51 ` [PATCH 2/4] net/gve: introduce extended adminq command Jasper Tran O'Leary
2026-02-27 19:51 ` [PATCH 3/4] net/gve: add adminq commands for flow steering Jasper Tran O'Leary
2026-02-27 19:51 ` [PATCH 4/4] net/gve: add rte flow API integration Jasper Tran O'Leary
2026-02-27 22:52 ` [PATCH 0/4] net/gve: add flow steering support Stephen Hemminger
2026-03-03  1:00   ` Jasper Tran O'Leary
2026-03-03  0:58 ` [PATCH v2 " Jasper Tran O'Leary
2026-03-03  0:58   ` [PATCH v2 1/4] net/gve: add flow steering device option Jasper Tran O'Leary
2026-03-03  0:58   ` [PATCH v2 2/4] net/gve: introduce extended adminq command Jasper Tran O'Leary
2026-03-03  0:58   ` [PATCH v2 3/4] net/gve: add adminq commands for flow steering Jasper Tran O'Leary
2026-03-03  0:58   ` [PATCH v2 4/4] net/gve: add rte flow API integration Jasper Tran O'Leary
2026-03-03 15:21   ` [PATCH v2 0/4] net/gve: add flow steering support Stephen Hemminger
2026-03-04  1:49     ` Jasper Tran O'Leary
2026-03-04  1:46   ` [PATCH v3 " Jasper Tran O'Leary
2026-03-04  1:46     ` [PATCH v3 1/4] net/gve: add flow steering device option Jasper Tran O'Leary
2026-03-04  1:46     ` [PATCH v3 2/4] net/gve: introduce extended adminq command Jasper Tran O'Leary
2026-03-04  1:46     ` [PATCH v3 3/4] net/gve: add adminq commands for flow steering Jasper Tran O'Leary
2026-03-04  1:46     ` [PATCH v3 4/4] net/gve: add rte flow API integration Jasper Tran O'Leary
2026-03-04  4:46     ` [PATCH v3 0/4] net/gve: add flow steering support Jasper Tran O'Leary
2026-03-04  4:50     ` [PATCH v4 " Jasper Tran O'Leary
2026-03-04  4:50       ` [PATCH v4 1/4] net/gve: add flow steering device option Jasper Tran O'Leary
2026-03-04  4:50       ` [PATCH v4 2/4] net/gve: introduce extended adminq command Jasper Tran O'Leary
2026-03-04  4:50       ` [PATCH v4 3/4] net/gve: add adminq commands for flow steering Jasper Tran O'Leary
2026-03-04  4:50       ` [PATCH v4 4/4] net/gve: add rte flow API integration Jasper Tran O'Leary
2026-03-04 15:59       ` Stephen Hemminger [this message]
2026-03-04 22:43         ` [PATCH v4 0/4] net/gve: add flow steering support Jasper Tran O'Leary

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=20260304075949.07e75d93@phoenix.local \
    --to=stephen@networkplumber.org \
    --cc=dev@dpdk.org \
    --cc=joshwash@google.com \
    --cc=jtranoleary@google.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.