diff mbox series

[net-next,v1] netlink: specs: fixup openvswitch specs for code generation

Message ID 20230615151405.77649-1-donald.hunter@gmail.com (mailing list archive)
State Accepted
Commit 6907217a8054b8afc47b3944afc7d77ad5caf824
Delegated to: Netdev Maintainers
Headers show
Series [net-next,v1] netlink: specs: fixup openvswitch specs for code generation | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 8 this patch: 8
netdev/cc_maintainers success CCed 6 of 6 maintainers
netdev/build_clang success Errors and warnings before: 8 this patch: 8
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 8 this patch: 8
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 376 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Donald Hunter June 15, 2023, 3:14 p.m. UTC
Refine the ovs_* specs to align exactly with the ovs netlink UAPI
definitions to enable code generation.

Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
---
 Documentation/netlink/specs/ovs_datapath.yaml | 30 +++++---
 Documentation/netlink/specs/ovs_flow.yaml     | 68 +++++++++++++++----
 Documentation/netlink/specs/ovs_vport.yaml    | 13 +++-
 3 files changed, 87 insertions(+), 24 deletions(-)

Comments

Jakub Kicinski June 16, 2023, 3:03 a.m. UTC | #1
On Thu, 15 Jun 2023 16:14:05 +0100 Donald Hunter wrote:
> Refine the ovs_* specs to align exactly with the ovs netlink UAPI
> definitions to enable code generation.

Hah, the C code gen really tells you if you got the spec right ;)

Changes LGTM!
patchwork-bot+netdevbpf@kernel.org June 17, 2023, 7:30 a.m. UTC | #2
Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Thu, 15 Jun 2023 16:14:05 +0100 you wrote:
> Refine the ovs_* specs to align exactly with the ovs netlink UAPI
> definitions to enable code generation.
> 
> Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
> ---
>  Documentation/netlink/specs/ovs_datapath.yaml | 30 +++++---
>  Documentation/netlink/specs/ovs_flow.yaml     | 68 +++++++++++++++----
>  Documentation/netlink/specs/ovs_vport.yaml    | 13 +++-
>  3 files changed, 87 insertions(+), 24 deletions(-)

Here is the summary with links:
  - [net-next,v1] netlink: specs: fixup openvswitch specs for code generation
    https://git.kernel.org/netdev/net-next/c/6907217a8054

You are awesome, thank you!
diff mbox series

Patch

diff --git a/Documentation/netlink/specs/ovs_datapath.yaml b/Documentation/netlink/specs/ovs_datapath.yaml
index 6d71db8c4416..f709c26c3e92 100644
--- a/Documentation/netlink/specs/ovs_datapath.yaml
+++ b/Documentation/netlink/specs/ovs_datapath.yaml
@@ -3,6 +3,7 @@ 
 name: ovs_datapath
 version: 2
 protocol: genetlink-legacy
+uapi-header: linux/openvswitch.h
 
 doc:
   OVS datapath configuration over generic netlink.
@@ -18,6 +19,7 @@  definitions:
   -
     name: user-features
     type: flags
+    name-prefix: ovs-dp-f-
     entries:
       -
         name: unaligned
@@ -33,35 +35,37 @@  definitions:
         doc: Allow per-cpu dispatch of upcalls
   -
     name: datapath-stats
+    enum-name: ovs-dp-stats
     type: struct
     members:
       -
-        name: hit
+        name: n-hit
         type: u64
       -
-        name: missed
+        name: n-missed
         type: u64
       -
-        name: lost
+        name: n-lost
         type: u64
       -
-        name: flows
+        name: n-flows
         type: u64
   -
     name: megaflow-stats
+    enum-name: ovs-dp-megaflow-stats
     type: struct
     members:
       -
-        name: mask-hit
+        name: n-mask-hit
         type: u64
       -
-        name: masks
+        name: n-masks
         type: u32
       -
         name: padding
         type: u32
       -
-        name: cache-hits
+        name: n-cache-hit
         type: u64
       -
         name: pad1
@@ -70,6 +74,8 @@  definitions:
 attribute-sets:
   -
     name: datapath
+    name-prefix: ovs-dp-attr-
+    enum-name: ovs-datapath-attrs
     attributes:
       -
         name: name
@@ -101,12 +107,16 @@  attribute-sets:
         name: per-cpu-pids
         type: binary
         sub-type: u32
+      -
+        name: ifindex
+        type: u32
 
 operations:
   fixed-header: ovs-header
