diff mbox series

[net-next,v17,14/14] netlink: specs: Enhance tsinfo netlink attributes and add a tsconfig set command

Message ID 20240709-feature_ptp_netnext-v17-14-b5317f50df2a@bootlin.com (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series net: Make timestamping selectable | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net-next, async
netdev/ynl success Generated files up to date; no warnings/errors; GEN HAS DIFF 2 files changed, 624 insertions(+);
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 7 of 7 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, 106 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

Commit Message

Kory Maincent July 9, 2024, 1:53 p.m. UTC
Add new attributed to tsinfo allowing to get the tsinfo from a phc provider
(composed by a phc index and a phc qualifier) on a netdevice's link.
Add simultaneously a tsconfig command to be able to get and set hwtstamp
configuration for a specified phc provider.

Here is few examples:
./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema
             --dump tsinfo-get
             --json '{"header":{"dev-name":"eth0"}}'
[{'header': {'dev-index': 3, 'dev-name': 'eth0'},
  'hwtst-provider': {'index': 0, 'qualifier': 0},
  'phc-index': 0,
  'rx-filters': {'bits': {'bit': [{'index': 0, 'name': 'none'},
                                  {'index': 2, 'name': 'some'}]},
                 'nomask': True,
                 'size': 16},
  'timestamping': {'bits': {'bit': [{'index': 0, 'name': 'hardware-transmit'},
                                    {'index': 2, 'name': 'hardware-receive'},
                                    {'index': 6,
                                     'name': 'hardware-raw-clock'}]},
                   'nomask': True,
                   'size': 17},
  'tx-types': {'bits': {'bit': [{'index': 0, 'name': 'off'},
                                {'index': 1, 'name': 'on'}]},
               'nomask': True,
               'size': 4}},
 {'header': {'dev-index': 3, 'dev-name': 'eth0'},
  'hwtst-provider': {'index': 2, 'qualifier': 0},
  'phc-index': 2,
  'rx-filters': {'bits': {'bit': [{'index': 0, 'name': 'none'},
                                  {'index': 1, 'name': 'all'}]},
                 'nomask': True,
                 'size': 16},
  'timestamping': {'bits': {'bit': [{'index': 0, 'name': 'hardware-transmit'},
                                    {'index': 1, 'name': 'software-transmit'},
                                    {'index': 2, 'name': 'hardware-receive'},
                                    {'index': 3, 'name': 'software-receive'},
                                    {'index': 4,
                                     'name': 'software-system-clock'},
                                    {'index': 6,
                                     'name': 'hardware-raw-clock'}]},
                   'nomask': True,
                   'size': 17},
  'tx-types': {'bits': {'bit': [{'index': 0, 'name': 'off'},
                                {'index': 1, 'name': 'on'},
                                {'index': 2, 'name': 'onestep-sync'}]},
               'nomask': True,
               'size': 4}}]

./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsinfo-get
             --json '{"header":{"dev-name":"eth0"},
                      "hwtst-provider":{"index":0, "qualifier":0 }
}'
{'header': {'dev-index': 3, 'dev-name': 'eth0'},
 'hwtst-provider': {'index': 0, 'qualifier': 0},
 'phc-index': 0,
 'rx-filters': {'bits': {'bit': [{'index': 0, 'name': 'none'},
                                 {'index': 2, 'name': 'some'}]},
                'nomask': True,
                'size': 16},
 'timestamping': {'bits': {'bit': [{'index': 0, 'name': 'hardware-transmit'},
                                   {'index': 2, 'name': 'hardware-receive'},
                                   {'index': 6, 'name': 'hardware-raw-clock'}]},
                  'nomask': True,
                  'size': 17},
 'tx-types': {'bits': {'bit': [{'index': 0, 'name': 'off'},
                               {'index': 1, 'name': 'on'}]},
              'nomask': True,
              'size': 4}}

./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsinfo-set
             --json '{"header":{"dev-name":"eth0"},
                      "hwtst-provider":{"index":2, "qualifier":0}}'
