[PATCH net-next v15 14/14] netlink: specs: tsinfo: Enhance netlink attributes and add a set command

Kory Maincent
2024-06-12T15:05:13Z

Add new attributed to tsinfo allowing to get the tsinfo and the hwtstamp
from a phc provider (composed by a phc index and a phc qualifier) on a
netdevice's link.
Add simultaneously a set command to be able to 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 tsinfo-get
--json '{"header":{"dev-name":"eth0"}, "ghwtstamp":1}'
{'header': {'dev-index': 3, 'dev-name': 'eth0'},
'hwtst-flags': 1,
'rx-filters': {'bits': {'bit': [{'index': 0, 'name': 'none'}]},
'nomask': True,
'size': 16},
'tx-types': {'bits': {'bit': [{'index': 0, 'name': 'off'}]},
'nomask': True,
'size': 4}}

./ynl/cli.py --spec netlink/specs/ethtool.yaml --no-schema --do tsinfo-set
--json '{"header":{"dev-name":"eth0"},
"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.
---
Documentation/netlink/specs/ethtool.yaml | 43 +++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/Documentation/netlink/specs/ethtool.yaml b/Documentation/netlink/specs/ethtool.yaml
index 00dc61358be8..80484908c5ee 100644
--- a/Documentation/netlink/specs/ethtool.yaml
+++ b/Documentation/netlink/specs/ethtool.yaml
@@ -576,6 +576,15 @@ attribute-sets:
-
name: tx-err
type: uint
+ -
+ name: tsinfo-hwtstamp-provider
+ attributes:
+ -
+ name: index
+ type: u32
+ -
+ name: qualifier
+ type: u32
-
name: tsinfo
attributes:
@@ -602,6 +611,16 @@ attribute-sets:
name: stats
type: nest
nested-attributes: ts-stat
+ -
+ name: ghwtstamp
+ type: u8
+ -
+ name: hwtstamp-provider
+ type: nest
+ nested-attributes: tsinfo-hwtstamp-provider
+ -
+ name: hwtstamp-flags
+ type: u32
-
name: cable-result
attributes:
@@ -1406,7 +1425,7 @@ operations:
notify: eee-get
-
name: tsinfo-get
- doc: Get tsinfo params.
+ doc: Get tsinfo params or hwtstamp config.

attribute-set: tsinfo

@@ -1414,6 +1433,8 @@ operations:
request:
attributes:
- header
+ - ghwtstamp
+ - hwtstamp-provider
reply:
attributes:
- header
@@ -1422,6 +1443,8 @@ operations:
- rx-filters
- phc-index
- stats
+ - hwtstamp-provider
+ - hwtstamp-flags
dump: *tsinfo-get-op
-
name: cable-test-act
@@ -1730,3 +1753,21 @@ operations:
name: mm-ntf
doc: Notification for change in MAC Merge configuration.
notify: mm-get
+ -
+ name: tsinfo-set
+ doc: Set hwtstamp.
+
+ attribute-set: tsinfo
+
+ do:
+ request:
+ attributes:
+ - header
+ - tx-types
+ - rx-filters
+ - hwtstamp-provider
+ - hwtstamp-flags
+ -
+ name: tsinfo-ntf
+ doc: Notification for change in tsinfo configuration.
+ notify: tsinfo-get

--
2.34.1