* [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support
@ 2026-05-19 10:31 Minxi Hou
2026-05-19 10:31 ` [PATCH net-next v3 1/2] netlink: specs: add OVS packet family specification Minxi Hou
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Minxi Hou @ 2026-05-19 10:31 UTC (permalink / raw)
To: netdev
Cc: donald.hunter, davem, edumazet, kuba, pabeni, horms, aconole,
linux-kernel, Minxi Hou
This series adds a YAML netlink spec for the OVS_PACKET_FAMILY genetlink
family and a bind-only ntf_listen() helper for receiving unicast
notifications.
Changes in v3:
- patch 1: add missing document start "---" after SPDX comment
(yamllint warning in v2)
Changes in v2:
- patch 1: use YAML anchor (&event-attrs / *event-attrs) to avoid
repeating the same attribute list for miss and action events
(suggested by Donald Hunter)
- patch 1: fix enum-name from ovs-packet-attrs to ovs-packet-attr
to match the kernel enum name ovs_packet_attr
- patch 2: add ntf_listen() to the YnlFamily docstring under the
"Notification API" heading (suggested by Donald Hunter)
Minxi Hou (2):
netlink: specs: add OVS packet family specification
tools: ynl: add unicast notification receive support
Documentation/netlink/specs/ovs_packet.yaml | 130 ++++++++++++++++++++
tools/net/ynl/pyynl/lib/ynl.py | 5 +
2 files changed, 135 insertions(+)
create mode 100644 Documentation/netlink/specs/ovs_packet.yaml
--
2.54.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next v3 1/2] netlink: specs: add OVS packet family specification
2026-05-19 10:31 [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support Minxi Hou
@ 2026-05-19 10:31 ` Minxi Hou
2026-05-19 10:31 ` [PATCH net-next v3 2/2] tools: ynl: add unicast notification receive support Minxi Hou
2026-05-19 11:26 ` [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support 侯敏熙
2 siblings, 0 replies; 5+ messages in thread
From: Minxi Hou @ 2026-05-19 10:31 UTC (permalink / raw)
To: netdev
Cc: donald.hunter, davem, edumazet, kuba, pabeni, horms, aconole,
linux-kernel, Minxi Hou
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 | 130 ++++++++++++++++++++
1 file changed, 130 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..e4c5f24b3b01
--- /dev/null
+++ b/Documentation/netlink/specs/ovs_packet.yaml
@@ -0,0 +1,130 @@
+# 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-attr
+ 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: &event-attrs
+ - 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: *event-attrs
+ -
+ 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.54.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net-next v3 2/2] tools: ynl: add unicast notification receive support
2026-05-19 10:31 [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support Minxi Hou
2026-05-19 10:31 ` [PATCH net-next v3 1/2] netlink: specs: add OVS packet family specification Minxi Hou
@ 2026-05-19 10:31 ` Minxi Hou
2026-05-19 22:44 ` Jakub Kicinski
2026-05-19 11:26 ` [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support 侯敏熙
2 siblings, 1 reply; 5+ messages in thread
From: Minxi Hou @ 2026-05-19 10:31 UTC (permalink / raw)
To: netdev
Cc: donald.hunter, davem, edumazet, kuba, pabeni, horms, aconole,
linux-kernel, Minxi Hou
Add ntf_listen() method to YnlFamily for binding the netlink
socket without joining a multicast group. This enables receiving
unicast notifications through the existing poll_ntf/check_ntf
path.
The OVS packet family sends MISS and ACTION upcalls via
genlmsg_unicast() to a per-vport PID rather than through a
multicast group. The existing ntf_subscribe() couples bind()
with setsockopt(ADD_MEMBERSHIP), which does not fit the unicast
case. ntf_listen() provides the bind-only alternative.
Signed-off-by: Minxi Hou <houminxi@gmail.com>
---
tools/net/ynl/pyynl/lib/ynl.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tools/net/ynl/pyynl/lib/ynl.py b/tools/net/ynl/pyynl/lib/ynl.py
index f63c6f828735..04743a79a7a3 100644
--- a/tools/net/ynl/pyynl/lib/ynl.py
+++ b/tools/net/ynl/pyynl/lib/ynl.py
@@ -680,6 +680,7 @@ class YnlFamily(SpecFamily):
Notification API:
ynl.ntf_subscribe(mcast_name) -- join a multicast group
+ ynl.ntf_listen() -- bind socket for unicast notifications
ynl.check_ntf() -- drain pending notifications
ynl.poll_ntf(duration=None) -- yield notifications
@@ -748,6 +749,10 @@ class YnlFamily(SpecFamily):
self.sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_ADD_MEMBERSHIP,
mcast_id)
+ def ntf_listen(self):
+ """Bind socket for receiving unicast notifications."""
+ self.sock.bind((0, 0))
+
def set_recv_dbg(self, enabled):
self._recv_dbg = enabled
--
2.54.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support
2026-05-19 10:31 [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support Minxi Hou
2026-05-19 10:31 ` [PATCH net-next v3 1/2] netlink: specs: add OVS packet family specification Minxi Hou
2026-05-19 10:31 ` [PATCH net-next v3 2/2] tools: ynl: add unicast notification receive support Minxi Hou
@ 2026-05-19 11:26 ` 侯敏熙
2 siblings, 0 replies; 5+ messages in thread
From: 侯敏熙 @ 2026-05-19 11:26 UTC (permalink / raw)
To: netdev
Cc: Donald Hunter, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Aaron Conole, linux-kernel, Minxi Hou
Sorry for the noise. I sent v3 too early. I mistakenly assumed that
overrode the 24-hour rule. I won't do it again.
B.R
Minxi
Minxi Hou <houminxi@gmail.com> 于2026年5月19日周二 18:32写道:
>
> This series adds a YAML netlink spec for the OVS_PACKET_FAMILY genetlink
> family and a bind-only ntf_listen() helper for receiving unicast
> notifications.
>
> Changes in v3:
> - patch 1: add missing document start "---" after SPDX comment
> (yamllint warning in v2)
>
> Changes in v2:
> - patch 1: use YAML anchor (&event-attrs / *event-attrs) to avoid
> repeating the same attribute list for miss and action events
> (suggested by Donald Hunter)
> - patch 1: fix enum-name from ovs-packet-attrs to ovs-packet-attr
> to match the kernel enum name ovs_packet_attr
> - patch 2: add ntf_listen() to the YnlFamily docstring under the
> "Notification API" heading (suggested by Donald Hunter)
>
> Minxi Hou (2):
> netlink: specs: add OVS packet family specification
> tools: ynl: add unicast notification receive support
>
> Documentation/netlink/specs/ovs_packet.yaml | 130 ++++++++++++++++++++
> tools/net/ynl/pyynl/lib/ynl.py | 5 +
> 2 files changed, 135 insertions(+)
> create mode 100644 Documentation/netlink/specs/ovs_packet.yaml
>
> --
> 2.54.0
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net-next v3 2/2] tools: ynl: add unicast notification receive support
2026-05-19 10:31 ` [PATCH net-next v3 2/2] tools: ynl: add unicast notification receive support Minxi Hou
@ 2026-05-19 22:44 ` Jakub Kicinski
0 siblings, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2026-05-19 22:44 UTC (permalink / raw)
To: Minxi Hou
Cc: netdev, donald.hunter, davem, edumazet, pabeni, horms, aconole,
linux-kernel
On Tue, 19 May 2026 18:31:53 +0800 Minxi Hou wrote:
> ynl.ntf_subscribe(mcast_name) -- join a multicast group
> + ynl.ntf_listen() -- bind socket for unicast notifications
> ynl.check_ntf() -- drain pending notifications
> ynl.poll_ntf(duration=None) -- yield notifications
>
> @@ -748,6 +749,10 @@ class YnlFamily(SpecFamily):
> self.sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_ADD_MEMBERSHIP,
> mcast_id)
>
> + def ntf_listen(self):
> + """Bind socket for receiving unicast notifications."""
> + self.sock.bind((0, 0))
_listen() seems like a pretty bad name, given that listen()
is also a system call name, and we're doing a bind().
If we want a method to do this (as opposed to the user calling
ynl.sock.bind() themselves) we should probably call the method
bind() and pass the address tuple as an arg (default to (0, 0)).
--
pw-bot: cr
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-05-19 22:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-19 10:31 [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support Minxi Hou
2026-05-19 10:31 ` [PATCH net-next v3 1/2] netlink: specs: add OVS packet family specification Minxi Hou
2026-05-19 10:31 ` [PATCH net-next v3 2/2] tools: ynl: add unicast notification receive support Minxi Hou
2026-05-19 22:44 ` Jakub Kicinski
2026-05-19 11:26 ` [PATCH net-next v3 0/2] Add OVS packet family YNL spec and unicast notification support 侯敏熙
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox