diff mbox series

[PATCHv2,net-next,2/2] doc/netlink/specs: Add vlan attr in rt_link spec

Message ID 20240326024325.2008639-3-liuhangbin@gmail.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series doc/netlink/specs: Add vlan support | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
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/build_tools success No tools touched, skip
netdev/cc_maintainers success CCed 5 of 5 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, 107 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-03-27--00-00 (tests: 948)

Commit Message

Hangbin Liu March 26, 2024, 2:43 a.m. UTC
With command:
 # ./tools/net/ynl/cli.py \
 --spec Documentation/netlink/specs/rt_link.yaml \
 --do getlink --json '{"ifname": "eno1.2"}' --output-json | \
 jq -C '.linkinfo'

Before:
Exception: No message format for 'vlan' in sub-message spec 'linkinfo-data-msg'

After:
 {
   "kind": "vlan",
   "data": {
     "protocol": "8021Q",
     "id": 2,
     "flag": {
       "flags": [
         "reorder-hdr"
       ],
       "mask": "0xffffffff"
     }
   }
 }

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>

v2:
 - Add eth-protocols definitions, but only include vlan protocols (Donald Hunter)
 - Set protocol to big-endian (Donald Hunter)
 - Add display-hint for vlan flag mask (Donald Hunter)
---
 Documentation/netlink/specs/rt_link.yaml | 83 +++++++++++++++++++++++-
 1 file changed, 82 insertions(+), 1 deletion(-)

Comments

Donald Hunter March 26, 2024, 9:34 a.m. UTC | #1
Hangbin Liu <liuhangbin@gmail.com> writes:
>
> diff --git a/Documentation/netlink/specs/rt_link.yaml b/Documentation/netlink/specs/rt_link.yaml
> index 8e4d19adee8c..41b49f15236f 100644
> --- a/Documentation/netlink/specs/rt_link.yaml
> +++ b/Documentation/netlink/specs/rt_link.yaml
> @@ -50,7 +50,16 @@ definitions:
>          name: dormant
>        -
>          name: echo
> -
> +  -
> +    name: eth-protocols

I think this should be called vlan-protocols since the enum only
contains valid vlan protocol values.

> +    type: enum
> +    entries:
> +      -
> +        name: 8021Q

The convention with YNL specs is to use lower case for names and let
e.g. ynl-gen-c convert to upper case for the C domain. So these should
be '8021q' and '8021ad'.

> +        value: 33024
> +      -
> +        name: 8021AD
> +        value: 34984
>    -
>      name: rtgenmsg
>      type: struct
> @@ -729,6 +738,43 @@ definitions:
>        -
>          name: filter-mask
>          type: u32
> +  -
> +    name: ifla-vlan-flags
> +    type: struct
> +    members:
> +      -
> +        name: flags
> +        type: u32
> +        enum: vlan-flags
> +        enum-as-flags: true
> +      -
> +        name: mask
> +        type: u32
> +        display-hint: hex
> +  -
> +    name: vlan-flags
> +    type: flags
> +    entries:
> +      -
> +        name: reorder-hdr
> +      -
> +        name: gvrp
> +      -
> +        name: loose-binding
> +      -
> +        name: mvrp
> +      -
> +        name: bridge-binding

Nit: when you specify entries by name only, you can use the abbreviated
form:

   - reorder-hdr
   - gvrp
   - loose-binding
   - mvrp
   - bridge-binding

> +  -
> +    name: ifla-vlan-qos-mapping
> +    type: struct
> +    members:
> +      -
> +        name: from
> +        type: u32
> +      -
> +        name: to
> +        type: u32
>  
>  
>  attribute-sets:
> @@ -1507,6 +1553,38 @@ attribute-sets:
>        -
>          name: num-disabled-queues
>          type: u32
> +  -
> +    name: linkinfo-vlan-attrs
> +    name-prefix: ifla-vlan-
> +    attributes:
> +      -
> +        name: id
> +        type: u16
> +      -
> +        name: flag
> +        type: binary
> +        struct: ifla-vlan-flags
> +      -
> +        name: egress-qos
> +        type: nest
> +        nested-attributes: ifla-vlan-qos

I _think_ this needs 'multi-attr: true'