+  name-prefix: ovs-dp-cmd-
   list:
     -
-      name: dp-get
+      name: get
       doc: Get / dump OVS data path configuration and state
       value: 3
       attribute-set: datapath
@@ -125,7 +135,7 @@  operations:
             - per-cpu-pids
       dump: *dp-get-op
     -
-      name: dp-new
+      name: new
       doc: Create new OVS data path
       value: 1
       attribute-set: datapath
@@ -137,7 +147,7 @@  operations:
             - upcall-pid
             - user-features
     -
-      name: dp-del
+      name: del
       doc: Delete existing OVS data path
       value: 2
       attribute-set: datapath
diff --git a/Documentation/netlink/specs/ovs_flow.yaml b/Documentation/netlink/specs/ovs_flow.yaml
index 3b0624c87074..1ecbcd117385 100644
--- a/Documentation/netlink/specs/ovs_flow.yaml
+++ b/Documentation/netlink/specs/ovs_flow.yaml
@@ -3,6 +3,7 @@ 
 name: ovs_flow
 version: 1
 protocol: genetlink-legacy
+uapi-header: linux/openvswitch.h
 
 doc:
   OVS flow configuration over generic netlink.
@@ -67,6 +68,7 @@  definitions:
         enum: ovs-frag-type
   -
     name: ovs-frag-type
+    name-prefix: ovs-frag-type-
     type: enum
     entries:
       -
@@ -166,6 +168,7 @@  definitions:
         doc: Tag control identifier (TCI) to push.
   -
     name: ovs-ufid-flags
+    name-prefix: ovs-ufid-f-
     type: flags
     entries:
       - omit-key
@@ -176,7 +179,7 @@  definitions:
     type: struct
     members:
       -
-        name: hash-algorithm
+        name: hash-alg
         type: u32
         doc: Algorithm used to compute hash prior to recirculation.
       -
@@ -198,13 +201,13 @@  definitions:
     type: struct
     members:
       -
-        name: lse
+        name: mpls-lse
         type: u32
         byte-order: big-endian
         doc: |
           MPLS label stack entry to push
       -
-        name: ethertype
+        name: mpls-ethertype
         type: u32
         byte-order: big-endian
         doc: |
@@ -216,13 +219,13 @@  definitions:
     type: struct
     members:
       -
-        name: lse
+        name: mpls-lse
         type: u32
         byte-order: big-endian
         doc: |
           MPLS label stack entry to push
       -
-        name: ethertype
+        name: mpls-ethertype
         type: u32
         byte-order: big-endian
         doc: |
@@ -237,6 +240,7 @@  definitions:
   -
     name: ct-state-flags
     type: flags
+    name-prefix: ovs-cs-f-
     entries:
       -
         name: new
@@ -266,6 +270,8 @@  definitions:
 attribute-sets:
   -
     name: flow-attrs
+    enum-name: ovs-flow-attr
+    name-prefix: ovs-flow-attr-
     attributes:
       -
         name: key
@@ -352,6 +358,8 @@  attribute-sets:
 
   -
     name: key-attrs
+    enum-name: ovs-key-attr
+    name-prefix: ovs-key-attr-
     attributes:
       -
         name: encap
@@ -481,6 +489,8 @@  attribute-sets:
         doc: struct ovs_key_ipv6_exthdr
   -
     name: action-attrs
+    enum-name: ovs-action-attr
+    name-prefix: ovs-action-attr-
     attributes:
       -
         name: output
@@ -608,6 +618,8 @@  attribute-sets:
         nested-attributes: dec-ttl-attrs
   -
     name: tunnel-key-attrs
+    enum-name: ovs-tunnel-key-attr
+    name-prefix: ovs-tunnel-key-attr-
     attributes:
       -
         name: id
@@ -676,6 +688,8 @@  attribute-sets:
         type: flag
   -
     name: check-pkt-len-attrs
+    enum-name: ovs-check-pkt-len-attr
+    name-prefix: ovs-check-pkt-len-attr-
     attributes:
       -
         name: pkt-len
@@ -690,6 +704,8 @@  attribute-sets:
         nested-attributes: action-attrs
   -
     name: sample-attrs
+    enum-name: ovs-sample-attr
+    name-prefix: ovs-sample-attr-
     attributes:
       -
         name: probability
@@ -700,6 +716,8 @@  attribute-sets:
         nested-attributes: action-attrs
   -
     name: userspace-attrs