None
./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsconfig-get
	     --json '{"header":{"dev-name":"eth0"}}'
{'header': {'dev-index': 3, 'dev-name': 'eth0'},
 'hwtstamp-flags': 1,
 'hwtstamp-provider': {'index': 1, 'qualifier': 0},
 'rx-filters': {'bits': {'bit': [{'index': 12, 'name': 'ptpv2-event'}]},
                'nomask': True,
                'size': 16},
 'tx-types': {'bits': {'bit': [{'index': 1, 'name': 'on'}]},
              'nomask': True,
              'size': 4}}

 ./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsconfig-set
	      --json '{"header":{"dev-name":"eth0"},
		       "hwtstamp-provider":{"index":1, "qualifier":0 },
		       "rx-filters":{"bits": {"bit": {"name":"ptpv2-l4-event"}},
				     "nomask": 1},
		       "tx-types":{"bits": {"bit": {"name":"on"}},
				   "nomask": 1}}'
None

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
---

Changes in v8:
- New patch

Changes in v10:
- Add ghwtstamp attributes
- Add tsinfo ntf command

Changes in v11:
- Add examples in the commit message.

Changes in v13:
- Replace shorter name by real name.
- Fix an issue reported by "make -C tools/net/ynl" on the namings.

Changes in v16:
- Move to tsconfig command to get and set hwtstamp configuration.
---
 Documentation/netlink/specs/ethtool.yaml | 73 ++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)

Comments

Jacob Keller July 17, 2024, 5:44 p.m. UTC | #1
On 7/9/2024 6:53 AM, Kory Maincent wrote:
> Add new attributed to tsinfo allowing to get the tsinfo from a phc provider
> (composed by a phc index and a phc qualifier) on a netdevice's link.
> Add simultaneously a tsconfig command to be able to get and set hwtstamp
> configuration for a specified phc provider.
> 
> Here is few examples:
> ./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema
>              --dump tsinfo-get
>              --json '{"header":{"dev-name":"eth0"}}'
> [{'header': {'dev-index': 3, 'dev-name': 'eth0'},
>   'hwtst-provider': {'index': 0, 'qualifier': 0},
>   'phc-index': 0,
>   'rx-filters': {'bits': {'bit': [{'index': 0, 'name': 'none'},
>                                   {'index': 2, 'name': 'some'}]},
>                  'nomask': True,
>                  'size': 16},
>   'timestamping': {'bits': {'bit': [{'index': 0, 'name': 'hardware-transmit'},
>                                     {'index': 2, 'name': 'hardware-receive'},
>                                     {'index': 6,
>                                      'name': 'hardware-raw-clock'}]},
>                    'nomask': True,
>                    'size': 17},
>   'tx-types': {'bits': {'bit': [{'index': 0, 'name': 'off'},
>                                 {'index': 1, 'name': 'on'}]},
>                'nomask': True,
>                'size': 4}},
>  {'header': {'dev-index': 3, 'dev-name': 'eth0'},
>   'hwtst-provider': {'index': 2, 'qualifier': 0},
>   'phc-index': 2,
>   'rx-filters': {'bits': {'bit': [{'index': 0, 'name': 'none'},
>                                   {'index': 1, 'name': 'all'}]},
>                  'nomask': True,
>                  'size': 16},
>   'timestamping': {'bits': {'bit': [{'index': 0, 'name': 'hardware-transmit'},
>                                     {'index': 1, 'name': 'software-transmit'},
>                                     {'index': 2, 'name': 'hardware-receive'},
>                                     {'index': 3, 'name': 'software-receive'},
>                                     {'index': 4,
>                                      'name': 'software-system-clock'},
>                                     {'index': 6,
>                                      'name': 'hardware-raw-clock'}]},
>                    'nomask': True,
>                    'size': 17},
>   'tx-types': {'bits': {'bit': [{'index': 0, 'name': 'off'},
>                                 {'index': 1, 'name': 'on'},
>                                 {'index': 2, 'name': 'onestep-sync'}]},
>                'nomask': True,
>                'size': 4}}]
> 
> ./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsinfo-get
>              --json '{"header":{"dev-name":"eth0"},
>                       "hwtst-provider":{"index":0, "qualifier":0 }
> }'
> {'header': {'dev-index': 3, 'dev-name': 'eth0'},
>  'hwtst-provider': {'index': 0, 'qualifier': 0},
>  'phc-index': 0,
>  'rx-filters': {'bits': {'bit': [{'index': 0, 'name': 'none'},
>                                  {'index': 2, 'name': 'some'}]},
>                 'nomask': True,
>                 'size': 16},
>  'timestamping': {'bits': {'bit': [{'index': 0, 'name': 'hardware-transmit'},
>                                    {'index': 2, 'name': 'hardware-receive'},
>                                    {'index': 6, 'name': 'hardware-raw-clock'}]},
>                   'nomask': True,
>                   'size': 17},
>  'tx-types': {'bits': {'bit': [{'index': 0, 'name': 'off'},
>                                {'index': 1, 'name': 'on'}]},
>               'nomask': True,
>               'size': 4}}
> 
> ./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsinfo-set
>              --json '{"header":{"dev-name":"eth0"},
>                       "hwtst-provider":{"index":2, "qualifier":0}}'
> None
> ./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsconfig-get
> 	     --json '{"header":{"dev-name":"eth0"}}'
> {'header': {'dev-index': 3, 'dev-name': 'eth0'},
>  'hwtstamp-flags': 1,
>  'hwtstamp-provider': {'index': 1, 'qualifier': 0},
>  'rx-filters': {'bits': {'bit': [{'index': 12, 'name': 'ptpv2-event'}]},
>                 'nomask': True,
>                 'size': 16},
>  'tx-types': {'bits': {'bit': [{'index': 1, 'name': 'on'}]},
>               'nomask': True,
>               'size': 4}}
> 
>  ./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsconfig-set
> 	      --json '{"header":{"dev-name":"eth0"},
> 		       "hwtstamp-provider":{"index":1, "qualifier":0 },
> 		       "rx-filters":{"bits": {"bit": {"name":"ptpv2-l4-event"}},
> 				     "nomask": 1},
> 		       "tx-types":{"bits": {"bit": {"name":"on"}},
> 				   "nomask": 1}}'
> None
> 
> Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
> ---

Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
diff mbox series

Patch

diff --git a/Documentation/netlink/specs/ethtool.yaml b/Documentation/netlink/specs/ethtool.yaml
index 495e35fcfb21..9bd1f8a7bd3f 100644
--- a/Documentation/netlink/specs/ethtool.yaml
+++ b/Documentation/netlink/specs/ethtool.yaml
@@ -624,6 +624,15 @@  attribute-sets:
       -
         name: tx-err
         type: uint
+  -
+    name: ts-hwtstamp-provider
+    attributes:
+      -
+        name: index
+        type: u32
+      -
+        name: qualifier
+        type: u32
   -
     name: tsinfo
     attributes:
@@ -650,6 +659,10 @@  attribute-sets:
         name: stats
         type: nest
         nested-attributes: ts-stat
+      -
+        name: hwtstamp-provider
+        type: nest
+        nested-attributes: ts-hwtstamp-provider
   -
     name: cable-result
     attributes:
@@ -1085,6 +1098,28 @@  attribute-sets:
       -
         name: total
         type: uint
+  -
+    name: tsconfig
+    attributes:
+      -
+        name: header
+        type: nest
+        nested-attributes: header
+      -
+        name: hwtstamp-provider
+        type: nest
+        nested-attributes: ts-hwtstamp-provider
+      -
+        name: tx-types
+        type: nest
+        nested-attributes: bitset
+      -
+        name: rx-filters
+        type: nest
+        nested-attributes: bitset
+      -
+        name: hwtstamp-flags
+        type: u32
 
 operations:
   enum-model: directional
@@ -1526,6 +1561,7 @@  operations:
         request:
           attributes:
             - header
+            - hwtstamp-provider
         reply:
           attributes:
             - header
@@ -1534,6 +1570,7 @@  operations:
             - rx-filters
             - phc-index
             - stats
+            - hwtstamp-provider
       dump: *tsinfo-get-op
     -
       name: cable-test-act
@@ -1877,3 +1914,39 @@  operations:
           - status-msg
           - done
           - total
+    -
+      name: tsconfig-get
+      doc: Get hwtstamp config.
+
+      attribute-set: tsconfig
+
+      do: &tsconfig-get-op
+        request:
+          attributes:
+            - header
+        reply:
+          attributes:
+            - header
+            - hwtstamp-provider
+            - tx-types
+            - rx-filters
+            - hwtstamp-flags
+      dump: *tsconfig-get-op
+    -
+      name: tsconfig-set
+      doc: Set hwtstamp config.
+
+      attribute-set: tsconfig
+
+      do:
+        request:
+          attributes:
+            - header
+            - hwtstamp-provider
+            - tx-types
+            - rx-filters
+            - hwtstamp-flags
+    -
+      name: tsconfig-ntf
+      doc: Notification for change in tsconfig configuration.
+      notify: tsconfig-get