From: Minxi Hou <houminxi@gmail.com>
To: netdev@vger.kernel.org
Cc: Donald Hunter <donald.hunter@gmail.com>,
Jakub Kicinski <kuba@kernel.org>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
Aaron Conole <aconole@redhat.com>,
linux-kernel@vger.kernel.org, Minxi Hou <houminxi@gmail.com>
Subject: [PATCH 1/2] netlink: specs: add OVS packet family specification
Date: Sun, 17 May 2026 16:33:57 +0800 [thread overview]
Message-ID: <20260517083358.2088599-2-houminxi@gmail.com> (raw)
In-Reply-To: <20260517083358.2088599-1-houminxi@gmail.com>
Add YAML netlink spec for the OVS_PACKET_FAMILY (ovs_packet).
This completes the set of OVS genetlink family specs (ovs_datapath,
ovs_flow, ovs_vport already exist).
The spec defines three operations: MISS (event), ACTION (event),
and EXECUTE (do). MISS and ACTION are kernel-to-userspace upcalls
sent via genlmsg_unicast(); EXECUTE is the only registered genl
operation.
Key, actions, and egress-tun-key attributes are typed as binary
rather than nest because the nested attribute definitions belong
to the ovs_flow spec and cross-spec references are not supported
by the YNL framework.
Signed-off-by: Minxi Hou <houminxi@gmail.com>
---
Documentation/netlink/specs/ovs_packet.yaml | 138 ++++++++++++++++++++
1 file changed, 138 insertions(+)
create mode 100644 Documentation/netlink/specs/ovs_packet.yaml
diff --git a/Documentation/netlink/specs/ovs_packet.yaml b/Documentation/netlink/specs/ovs_packet.yaml
new file mode 100644
index 000000000000..7ef14b68df4e
--- /dev/null
+++ b/Documentation/netlink/specs/ovs_packet.yaml
@@ -0,0 +1,138 @@
+# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
+
+name: ovs_packet
+version: 1
+protocol: genetlink-legacy
+uapi-header: linux/openvswitch.h
+
+doc: |
+ OVS packet execution over generic netlink.
+
+ Only OVS_PACKET_CMD_EXECUTE is exposed as a genl operation.
+ OVS_PACKET_CMD_MISS and OVS_PACKET_CMD_ACTION are kernel-to-userspace
+ upcalls sent via genlmsg_unicast() to the vport's upcall_pid and have
+ no associated genl_ops or multicast group.
+
+ Several attributes in the attribute set (userdata, egress-tun-key, len)
+ exist for the upcall path and are not used by the EXECUTE operation.
+ For EXECUTE, packet, key, and actions are mandatory (kernel returns
+ -EINVAL without them).
+
+definitions:
+ -
+ name: ovs-header
+ type: struct
+ members:
+ -
+ name: dp-ifindex
+ type: u32
+
+attribute-sets:
+ -
+ name: packet
+ name-prefix: ovs-packet-attr-
+ enum-name: ovs-packet-attrs
+ attributes:
+ -
+ name: packet
+ type: binary
+ doc: Packet data, from the start of the Ethernet header.
+ checks:
+ min-len: 14
+ -
+ name: key
+ type: binary
+ doc: |
+ Nested OVS_KEY_ATTR_* attributes, extracted flow key.
+ Defined as binary because the key attribute-set belongs to the
+ ovs_flow family spec; cross-spec references are not supported.
+ -
+ name: actions
+ type: binary
+ doc: |
+ Nested OVS_ACTION_ATTR_* attributes.
+ Defined as binary for the same reason as key.
+ -
+ name: userdata
+ type: binary
+ doc: Opaque userspace cookie from OVS_USERSPACE_ATTR_USERDATA.
+ -
+ name: egress-tun-key
+ type: binary
+ doc: Nested OVS_TUNNEL_KEY_ATTR_* for output tunnel metadata.
+ -
+ name: unused1
+ type: unused
+ -
+ name: unused2
+ type: unused
+ -
+ name: probe
+ type: flag
+ doc: Packet operation is a feature probe, error logging suppressed.
+ -
+ name: mru
+ type: u16
+ doc: Maximum received IP fragment size.
+ -
+ name: len
+ type: u32
+ doc: Packet size before truncation.
+ -
+ name: hash
+ type: u64
+ doc: Packet hash, low 32 bits are skb hash, upper bits are flags.
+ -
+ name: upcall-pid
+ type: u32
+ doc: Netlink PID to use for upcalls during EXECUTE processing.
+
+operations:
+ fixed-header: ovs-header
+ name-prefix: ovs-packet-cmd-
+ list:
+ -
+ name: miss
+ doc: Notify userspace of a flow table miss for a received packet.
+ value: 1
+ attribute-set: packet
+ event:
+ attributes:
+ - packet
+ - key
+ - userdata
+ - actions
+ - egress-tun-key
+ - mru
+ - len
+ - hash
+ -
+ name: action
+ doc: Notify userspace as requested by an OVS_ACTION_ATTR_USERSPACE action.
+ value: 2
+ attribute-set: packet
+ event:
+ attributes:
+ - packet
+ - key
+ - userdata
+ - actions
+ - egress-tun-key
+ - mru
+ - len
+ - hash
+ -
+ name: execute
+ doc: Apply actions to a packet.
+ value: 3
+ attribute-set: packet
+ do:
+ request:
+ attributes:
+ - packet
+ - key
+ - actions
+ - probe
+ - mru
+ - hash
+ - upcall-pid
--
2.53.0
next prev parent reply other threads:[~2026-05-17 8:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-17 8:33 [PATCH net-next 0/2] netlink: specs: complete OVS family coverage Minxi Hou
2026-05-17 8:33 ` Minxi Hou [this message]
2026-05-18 13:52 ` [PATCH 1/2] netlink: specs: add OVS packet family specification Donald Hunter
2026-05-17 8:33 ` [PATCH 2/2] tools: ynl: add unicast notification receive support Minxi Hou
2026-05-18 13:56 ` Donald Hunter
2026-05-17 8:55 ` [PATCH net-next 0/2] netlink: specs: complete OVS family coverage Minxi Hou
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=20260517083358.2088599-2-houminxi@gmail.com \
--to=houminxi@gmail.com \
--cc=aconole@redhat.com \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox