* [PATCH v2 0/2] Add OVS packet family YNL spec and unicast notification support @ 2026-05-18 16:40 Minxi Hou 2026-05-18 16:40 ` [PATCH v2 1/2] netlink: specs: add OVS packet family specification Minxi Hou 2026-05-18 16:40 ` [PATCH v2 2/2] tools: ynl: add unicast notification receive support Minxi Hou 0 siblings, 2 replies; 7+ messages in thread From: Minxi Hou @ 2026-05-18 16:40 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 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] 7+ messages in thread
* [PATCH v2 1/2] netlink: specs: add OVS packet family specification 2026-05-18 16:40 [PATCH v2 0/2] Add OVS packet family YNL spec and unicast notification support Minxi Hou @ 2026-05-18 16:40 ` Minxi Hou 2026-05-19 9:44 ` Donald Hunter 2026-05-18 16:40 ` [PATCH v2 2/2] tools: ynl: add unicast notification receive support Minxi Hou 1 sibling, 1 reply; 7+ messages in thread From: Minxi Hou @ 2026-05-18 16:40 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..4c1f06630e4e --- /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] 7+ messages in thread
* Re: [PATCH v2 1/2] netlink: specs: add OVS packet family specification 2026-05-18 16:40 ` [PATCH v2 1/2] netlink: specs: add OVS packet family specification Minxi Hou @ 2026-05-19 9:44 ` Donald Hunter 0 siblings, 0 replies; 7+ messages in thread From: Donald Hunter @ 2026-05-19 9:44 UTC (permalink / raw) To: Minxi Hou Cc: netdev, davem, edumazet, kuba, pabeni, horms, aconole, linux-kernel Minxi Hou <houminxi@gmail.com> writes: > 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> Reviewed-by: Donald Hunter <donald.hunter@gmail.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] tools: ynl: add unicast notification receive support 2026-05-18 16:40 [PATCH v2 0/2] Add OVS packet family YNL spec and unicast notification support Minxi Hou 2026-05-18 16:40 ` [PATCH v2 1/2] netlink: specs: add OVS packet family specification Minxi Hou @ 2026-05-18 16:40 ` Minxi Hou 2026-05-19 9:44 ` Donald Hunter 1 sibling, 1 reply; 7+ messages in thread From: Minxi Hou @ 2026-05-18 16:40 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] 7+ messages in thread
* Re: [PATCH v2 2/2] tools: ynl: add unicast notification receive support 2026-05-18 16:40 ` [PATCH v2 2/2] tools: ynl: add unicast notification receive support Minxi Hou @ 2026-05-19 9:44 ` Donald Hunter 2026-05-19 9:50 ` 侯敏熙 0 siblings, 1 reply; 7+ messages in thread From: Donald Hunter @ 2026-05-19 9:44 UTC (permalink / raw) To: Minxi Hou Cc: netdev, davem, edumazet, kuba, pabeni, horms, aconole, linux-kernel Minxi Hou <houminxi@gmail.com> writes: > 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> Reviewed-by: Donald Hunter <donald.hunter@gmail.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] tools: ynl: add unicast notification receive support 2026-05-19 9:44 ` Donald Hunter @ 2026-05-19 9:50 ` 侯敏熙 2026-05-19 10:20 ` Donald Hunter 0 siblings, 1 reply; 7+ messages in thread From: 侯敏熙 @ 2026-05-19 9:50 UTC (permalink / raw) To: Donald Hunter Cc: netdev, davem, edumazet, kuba, pabeni, horms, aconole, linux-kernel Hello Donald Should I re-spain a new version to fix the yaml check issue? ====== Checking the tree with the patch ====== New warnings added --- /tmp/tmp.2uYmXlzyoK 2026-05-18 12:59:32.034644770 -0400 +++ /tmp/tmp.UAwK6To8IX 2026-05-18 12:59:32.187643683 -0400 @@ -0,0 +1,3 @@ +ovs_packet.yaml + 3:1 warning missing document start "---" (document-start) + B.R Minxi Donald Hunter <donald.hunter@gmail.com> 于2026年5月19日周二 17:45写道: > > Minxi Hou <houminxi@gmail.com> writes: > > > 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> > > Reviewed-by: Donald Hunter <donald.hunter@gmail.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] tools: ynl: add unicast notification receive support 2026-05-19 9:50 ` 侯敏熙 @ 2026-05-19 10:20 ` Donald Hunter 0 siblings, 0 replies; 7+ messages in thread From: Donald Hunter @ 2026-05-19 10:20 UTC (permalink / raw) To: 侯敏熙 Cc: netdev, davem, edumazet, kuba, pabeni, horms, aconole, linux-kernel On Tue, 19 May 2026 at 10:51, 侯敏熙 <houminxi@gmail.com> wrote: > > Hello Donald > > Should I re-spain a new version to fix the yaml check issue? > > ====== Checking the tree with the patch ====== > New warnings added > --- /tmp/tmp.2uYmXlzyoK 2026-05-18 12:59:32.034644770 -0400 > +++ /tmp/tmp.UAwK6To8IX 2026-05-18 12:59:32.187643683 -0400 > @@ -0,0 +1,3 @@ > +ovs_packet.yaml > + 3:1 warning missing document start "---" (document-start) Good catch, yes please. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-19 10:20 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-18 16:40 [PATCH v2 0/2] Add OVS packet family YNL spec and unicast notification support Minxi Hou 2026-05-18 16:40 ` [PATCH v2 1/2] netlink: specs: add OVS packet family specification Minxi Hou 2026-05-19 9:44 ` Donald Hunter 2026-05-18 16:40 ` [PATCH v2 2/2] tools: ynl: add unicast notification receive support Minxi Hou 2026-05-19 9:44 ` Donald Hunter 2026-05-19 9:50 ` 侯敏熙 2026-05-19 10:20 ` Donald Hunter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox