mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2026-01-26 06:07:54 +00:00
Add a new userspace tool for managing and monitoring DPLL devices via the
Linux kernel DPLL subsystem. The tool uses libmnl for netlink communication
and provides a complete interface for device and pin configuration.
The tool supports:
- Device management: enumerate devices, query capabilities (lock status,
temperature, supported modes, clock quality levels), configure phase-offset
monitoring and averaging
- Pin management: enumerate pins with hierarchical relationships, configure
frequencies (including esync), phase adjustments, priorities, states, and
directions
- Complex topologies: handle parent-device and parent-pin relationships,
reference synchronization tracking, multi-attribute queries (frequency
ranges, capabilities)
- ID resolution: query device/pin IDs by various attributes (module-name,
clock-id, board-label, type)
- Monitoring: real-time display of device and pin state changes via netlink
multicast notifications
- Output formats: both human-readable and JSON output (with pretty-print
support)
The tool belongs in iproute2 as DPLL devices are tightly integrated with
network interfaces - modern NICs provide hardware clock synchronization
support. The DPLL subsystem uses the same netlink infrastructure as other
networking subsystems, and the tool follows established iproute2 patterns
for command structure, output formatting, and error handling.
Example usage:
# dpll device show
# dpll device id-get module-name ice
# dpll device set id 0 phase-offset-monitor enable
# dpll pin show
# dpll pin set id 0 frequency 10000000
# dpll pin set id 13 parent-device 0 state connected prio 10
# dpll pin set id 0 reference-sync 1 state connected
# dpll monitor
# dpll -j -p device show
Testing notes:
Tested on real hardware with ice and zl3073x drivers. All commands work
(device show/set/id-get, pin show/set/id-get, monitor). JSON output was
carefully compared with cli.py - the tools are interchangeable.
v2:
- Added testing notes
- Added MAINTAINERS entry
- Removed unused -n parameter from man page
v3:
- Use shared mnlg and str_to_bool helpers from lib
- Use str_num_map for bidirectional string/enum mapping
- Remove unnecessary else after return
- Remove misleading "legacy" comments
- Simplify DPLL_PR_MULTI_ENUM_STR macro
- Convert json_output to global json variable
- Use appropriate mnl helpers with proper type casting to respect signed integer data types
- Use DPLL_PR_INT_FMT for phase-adjust-gran to respect signed integer type
- Remove dpll_link from Makefile (mistake in v2)
v4:
- Replace DPLL_PR_MULTI_ENUM_STR macro with dpll_pr_multi_enum_str() function
- Replace pr_out("\n") with print_nl() for one-line mode support
- Remove all is_json_context() code splitting, use PRINT_FP/PRINT_JSON/PRINT_ANY appropriately
- Add dpll_pr_freq_range() helper function to reduce code duplication
v5
- Fix checkpatch warnings
- Use structure initialization instead of memset
- Use sigemptyset() for proper signal mask initialization
- Remove redundant if (json) checks around JSON functions
- Use signalfd for signal handling in monitor
- Set netlink socket to non-blocking in monitor
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Co-developed-by: Ivan Vecera <ivecera@redhat.com>
Signed-off-by: Petr Oros <poros@redhat.com>
Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
71 lines
1.7 KiB
Plaintext
71 lines
1.7 KiB
Plaintext
Iproute2 Maintainers
|
|
====================
|
|
|
|
The file provides a set of names that are are able to help
|
|
review patches and answer questions. This is in addition to
|
|
the netdev@vger.kernel.org mailing list used for all iproute2
|
|
and kernel networking.
|
|
|
|
Descriptions of section entries:
|
|
|
|
M: Maintainer's Full Name <address@domain>
|
|
T: Git tree location.
|
|
F: Files and directories with wildcard patterns.
|
|
A trailing slash includes all files and subdirectory files.
|
|
A wildcard includes all files but not subdirectories.
|
|
One pattern per line. Multiple F: lines acceptable.
|
|
|
|
Main Branch
|
|
M: Stephen Hemminger <stephen@networkplumber.org>
|
|
T: git://git.kernel.org/pub/scm/network/iproute2/iproute2.git
|
|
L: netdev@vger.kernel.org
|
|
|
|
Next Tree
|
|
M: David Ahern <dsahern@kernel.org>
|
|
T: git://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git
|
|
L: netdev@vger.kernel.org
|
|
|
|
Ethernet Bridging - bridge
|
|
M: Ido Schimmel <idosch@nvidia.com>
|
|
M: Nikolay Aleksandrov <razor@blackwall.org>
|
|
L: bridge@lists.linux-foundation.org (moderated for non-subscribers)
|
|
F: bridge/*
|
|
F: ip/iplink_bridge*
|
|
F: lib/bridge*
|
|
F: include/bridge*
|
|
|
|
Data Center Bridging - dcb
|
|
M: Petr Machata <me@pmachata.org>
|
|
F: dcb/*
|
|
|
|
devlink
|
|
M: Jiri Pirko <jiri@resnulli.us>
|
|
F: devlink/*
|
|
|
|
dpll
|
|
M: Petr Oros <poros@redhat.com>
|
|
M: Ivan Vecera <ivecera@redhat.com>
|
|
F: dpll/*
|
|
|
|
netkit
|
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
|
M: Nikolay Aleksandrov <razor@blackwall.org>
|
|
L: bpf@vger.kernel.org
|
|
F: ip/iplink_netkit.c
|
|
|
|
Remote DMA - rdma
|
|
M: Leon Romanovsky <leon@kernel.org>
|
|
F: rdma/*
|
|
|
|
Traffic Control - tc
|
|
M: Jamal Hadi Salim <jhs@mojatatu.com>
|
|
F: tc/*
|
|
|
|
Transparent Inter-Process Communication - tipc
|
|
M: Jon Maloy <jmaloy@redhat.com>
|
|
F: tipc/*
|
|
|
|
virtual Datapath Acceleration - vdpa
|
|
M: Parav Pandit <parav@nvidia.com>
|
|
F: vdpa/*
|