+    enum-name: ovs-userspace-attr
+    name-prefix: ovs-userspace-attr-
     attributes:
       -
         name: pid
@@ -715,6 +733,8 @@  attribute-sets:
         type: flag
   -
     name: ovs-nsh-key-attrs
+    enum-name: ovs-nsh-key-attr
+    name-prefix: ovs-nsh-key-attr-
     attributes:
       -
         name: base
@@ -727,6 +747,8 @@  attribute-sets:
         type: binary
   -
     name: ct-attrs
+    enum-name: ovs-ct-attr
+    name-prefix: ovs-ct-attr-
     attributes:
       -
         name: commit
@@ -758,13 +780,15 @@  attribute-sets:
         type: string
   -
     name: nat-attrs
+    enum-name: ovs-nat-attr
+    name-prefix: ovs-nat-attr-
     attributes:
       -
         name: src
-        type: binary
+        type: flag
       -
         name: dst
-        type: binary
+        type: flag
       -
         name: ip-min
         type: binary
@@ -773,21 +797,23 @@  attribute-sets:
         type: binary
       -
         name: proto-min
-        type: binary
+        type: u16
       -
         name: proto-max
-        type: binary
+        type: u16
       -
         name: persistent
-        type: binary
+        type: flag
       -
         name: proto-hash
-        type: binary
+        type: flag
       -
         name: proto-random
-        type: binary
+        type: flag
   -
     name: dec-ttl-attrs
+    enum-name: ovs-dec-ttl-attr
+    name-prefix: ovs-dec-ttl-attr-
     attributes:
       -
         name: action
@@ -795,16 +821,19 @@  attribute-sets:
         nested-attributes: action-attrs
   -
     name: vxlan-ext-attrs
+    enum-name: ovs-vxlan-ext-
+    name-prefix: ovs-vxlan-ext-
     attributes:
       -
         name: gbp
         type: u32
 
 operations:
+  name-prefix: ovs-flow-cmd-
   fixed-header: ovs-header
   list:
     -
-      name: flow-get
+      name: get
       doc: Get / dump OVS flow configuration and state
       value: 3
       attribute-set: flow-attrs
@@ -824,6 +853,19 @@  operations:
             - stats
             - actions
       dump: *flow-get-op
+    -
+      name: new
+      doc: Create OVS flow configuration in a data path
+      value: 1
+      attribute-set: flow-attrs
+      do:
+        request:
+          attributes:
+            - dp-ifindex
+            - key
+            - ufid
+            - mask
+            - actions
 
 mcast-groups:
   list:
diff --git a/Documentation/netlink/specs/ovs_vport.yaml b/Documentation/netlink/specs/ovs_vport.yaml
index 8e55622ddf11..17336455bec1 100644
--- a/Documentation/netlink/specs/ovs_vport.yaml
+++ b/Documentation/netlink/specs/ovs_vport.yaml
@@ -3,6 +3,7 @@ 
 name: ovs_vport
 version: 2
 protocol: genetlink-legacy
+uapi-header: linux/openvswitch.h
 
 doc:
   OVS vport configuration over generic netlink.
@@ -18,10 +19,13 @@  definitions:
   -
     name: vport-type
     type: enum
+    enum-name: ovs-vport-type
+    name-prefix: ovs-vport-type-
     entries: [ unspec, netdev, internal, gre, vxlan, geneve ]
   -
     name: vport-stats
     type: struct
+    enum-name: ovs-vport-stats
     members:
       -
         name: rx-packets
@@ -51,6 +55,8 @@  definitions:
 attribute-sets:
   -
     name: vport-options
+    enum-name: ovs-vport-options
+    name-prefix: ovs-tunnel-attr-
     attributes:
       -
         name: dst-port
@@ -60,6 +66,8 @@  attribute-sets:
         type: u32
   -
     name: upcall-stats
+    enum-name: ovs-vport-upcall-attr
+    name-prefix: ovs-vport-upcall-attr-
     attributes:
       -
         name: success
@@ -70,6 +78,8 @@  attribute-sets:
         type: u64
   -
     name: vport
+    name-prefix: ovs-vport-attr-
+    enum-name: ovs-vport-attr
     attributes:
       -
         name: port-no
@@ -108,9 +118,10 @@  attribute-sets:
         nested-attributes: upcall-stats
 
 operations:
+  name-prefix: ovs-vport-cmd-
   list:
     -
-      name: vport-get
+      name: get
       doc: Get / dump OVS vport configuration and state
       value: 3
       attribute-set: vport