[PATCH net-next v3 00/12] net: dsa: microchip: PTP support for KSZ956x

From: Christian Eggers
Date: Wed Nov 18 2020 - 15:32:09 EST


This series adds support for PTP to the KSZ956x and KSZ9477 devices.

There is only little documentation for PTP available on the data sheet
[1] (more or less only the register reference). Questions to the
Microchip support were seldom answered comprehensively or in reasonable
time. So this is more or less the result of reverse engineering.

[1]
http://ww1.microchip.com/downloads/en/DeviceDoc/KSZ9563R-Data-Sheet-DS00002419D.pdf

Changes from v2 --> v3
------------------------
Applied all changes requested by Vladimir Oltean. v3 depends on my other
netdev patches from 2020-11-18:
- net: ptp: introduce common defines for PTP message types
- net: dsa: avoid potential use-after-free error

[1/11]-->[1/12] - dts: remove " OR BSD-2-Clause" from SPDX-License-Identifier
- dts: add "additionalProperties"
- dts: remove quotes
[2/11]-->[2/12] - Reviewed-by: Vladimir Oltean <olteanv@xxxxxxxxx>
[3/11] - [Patch removed] (split ksz_common.h)
[4/11]-->[3/12] - Reviewed-by: Vladimir Oltean <olteanv@xxxxxxxxx>
- fixed summary
[5/11]-->[4/12] - Use "interrupts-extended" syntax
[6/11]-->[5+6/12] - Split up patch
- style fixes
- use GENMASK()
- IRQF_ONESHOT|IRQF_SHARED
[7/11]-->[7/12] - Remove "default n" from Kconfig
- use mutex in adjfine()
- style fixes
[8/11]-->[8/12] - Be more verbose in commit message
- Rename helper
- provide correction instead of t2
- simplify location of UDP header
[9/11]-->[9+10/12] - Split up patch
- Update commmit messages
- don't use OR operator on irqreturn_t
- spin_lock_irqsave() --> spin_lock_bh()
- style fixes
- remove rx_filter cases for DELAY_REQ
- use new PTP_MSGTYPE_* defines
- inline ksz9477_ptp_should_tstamp()
- ksz9477_tstamp_to_clock() --> ksz9477_tstamp_reconstruct()
- use shared data in include/linux/net/dsa/ksz_common.h
- wait for tx time stamp (within sleepable context)
- use boolean for tx time stamp enable
- move t2 from correction to tail tag (again)
- ...

Changes from RFC --> v2
------------------------
I think that all open questions regarding the RFC version could be solved.
dts: referenced to dsa.yaml
dts: changed node name to "switch" in example
dts: changed "ports" subnode to "ethernet-ports"
ksz_common: support "ethernet-ports" subnode
tag_ksz: fix usage of correction field (32 bit ns + 16 bit sub-ns)
tag_ksz: use cached PTP header from device's .port_txtstamp function
tag_ksz: refactored ksz9477_tstamp_to_clock()
tag_ksz: pdelay_req: only subtract 2 bit seconds from the correction field
tag_ksz: pdelay_resp: don't move (negative) correction to the egress tail tag
ptp_classify: add ptp_onestep_p2p_move_t2_to_correction helper
ksz9477_ptp: removed E2E support (as suggested by Vladimir)
ksz9477_ptp: removed master/slave sysfs attributes (nacked by Richard)
ksz9477_ptp: refactored ksz9477_ptp_port_txtstamp
ksz9477_ptp: removed "pulse" attribute
kconfig: depend on PTP_1588_CLOCK (instead of "imply")