https://elixir.bootlin.com/linux/latest/source/net/8021q/vlan_netlink.c#L120

> +      -
> +        name: ingress-qos
> +        type: nest
> +        nested-attributes: ifla-vlan-qos

Same for ingress-qos.

> +      -
> +        name: protocol
> +        type: u16
> +        enum: eth-protocols
> +        byte-order: big-endian
> +  -
> +    name: ifla-vlan-qos
> +    name-prefix: ifla-vlan-qos
> +    attributes:
> +      -
> +        name: mapping
> +        type: binary
> +        struct: ifla-vlan-qos-mapping
>    -
>      name: linkinfo-vrf-attrs
>      name-prefix: ifla-vrf-
> @@ -1666,6 +1744,9 @@ sub-messages:
>        -
>          value: tun
>          attribute-set: linkinfo-tun-attrs
> +      -
> +        value: vlan
> +        attribute-set: linkinfo-vlan-attrs
>        -
>          value: vrf
>          attribute-set: linkinfo-vrf-attrs
Jakub Kicinski March 27, 2024, 3:34 a.m. UTC | #2
On Tue, 26 Mar 2024 10:43:25 +0800 Hangbin Liu wrote:
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
> 

nit: please add a "---" line here so that the changelog is not part 
of the commit after we apply it with git am.

> v2:
>  - Add eth-protocols definitions, but only include vlan protocols (Donald Hunter)
>  - Set protocol to big-endian (Donald Hunter)
>  - Add display-hint for vlan flag mask (Donald Hunter)
> ---
diff mbox series

Patch

diff --git a/Documentation/netlink/specs/rt_link.yaml b/Documentation/netlink/specs/rt_link.yaml
index 8e4d19adee8c..41b49f15236f 100644
--- a/Documentation/netlink/specs/rt_link.yaml
+++ b/Documentation/netlink/specs/rt_link.yaml
@@ -50,7 +50,16 @@  definitions:
         name: dormant
       -
         name: echo
-
+  -
+    name: eth-protocols
+    type: enum
+    entries:
+      -
+        name: 8021Q
+        value: 33024
+      -
+        name: 8021AD
+        value: 34984
   -
     name: rtgenmsg
     type: struct
@@ -729,6 +738,43 @@  definitions:
       -
         name: filter-mask
         type: u32
+  -
+    name: ifla-vlan-flags
+    type: struct
+    members:
+      -
+        name: flags
+        type: u32
+        enum: vlan-flags
+        enum-as-flags: true
+      -
+        name: mask
+        type: u32
+        display-hint: hex
+  -
+    name: vlan-flags
+    type: flags
+    entries:
+      -
+        name: reorder-hdr
+      -
+        name: gvrp
+      -
+        name: loose-binding
+      -
+        name: mvrp
+      -
+        name: bridge-binding
+  -
+    name: ifla-vlan-qos-mapping
+    type: struct
+    members:
+      -
+        name: from
+        type: u32
+      -
+        name: to
+        type: u32
 
 
 attribute-sets:
@@ -1507,6 +1553,38 @@  attribute-sets:
       -
         name: num-disabled-queues
         type: u32
+  -
+    name: linkinfo-vlan-attrs
+    name-prefix: ifla-vlan-
+    attributes:
+      -
+        name: id
+        type: u16
+      -
+        name: flag
+        type: binary
+        struct: ifla-vlan-flags
+      -
+        name: egress-qos
+        type: nest
+        nested-attributes: ifla-vlan-qos
+      -
+        name: ingress-qos
+        type: nest
+        nested-attributes: ifla-vlan-qos
+      -
+        name: protocol
+        type: u16
+        enum: eth-protocols
+        byte-order: big-endian
+  -
+    name: ifla-vlan-qos
+    name-prefix: ifla-vlan-qos
+    attributes:
+      -
+        name: mapping
+        type: binary
+        struct: ifla-vlan-qos-mapping
   -
     name: linkinfo-vrf-attrs
     name-prefix: ifla-vrf-
@@ -1666,6 +1744,9 @@  sub-messages:
       -
         value: tun
         attribute-set: linkinfo-tun-attrs
+      -
+        value: vlan
+        attribute-set: linkinfo-vlan-attrs
       -
         value: vrf
         attribute-set: linkinfo-vrf-attrs