Need more patches to support DPLL and syncE on Bluefield 5.15 kernel

Bug #2065664 reported by Tony Duan
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux-bluefield (Ubuntu)

Bug Description

* intro
Synchronous Ethernet, or SyncE, is an ITU-T standard for computer networking that facilitates the transference of clock signals over the Ethernet physical layer. It is used to pass timing from node to node and is particularly important for mobile networks.

The DPLL subsystem in the Linux kernel provides a general interface for configuring devices that use any kind of Digital PLL. This subsystem is designed to manage the clock signal synchronization of a device with an external clock signal.

* Explain the bug(s)

Bug 2053155 already backported some patches from upstream, there are still some more patches need to be backported.

fb7418bb4be2 netlink: add variable-length / auto integers
a41451e75eb7 dpll: indent DPLL option type by a tab
2a99978e5907 dpll: sanitize possible null pointer dereference in dpll_pin_parent_pin_set()
3c046e92c9b6 dpll: Fix potential msg memleak when genlmsg_put_reply failed
dd366aad1384 dpll: fix dpll_pin_on_pin_register() for multiple parent pins
fba896fa9970 dpll: check that pin is registered in __dpll_pin_unregister()
6182f400aec3 dpll: fix register pin with unregistered parent pin
9f8ed94364c4 dpll: fix dpll_xa_ref_*_del() for multiple registrations
215250dfdc9e dpll: spec: use proper enum for pin capabilities attribute
5bb45ebc5a89 dpll: move all dpll<>netdev helpers to dpll code
2d9edf8f70a7 dpll: fix build failure due to rcu_dereference_check() on unknown type
f3dde9bca353 dpll: rely on rcu for netdev_dpll_pin()
026d1e21c67d tools: ynl: fix header guards
6fe1a583e415 tools: ynl: allow user to pass enum string instead of scalar value
32250d2551d7 dpll: fix possible deadlock during netlink dump operation
1f79359d7433 tools: ynl: include dpll and mptcp_pm in C codegen
c36d6945b5d0 dpll: extend lock_status_get() op by status error and expose to user
3a0a12237480 dpll: extend uapi by lock status error attribute
b4301f76c6b8 dpll: move xa_erase() call in to match dpll_pin_alloc() error path order
ed03a6c933da dpll: fix userspace availability of pins
b2f4256312fc dpll: fix pin dump crash for rebound module
0329c8e419f7 dpll: fix broken error path in dpll_pin_alloc(..)
b849fe83c180 dpll: expose fractional frequency offset value to user
1783b665ccc1 dpll: allocate pin ids in cycle

* Brief explanation of fixes

Basic function of DPLL is not full supported. Still need backported relevant patches.

* How to test
$ sudo ./tools/net/ynl/ --spec Documentation/netlink/specs/dpll.yaml \
--dump device-get
root@bfqa-dell013-roy-oob:~/mlnx-ofa_kernel-4.0# /root/tools-net/ynl/ --spec ~/netlink/specs/dpll.yaml --dump device-get
[{'clock-id': 5237736944144095348,
  'id': 0,
  'lock-status': 'unlocked',
  'mode': 'manual',
  'mode-supported': ['manual'],
  'module-name': 'mlx5_core',
  'type': 'eec'}]

$ sudo ./tools/net/ynl/ --spec Documentation/netlink/specs/dpll.yaml \
--do pin-get
root@bfqa-dell013-roy-oob:~# /root/tools-net/ynl/ --spec ~/netlink/specs/dpll.yaml --dump pin-get
[{'capabilities': 4,
  'clock-id': 5237736944144095348,
  'id': 0,
  'module-name': 'mlx5_core',
  'parent-device': [{'direction': 'input',
                     'parent-id': 0,
                     'state': 'disconnected'}],
  'phase-adjust-max': 0,
  'phase-adjust-min': 0,
  'type': 'synce-eth-port'},
 {'capabilities': 4,
  'clock-id': 5237736944144095348,
  'id': 1,
  'module-name': 'mlx5_core',
  'parent-device': [{'direction': 'input',
                     'parent-id': 0,
                     'state': 'disconnected'}],
  'phase-adjust-max': 0,
  'phase-adjust-min': 0,
  'type': 'synce-eth-port'}]

* detect whether your device supports DPLL/SyncE
root@bfqa-dell013-roy-oob:~/linux-bluefield-jammy# mlxreg -d 03:00.0 --reg_name MCAM --get -i "access_reg_group=2,feature_group=0"
Field Name | Data
access_reg_group | 0x00000002
feature_group | 0x00000000
mng_access_reg_cap_mask[0] | 0x00000004
mng_access_reg_cap_mask[1] | 0x00600000 --> must see 6

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.